何时将列分隔为新表

kai*_*lya 1 sql asp.net performance design-patterns

我有公司,客户,供应商等表,所有表都有地址信息相关列.

我试图找出是否应该创建一个新的表'地址'并将所有地址列分开.

在所有表上都有地址列很容易使用和查询,但我不确定从良好的设计角度来看是否是正确的方法,让几个表重复这些相同的列让我很好奇.

地址的内容对我来说并不重要,我不会在任何决策过程中检查或使用这些地址,它们纯粹是与信息相关的.目前我正在查看5个包含地址信息的表

Dav*_*kle 6

所有设计问题的答案是:

这取决于.

所以基本上,在地址案例中,它取决于每个客户是否会有超过1个地址.如果您将有多个,请将其放在新的地址表中,并为每个地址指定一个CustomerID.创建通用地址表并将其映射到公司/客户/供应商表是一种过度杀伤(大部分时间,取决于!).

在对象之间的多对多关系中映射地址通常也是过度的(而且很危险)(如果你这样做,地址似乎会神奇地改变用户).

一个重要的规则是:保持简单!

  • @korki:好的.您可能认为客户和供应商可能位于同一个地方,并且他们可能有多个地址(帐单邮寄地址,收货地址).然后,您将创建一个表以将客户/供应商记录映射到地址.这很可怕,因为它通常比您想要的更复杂,更新其中一个地址可能会产生意想不到的后果. (2认同)