将逻辑数据模型转换为SQL表设计

时间:2012-04-06 16:45:48

标签: sql database database-design

在我最近制作的LDM中,我有一个具有以下结构的实体:

Building_ID (Primary Key, Foreign Key),
Plant_ID (Foreign Key),
Build_Year (Primary Key),
Size

我需要使用这种设计在SQL数据库中创建一个表。我遇到的问题是如何在这里处理主键? SQL表是否可以拥有多个主键?如果这个问题的答案是肯定的,那么哪一列应该作为唯一索引?我应该创建一个新列作为唯一索引标识符吗?

1 个答案:

答案 0 :(得分:1)

任何关系数据库系统的SQL表(SQL Server,Oracle,Firebird,IBM DB2,Sybase等)我知道只能拥有一个主键 - 毕竟,它是主要键 - 只能有一个。

但是,主键可以由多个列组成(称为“复合主键”)。有一些缺点,例如:来自其他表的所有外键约束也必须在复合PK中指定所有列,从而使得连接表有点痛苦(因为您需要指定所有等式约束) JOIN中密钥中包含的所有列。)

除了主键,您还可以拥有多个备用键 - 其他列也可以唯一标识该行。那些是很好的候选者,例如索引,如果那些可以帮助你加快对表的访问(但不要过度索引你的表!少即是多)