SQL Server中的外键关系

时间:2013-04-02 18:48:41

标签: sql-server-2008

我有一张桌子,让我们这么简单..:

CREATE TABLE Department(
    [DepartmentId] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](128) NOT NULL
)

DepartmentId是表格部门的主键。

我有另一个名为DepartmentRelation的表:

CREATE TABLE DepartmentRelation(
    [DepartmentRelationId] [int] IDENTITY(1,1) NOT NULL,
    [ParentDepartmentId] [int] NOT NULL,
    [ChildDepartmentId] [int] NOT NULL  
)

DepartmentRelationId是表DepartmentRelation的主键。

现在我需要定义两个外键,一个用于ParentDepartmentId,另一个用于ChildDepartmentId,每个都指向Department.DepartmentId。

我的问题是,我是否应该在父列和子列之间添加另一个外键?例如,从孩子到父母定义一个fk?

1 个答案:

答案 0 :(得分:2)

这种类型的层次关系通常在一个表中完成,在Department表的情况下(你应该考虑调用它Departments,但这只是我的偏好)。无论如何,该图的可视示例如下:

enter image description here