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

Sql server 我应该为0或1个条目创建另一个表吗?,sql-server,database-design,normalization,Sql Server,Database Design,Normalization,我有一个付款类型表,您可以在其中输入不同的付款类型,如直接借记、信用卡、存档信用卡等。对于每种付款类型,您可以指定是否允许用户分期付款,以及允许的开始和结束日期以及分期付款次数。我是否应该有一个单独的分期付款表链接到付款类型,因为您可以不分期付款付款?或者我应该让付款类型表中的分期付款列为空,以防它不允许分期付款 编辑:上述开始和结束日期适用于分期付款,而不是付款类型本身。付款类型本身没有任何日期范围,因为事件本身有一个日期范围。由于安装信息(是否允许和日期)与付款类型相关,我将把它们放在同一个

我有一个付款类型表,您可以在其中输入不同的付款类型,如直接借记、信用卡、存档信用卡等。对于每种付款类型,您可以指定是否允许用户分期付款,以及允许的开始和结束日期以及分期付款次数。我是否应该有一个单独的分期付款表链接到付款类型,因为您可以不分期付款付款?或者我应该让付款类型表中的分期付款列为空,以防它不允许分期付款


编辑:上述开始和结束日期适用于分期付款,而不是付款类型本身。付款类型本身没有任何日期范围,因为事件本身有一个日期范围。

由于安装信息(是否允许和日期)与付款类型相关,我将把它们放在同一个表中。此外,我不会使用单独的标志来表示是否允许安装。如果开始和结束日期为空,则不允许分期付款。如果使用单独的字段,则可能会导致日期错误(即分期标志为0,但日期不为空)


如果一个付款可以有多个日期范围,那么单独的表是有意义的,但是由于日期与付款类型直接相关,所以请将它们保留在同一个表中

如果付款的日期范围不能超过1种类型,则将分期付款信息放入付款类型表中。如果存在多个日期范围类型(例如,每月一次,超过6个月)。如果它能把它放到自己的桌子上。如果您将其放入自己的表中,那么您的主表中只有两个FK,一个用于您的付款类型,一个用于您的付款计划。如果付款计划FK为空,则您将知道它是一次付款。这意味着您不应该在主付款表中重复显示付款是否有计划的标志。这将减少重复和错误。

日期与分期付款直接相关,而不是与付款类型直接相关。在这种情况下,你的答案会改变吗?当然,日期属于它们所属的表格。如果日期与分期付款相关,而不是付款类型,我肯定会更改我的答案,并创建一个单独的表链接在一起。谢谢ben。你的评论也有帮助,但斯帕基先回答了,所以我给了他答案。