最好是拥有一个主键,还是使用复合主键(通常,它们是一个主键和一个主键的组合)。我有以下例子:
复合主键示例:
AMeta
.- AMetaId -主键
. AMetaText
BMeta
.- BMetaId -主键
AMetaID -表AMeta外键
. BMetaText
一个
.- AId -主键
AMetaId -表AMeta的主键和外键
. AText
B
.- BId -主键
BMetaId -表BMeta的主密钥外键
. AId表A的主键和外键
. BText
单主键示例:
AMeta
.- AMetaId -主键
. AMetaText
BMeta
.- BMetaId -主键
AMetaId -表AMeta外键
. BMetaText
一个
.- AId -主键
AMetaId -表AMeta外键
. AText
B
.- BId -主键
BMetaId -表BMeta外键
( AId )表A的外键
. BText
哪个是更好的数据库设计?
发布于 2010-10-07 05:11:55
我一般倾向于使用单列主键,几乎完全是--要么有一个很好的自然键可用(很少),要么我在表中添加一个代理INT标识键。
我的主要理由是:
时会发生的情况。
发布于 2010-10-06 22:59:39
第一个方案没有任何意义,因为它暗示(并允许)表B中可以有多个行,具有相同的Bid值,但具有不同的AId值,并且没有与列出价相关联的意义。是去其他地方的FK吗?如果是的话,是为了什么?如果不是,是什么产生了它?什么意思?
另一方面,第二个方案在逻辑上是一致的,但暗示表B中的行可以与表AMeta中的两个不同行相关联,
这真的是您的业务域模型的准确表示吗?
https://stackoverflow.com/questions/3877325
复制相似问题