我将在三个表之间建立多对多关系,但这种关系一次只在一个表(例如TableA)和其他两个表(例如TableB和TableC)中的一个之间。也就是说,我可以有一个连接表
id | TableA_id | TableB_id | TableC_id
带有约束,以确保TableB_id为null或tablelec_id为null,或两个连接表
id | TableA_id | TableB_id
id | TableA_id | TableC_id
什么是好的标准来决定我应该使用这两种可能性中的哪一种?
好的数据库设计方法是永远不要存储NULL
数据(在现实世界中,您当然可以过度规范化)。因此选项2更好。
由于表B和表C之间没有明确的直接关系,所以我将这些关系保存在单独的表中,这更像是星型模式/雪花模式。从数据建模的角度来看,它比一个可以在两个不同方向连接的表要容易理解得多。