我是数据库的初学者。我正在网站上工作,我必须在不同用户的数据库中保存教育资格。例如
有一位用户Alex.He毕业于新加坡的计算机科学专业 大学于2006年。他还是加拿大计算机科学硕士 大学在2009年。
不同的用户会有所不同。
我应该为所有教育资格考试新表,并将id提供给用户表。
Select * from users,education;
如何将此保存在数据库中并记住最佳实践?
先谢谢。 :)
答案 0 :(得分:0)
您必须创建2个表,例如用户和教育
用户表结构就像 id username等等
教育 id user_id course / degree
然后你可以获取就像
select * from users as u ,education as e where u.id = e.user_id
答案 1 :(得分:0)
您希望normalize您的数据,这意味着删除冗余和不一致。虽然您可以通过2个表格来完成粗略版本的布局,您可以让用户接受多种教育,但您要确保自己不会为自己创造更多的工作这条路。
2表布局的问题在于您可能拥有相同学校,学位或专业的记录,但可能会以不同方式输入。
所以如果你做了一个像`SELECT * FROM users INNER JOIN education的搜索 ON users.user_id = education.user_id WHERE education.major LIKE'%Computer Science%'如果某些专业的输入类似于" CompSci,那么你可能无法返回相关专业的所有结果。"
所以你可能实际上有多个表。这些多个表的一个示例可能是:
user_degrees
的表格结构可能如下所示:
学校看起来像这样:
学位类型可能是:
有several other types of degrees。
你明白了。基本上,前提是您输入每种类型记录的信息一次,然后您可以将该信息与各种表交叉关联,而无需再次输入。此外,它允许使用相同信息对任何记录进行全局更改。