标签: associative-table

"大师"联想表?

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

在该模型中,通常存在若干关联表,例如,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
查看次数

SQL插入以填充具有条件的关联表

我有两个表和它们之间的关联表(让我们调用它们Tab1,Tab2然后ATab).

Tab1Tab2具有相同的字段(例如目的):

  • Id.
  • Name.

在我看来ATab,我想将记录插入到员工Tab1Tab2他们的ID中.

为了做到这一点,我想在一个sql脚本中编写我的查询,其中包括:

我可以设法做以下事情:

INSERT INTO ATab(Tab1Id, Tab2Id) 
SELECT Tab1.Id, ????? 
FROM Tab1 WHERE Tab1.Name='Foo';
Run Code Online (Sandbox Code Playgroud)

但我只选择Foo了我的第一张桌子的记录......

我如何设法执行"双"where子句?可能吗 ?

sql sql-server insert sql-server-2008-r2 associative-table

3
推荐指数
1
解决办法
1973
查看次数

该关联表属于哪个模式?

我正在浏览AdventureWorks2008数据库,并希望创建一个将产品与销售人员相关联的新表.

这些表之间存在多对多关系.

替代文字

现在的问题是,两个架构中,Sales并且Production,不ProductSalesPerson表属于哪一种? ProductSalesPerson不一定属于任何一个架构.

我应该为此关联表创建新架构吗?

sql database sql-server database-design associative-table

0
推荐指数
1
解决办法
179
查看次数