请考虑下表(英国):
您会将地址拆分到另一个表中吗? 基本业务假设是一位客户不能拥有多个地址。
最初我把它分开看起来像这样:
顾客表
地址表
邮编表:
城市表
除非我的假设错误,即邮政编码唯一标识街道名称和城市,这不是在 3NF 中吗?
就个人而言,我会将地址放在另一个表中,并将它们链接在一起。
业务假设/规则可能会发生变化,当您拆分这些内容时,您最有可能适应任何可能的业务规则,而无需进行重大重做。
例如 - 哎呀,客户的账单地址与送货地址不同,或者哎呀,我们需要知道去年的实际发货地点,即使客户今年更改了地址,等等。
基本的业务假设是客户不能拥有超过 一个地址。
如果这是一条实际规则而不是假设,我会将它们保留在一个表中。
但是,假设将“ass”放在“u”和“me”中。
因此,请谨慎行事,将地址分散到另一个表中。 但看起来你的标准化与你的例子太过分了。
是的,我会将地址分成一个单独的表。
但是,原因并不是标准化本身(在大多数情况下)。 主要原因是它是一个缓慢变化的维度,查找以前的地址可能会很有用。
是否继续将邮政编码之类的东西标准化是一个品味问题。 在比较“业余”的数据库中,我认为没有必要。 然而,对于真实客户的大型数据库,我倾向于将其分开。 它有助于确保邮政编码的准确性。 而且,它们会随着时间的推移而改变。 而且,例如,您可能会在邮政编码级别购买附加信息。
这一切都取决于您的要求,但正如您上面提到的,客户不能有多个地址,因此不需要另一种一对一的关系,因为您可以将其置于同一关系中。但由于未来的需求,我建议您将其分解为另一种一对多关系。