在SQL Server中定义一对一关系

And*_*sch 33 linq sql-server

我需要定义一对一的关系,似乎无法在SQL Server中找到正确的方法.

为什么要问一对一的关系?

我使用WCF作为DAL(Linq),我有一个包含BLOB列的表.BLOB几乎没有变化,每次进行查询时都会转移它而浪费带宽.

我看了一下这个解决方案,尽管看起来这是一个好主意,但我可以看到Linq在尝试实现这种方法时有点健康.

有任何想法吗?

Dam*_*vic 76

实际上,一对一经常用于超类型/子类型关系.在子表中,主键也充当父表的外键.这是一个例子:

org_model_00

CREATE TABLE Organization
( 
     ID       int PRIMARY KEY,
     Name     varchar(200),
     Address  varchar(200),
     Phone    varchar(12)
)
GO

CREATE TABLE Customer
( 
     ID              int PRIMARY KEY,
     AccountManager  varchar(100)
)
GO

ALTER TABLE Customer
    ADD  FOREIGN KEY (ID) REFERENCES Organization(ID)
        ON DELETE CASCADE
        ON UPDATE CASCADE
GO
Run Code Online (Sandbox Code Playgroud)

  • @PerformanceDBA:关系是"1:0..1",因为它没有约束来确保父表中的每一行在其中一个子类型表中都有匹配的行.对于发布的模式,对于"组织"中的每一行,Customer中可以有零行或一行,因此`1:0..1`. (30认同)
  • 感谢上帝有人知道SQL和关系数据库.你已经表明这种关系是明确的**.需要明确的是,对于那些不确定关系是1 :: 1的人,请注意Customer.ID(也是Organisation.ID)是**唯一**因此只能有一个Customer行任何组织行. (5认同)