在我最近制作的LDM中,我有一个实体,它具有以下结构:
Building_ID (Primary Key, Foreign Key),
Plant_ID (Foreign Key),
Build_Year (Primary Key),
Size
我需要使用此设计在SQL数据库中创建一个表。我遇到的问题是如何处理这里的主键?SQL表可以有多个主键吗?如果这个问题的答案是肯定的,那么哪一列应该作为唯一索引?我应该创建一个新列作为唯一索引标识符吗?
发布于 2012-04-07 01:05:06
任何关系数据库系统(SQL Server、Oracle、Firebird、IBM、DB2等)的任何SQL表我知道只能有一个主键--毕竟,它是的主键--只能有一个。
但是,一个主键可以由多个列组成(称为“复合主键”)。这有一些缺点,比如:来自其他表的所有外键约束也必须指定复合PK中的所有列,从而使得连接表有点痛苦(因为您需要为JOIN中的键中包含的所有列指定所有相等约束)。
除了主键之外,您还可以有多个替代键-也可以唯一标识行的其他列。这些都是很好的候选索引,如果它们可以帮助你加速对表的访问(但不要过度索引你的表!)少即是多)
https://stackoverflow.com/questions/10046470
复制相似问题