我应该为0或1个条目创建另一个表吗?

时间:2010-02-22 19:26:20

标签: sql-server database-design normalization

我有一个payment_types表格,您可以在其中输入不同的付款方式,例如直接付款,信用卡,存档的信用卡等。对于每种付款类型,您可以指定是否允许用户按分期付款以及应该允许的开始和结束日期以及分期付款的数量。我是否应该有一个链接到payment_types的单独的分期付款表,因为您可以在没有分期付款的情况下付款?或者,如果不允许分期付款,我应该在payment_types表中将这些分期付款列留空吗?

编辑:上面提到的开始和结束日期适用于分期付款,而不适用于付款类型本身。付款类型本身不会有任何日期范围,因为事件本身将具有日期范围。

2 个答案:

答案 0 :(得分:1)

由于安装信息(无论是允许的还是日期)与付款类型相关联,因此我会将它们放在同一个表中。另外,我不会使用单独的标志来确定是否允许安装。如果开始日期和结束日期为NULL,则不允许分期付款。如果你使用一个单独的字段,你可能会得到错误的日期(即分期标志是0,但日期是非空的)

如果付款可以包含多个日期范围,则单独的表有意义,但由于日期与付款类型直接相关,请将它们保存在同一个表中。

答案 1 :(得分:0)

如果付款的日期范围不能超过1种,请将分期付款信息放入付款方式表中。如果有多个日期范围类型(​​例如,每月一次,超过6个月)。如果它可以把它放入它自己的表中。如果你把它放在自己的表中,那么你的主表只有2个FK,1个付款类型,1个付款时间表。如果付款时间表FK为空,那么您将知道这是1次付款。这意味着您不应复制您的旗帜,以显示付款是否在主付款表中有计划。这将减少重复和错误。