小编djh*_*262的帖子

"大师"联想表?

考虑一个匹配客户端和服务的模型.客户可能在不同时间成为服务的提供者和消费者.客户可以是个人或团体(公司),后者具有多个联系人.联系人可能有多个地址,电话,电子邮件.这些关系中的一些将是一对一的(例如,对提供商的服务),但大多数将是一对多或多对多(公司的多个联系人将具有相同的地址).

在该模型中,通常存在若干关联表,例如,client_contact,contract_addr,contact_phone,contact_email,service_provider,service_consumer等.

假设您为给定服务的使用者发出简单查询联系信息.除了包含数据的六个实体表之外,连接还将引用五个关联表.关于这种查询,当然没有什么特别有趣的 - 我们每天都这样做.

但是我想到了:为什么不能拥有一个包含所有关联的"主"关联表?除了两个PK之外,还需要这个主表具有"关联类型",并且所有PK都需要具有相同的类型(整数,GUID等).

一方面,查询会变得更复杂,因为每个连接都需要指定类型和PK.另一方面,所有联接都将访问同一个表,并且具有适当的indexng和缓存性能可以显着提高.

我假设可能有一种模式(或反模式)描述这种方法,但没有找到任何在线.有人试过吗?如果是这样,它会扩展吗?

您可以提供的任何参考资料将不胜感激.

database-design design-patterns anti-patterns associative-table

9
推荐指数
1
解决办法
506
查看次数