考虑一个匹配客户端和服务的模型.客户可能在不同时间成为服务的提供者和消费者.客户可以是个人或团体(公司),后者具有多个联系人.联系人可能有多个地址,电话,电子邮件.这些关系中的一些将是一对一的(例如,对提供商的服务),但大多数将是一对多或多对多(公司的多个联系人将具有相同的地址).
在该模型中,通常存在若干关联表,例如,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
我有两个表和它们之间的关联表(让我们调用它们Tab1,Tab2然后ATab).
Tab1并Tab2具有相同的字段(例如目的):
Id.Name.在我看来ATab,我想将记录插入到员工Tab1和Tab2他们的ID中.
为了做到这一点,我想在一个sql脚本中编写我的查询,其中包括:
我可以设法做以下事情:
INSERT INTO ATab(Tab1Id, Tab2Id)
SELECT Tab1.Id, ?????
FROM Tab1 WHERE Tab1.Name='Foo';
Run Code Online (Sandbox Code Playgroud)
但我只选择Foo了我的第一张桌子的记录......
我如何设法执行"双"where子句?可能吗 ?
我正在浏览AdventureWorks2008数据库,并希望创建一个将产品与销售人员相关联的新表.
这些表之间存在多对多关系.

现在的问题是,两个架构中,Sales并且Production,不ProductSalesPerson表属于哪一种?
ProductSalesPerson不一定属于任何一个架构.
我应该为此关联表创建新架构吗?