1

我将在三个表之间建立多对多关系,但该关系一次只在一个表(比如 TableA)和另外两个表(比如 TableB 和 TableC)中的一个之间存在。也就是说,我可以有一个连接表

id | TableA_id | TableB_id | TableC_id

具有约束以确保 TableB_id 为空或 TableC_id 为空,或两个联结表

id | TableA_id | TableB_id
id | TableA_id | TableC_id

确定我应该使用这两种可能性中的哪一种的好标准是什么?

4

2 回答 2

1

好的数据库设计方法是永远不要存储NULL数据(在现实世界中,您当然可以过度规范化)。因此选项2更好。

于 2011-11-18T16:29:32.550 回答
1

由于表 B 和表 CI 之间没有明确的直接关系,因此会将关系保留在单独的表中,这更像是星型模式/雪花模式。从数据建模的角度来看,它比可以连接两个不同方向的表更容易理解。

于 2011-11-18T16:30:04.263 回答