如何为相同列值之间的关系设计 SQL Server 表



在我的数据库中有一个我的客户表。客户可以是我向其提供原材料的产品生产商或贸易商。

许多生产商都有不同名称的贸易公司,这些公司可能在我的数据库中列为独立客户,此外,他们中的许多人再次拥有不同名称的在线商店。所以谁属于谁很难找到,如果我知道,我必须在我的数据库中将它们"链接"在一起。

我的想法是添加一个只有 2 列的表:CuID(来自可维护的客户 ID(和链接的 CuID(假设我称此列为 ReID=关系 ID 也持有合作伙伴公司的 CuID。

每当我检测到它们之间的一种关系时,我都会在 CuID 列中添加 CuID,在"ReID"列中添加其他公司的 CuID。

在访问表单上,我有一个子窗体,显示相关客户的所有名称(CuID:ReID =1:n(。

但是,当我在存储为 ReID 的客户记录中并在"CuID"列中显示 CuID 时,反之亦然?

例: 公司 A CuID=1 与公司 B CuID=3 有关联。在我的表格中,我添加了 1/3 公司 X CuID=7 与公司 B CuID=3 有联系。在我的表格中,我添加了 7/3

在呈现公司 A 的表格上,我在子表格中找到了相关的公司 B。 在呈现公司 X 的表格上,我在子表格中找到了相关的公司 B。

当出示 X 时,我如何在表格上将 A 和 B 作为与公司 X 的关系呈现?

我无法找到满足此要求的适当解决方案。 任何想法都值得赞赏。 谢谢迈克尔

根据您的描述,您应该有两个表:

  • Companies
  • Shops

Customers应该有一个主键,例如:

create table Companies (
CompanyId int identity(1, 1) primary key,
Name varchar(255),
. . .
);

那么Shops,应该回去参考一下:

create table Shops (
ShopId int identity(1, 1) primary key,
CompanyId int references Companies(CompanyId),
. . .
);

据推测,一家商店只与一家公司有关,因此当您发现关系时,您只需填写Shops.CompanyId即可。 仅当存在多对多关系时,才需要联结/关联表。

最新更新