我们正在计划用一个新的数据库()来开发一个新的系统。
我们有以下实体和下列关系:
实体:俱乐部,连锁店,PaymentTypes等.
关系:俱乐部-连锁(M);(Clubs_Chains)-Commission (1-1);俱乐部-连锁-付费类型(M);
我们希望数据库能够规范化。我们考虑了以下选项,但不确定这是否是该场景的最佳解决方案:
Clubs_Chains表: ClubChainID PK不为空,ClubID FK不为空,ChainID FK不为空,ClubID int不为空。
Clubs_Chains_PayMethod表: ClubChainID PK不为空,PaymentTypeID PK不为空
谢谢!
发布于 2012-08-20 12:37:20
没有必要在您的clubs_chains表中有一个代理主键。
clubs_chains中的两个外键的组合对于主键来说是足够的。
可以使用外键约束来确保clubs_chains_paymethod表使用复合主键引用clubs_chains中的现有记录。这可能会有所帮助,因为它将允许clubs_chains_paymethod与您的俱乐部和链表之间更直接的连接,而不会牺牲任何引用完整性。
另一方面,有些人只是喜欢使用代理项主键,甚至在交叉表上也是如此。如果这是您的数据建模风格,那么它也可以。
发布于 2012-08-21 14:39:10
我从你的指示推断出的ER图。我不确定这是否是对你描述的正确解释。在此文章中讨论了ER图和ER图到关系的转换。

用于标记为?的关系和实体。我不知道合适的名字。
https://dba.stackexchange.com/questions/22765
复制相似问题