我目前正在开发一个具有以下要求的数据库:有不同类型的帐户。他们可以根据类型有不同的付款计划。整个事情就像是一个有两个层次的层次结构。例如,如果帐户类型为A和B,则付款计划可以是A1,A2,B1和B2,其中Ax仅对帐户类型A有效,依此类推。
到目前为止,我有以下设置: 表格 account_types , ID 和名称。表格 payment_plans 包含 account_type_id 和 ID ,两者都是PK的一部分。表格帐户, type_id 和 plan_id 。我猜很明显是什么引用了什么。
我的问题是: accounts.type_id 是FK, accounts.type_id + accounts.plan_id 是复合FK。我不知道这是否是最佳解决方案。 type_id 有点多余,因为它由 plan_id 隐式定义,但仅限于 payment_plans 表中的约束。那么这里最好的做法是什么?我可以完全摆脱 type_id ,但是接下来需要另外加入 payment_plans 表来确定帐户的类型。
感谢您提前输入。也欢迎涉及完全不同结构的建议。 ; - )
答案 0 :(得分:0)
我会有这些表格:
account_types
:
id
:PK name
payment_plans
id
:PK account_type_id
:FK到account_types
accounts
accounts2payment_plans
account_id
:FK到accounts
和PK的一部分payment_plan_id
:FK到payment_plans
和PK的一部分这背后的原因如下:
payment_plans
表需要引用account_type
表。通过此参考,定义了付款计划的类型。accounts2payment_plans
的原因。通过从帐户到付款计划的映射,隐式定义帐户的所有帐户类型。