根据关系创建哪些表

Sha*_*ani 3 normalization database-design relational-theory

我们正在计划一个带有新数据库 (MS SQL Server) 的新系统。

我们有以下实体和以下关系:

实体: 俱乐部、链、支付类型等...

关系: 俱乐部-连锁(MM);(Clubs_Chains)-佣金(1-1);Clubs-Chains-PaymentTypes (MM);

  • 佣金是一个包含百分比值的数字字段,不是实体。

我们希望对数据库进行规范化。我们考虑了以下选项,但我们不确定它是否是该场景的最佳解决方案:

Clubs_Chains 表: ClubChainID PK int 不为 null,ClubID FK int 不为 null,ChainID FK int 不为 null,Commission int

Clubs_Chains_PayMethod 表: ClubChainID PK int 不为空,PaymentTypeID PK int 不为空

谢谢!

Joe*_*own 7

clubs_chains表上没有必要有代理主键。

clubs_chains 中两个外键的组合足以作为主键。

您可以使用外键约束,以确保您的clubs_chains_paymethod表引用现有记录中clubs_chains使用复合主键。这可能会有所帮助,因为它允许在clubs_chains_paymethod和您的clubschains表之间进行更直接的连接,而不会牺牲任何参照完整性。

另一方面,有些人只是喜欢使用代理主键,即使在交叉表上也是如此。如果这是您的数据建模风格,那也没关系。