Car*_*ton 14 database foreign-keys primary-key
我有一个表(session_comments)与以下字段结构:
student_id (foreign key to students table)
session_id (foreign key to sessions table)
session_subject_ID (foreign key to session_subjects table)
user_id (foreign key to users table)
comment_date_time
comment
Run Code Online (Sandbox Code Playgroud)
现在,student_id,session_id和session_subject_id的组合将唯一地标识关于该会话主题的该学生的评论.
鉴于它们是唯一的,即使它们是外键,我是否有优势使它们成为该表的组合主键?
再次感谢.
Tho*_*mas 14
无论是否将这三者作为主键,您仍然需要某种唯一性约束来保证学生不能与同一会话和session_subject_id关联两次.如果允许该方案,则需要将唯一性约束扩展为包含另一列.
无论你做出什么选择,你都应该对表格有一些独特的限制.
如果您正在讨论是否在三列上创建代理主键+唯一约束,我会说这取决于该表是否具有子表.如果可以,那么引用代理键将更容易和更小.如果它不会,那么IMO,代理键并没有真正给你太多,你也可以使用三列作为PK.
这取决于应用程序的其余部分.
如果您不打算在评论表中显示外键(这似乎很可能),这很好.
如果你需要引用另一个表中的注释,你最好用你的3个字段创建一个唯一的索引,加上一个AutoNumber主键,它将作为外键在其他表中提供(比3更简单,更便宜)字段).
归档时间: |
|
查看次数: |
14880 次 |
最近记录: |