定义表之间的连接

时间:2016-07-05 12:04:56

标签: sql sql-server tsql

我有以下SQL表:

{{1}}

创建包含的表的最佳方法是什么:

  1. 2个用户之间的连接;
  2. 1个用户与1个组织之间的连接。
  3. 这应该仅使用一个表吗?

2 个答案:

答案 0 :(得分:1)

对于多对多关系,您必须添加交集表。由于您有2个连接,因此需要2个表:

CREATE TABLE dbo.FavoritUsers (
  FU_UserId int FOREIGN KEY References dbo.Users(Id), 
  FU_FavofitUserId FOREIGN KEY References dbo.Users(Id),
  PRIMARY KEY (FU_UserId , FU_FavofitUserId)
)

CREATE TABLE dbo.FavoritOrganizations (
  FO_UserId int FOREIGN KEY References dbo.Users(Id), 
  FO_FavofitOrganizationId FOREIGN KEY References dbo.Organizations(Id)
  PRIMARY KEY (FO_UserId , FO_FavofitOrganizationId)
)

答案 1 :(得分:0)

我建议另一张桌子 - 例如OrganizationTree。这应该有一列Orga.ID和两列USer_ID和Supervisor / Parent / Manager / whatever_id,以便在两个人之间保持连接。 另一种可能性是将用户表扩展到另一列(例如" parent_id"," Supervisor_id"或其他)。但是你仍然需要另一张Orga Connection的桌子。