【发布时间】:2013-11-20 18:50:45
【问题描述】:
我正在尝试设计一个新的数据库结构,并且想知道在以下示例中使用表之间的一对多与多对多关系的任何优点/缺点。
假设我们需要存储有关客户、产品及其地址的信息(每个客户和产品可能有许多不同的地址(例如“运输”和“帐单”)。
实现此目的的一种方法是:
这是一种相当直接的方法,其中每个关系都是一对多类型,但涉及为每种地址类型创建额外的表。
另一方面,我们可以创建如下内容:
这一次我们简单地存储一个额外的“类型”字段来指示它是什么类型的地址(Client-Billing (0)、Client-Shipping (1)、Product-Contact (2))和“source_id” (Clients.ID 或 Products.ID 取决于“type”字段的值)。
这种方式“地址”表没有指向任何其他表的“直接”链接,但结构似乎要简单得多。
我的问题是,这两种方法中的任何一种是否有任何显着优势,还是只是偏好问题?你会选哪一个?将来扩展数据库时我应该注意哪些挑战?是否存在显着的性能差异?
谢谢。
【问题讨论】:
-
这两个中,我喜欢第一个,因为它更加规范化。未来的挑战包括处理地址更改。
标签: sql database foreign-keys schema