外键关系的最佳实践

时间:2015-05-28 18:59:50

标签: mysql database foreign-keys foreign-key-relationship

从上述两个创建外键的最佳做法是 - 可能性1:

table1:user(id,name,password) table2:考试(id,name) 表3:user_exam(是,user_id,exam_id)

可能性2:

table1:考试(id,name) table2:user(id,name,password,exam_id)

2 个答案:

答案 0 :(得分:1)

根据您的建模,我猜您在考试和用户之间存在多对多的关系。换句话说,您可以在没有考试的情况下进行没有用户和用户的考试。在这种情况下,模型2根本不起作用。

在模型2中,每个用户只能获得一个id,或者每次添加tehm考试时都必须有多个用户记录,这会增加数据完整性问题的可能性,特别是因为密码存在。除非您能保证永远不需要进行多次考试,否则不要考虑使用模型2。

根据您所讨论的考试类型,user_exams表应该包含其他信息,例如日期。您可能需要的其他内容取决于您正在建模的数据的含义。

答案 1 :(得分:0)

你的问题更像是基于意见的问题,但据我所知,外键应该在联结表中。所以可能性1 是使用外键的理想方法。