我正在尝试设计一个新的数据库结构,并且想知道在以下示例中使用表之间的一对多与多对多关系的任何优点/缺点。
假设我们需要存储有关客户、产品及其地址的信息(每个客户和产品可能有许多不同的地址(例如“运输”和“计费”))。
实现这一目标的一种方法是:
这是一种相当直接的方法,其中每个关系都是一对多类型,但涉及为每个地址类型创建附加表。
另一方面,我们可以创建这样的东西:
这次我们简单地存储一个额外的“类型”字段,指示它是什么类型的地址(Client-Billing (0)、Client-Shipping (1)、Product-Contact (2))和“source_id”(Clients. ID 或 Products.ID 取决于“类型”字段的值)。
这种方式“地址”表没有指向任何其他表的“直接”链接,但结构似乎要简单得多。
我的问题是,这些方法中的任何一种是否有任何显着优势,还是只是偏好问题?你会选哪一个?将来扩展数据库时我应该注意哪些挑战?是否存在显着的性能差异?
谢谢你。