没有主键但是外键的Mysql表

时间:2014-04-26 23:08:14

标签: mysql foreign-keys primary-key

我在这里读过,每张桌子都有主键是好事...让我说我有两张桌子“学生”和“student_details”我正在使用INNODB

“student”有几列,例如 - student_id(主键),student_name “student_details”有几栏,如 - student_id(外键),地址,电话,手机等。

“student_details”仍需要主键吗?

1 个答案:

答案 0 :(得分:3)

无论您是否知道,您正在做的是对表进行列分区。您可以将studentdetails.studentid同时作为主键和外键。没问题。因此,您可以在表格中使用主键。

进行列分区有几个原因,通常与常用列的性能相关或创建超过最大列数的行。我怀疑这些适用于你的情况。

事实上,鉴于数据的性质,studentdetails表实际上存储了“缓慢变化的维度”。用简单的语言,学生移动,所以他们的地址会发生变化。学生改变他们的电话号码。等等。你应该拥有的是每个学生详细记录的有效和结束日期。然后你可以添加一个自动递增的主键(这就是我要做的),或者你可以将studentdetails(studentid, effdate)声明为主键。