我的大学数据库有一个Course
实体。
架构如下:
Course(name, department, section, semester, teacher_id, college_id)
它是一个以College
为所有者实体的弱实体。 (大学的主键是college_id
,它存储为foreign key
)
我的问题是......如何构建Course
的主键?
我的意思是,技术上我可以 / em>复合主键作为其他表中的外键,这将是一个巨大的麻烦。或者是吗?有没有其他方法可以实现同样的目标?
感谢任何帮助。提前谢谢。
答案 0 :(得分:2)
弱实体必然具有复合主键,并且在关系中引用这些弱实体将涉及复合外键。如果您认为这很令人头疼,您可以引入代理密钥,将其转变为常规实体。
代理键只是一个新的识别属性。例如,您可以添加course_id
属性,该属性可以作为Course
表中的自动增量列实现。
在引入代理键时,请注意为任何其他候选键声明唯一约束(例如在引入代理键之前您将使用的复合键)。