在其他表中引用主键作为外键,SQL Server ASP.NET Web App

时间:2015-08-10 17:00:41

标签: sql-server asp.net-mvc

我正在尝试使用visual studio在asp.net web应用程序的er图表中创建一个表来表示以下关系:

管理员添加教师 由教师实体全员参与的一对多,因为每位教师只能由管理员添加。

一名管理员添加了许多教师,一名教师由一名管理员添加。每个教师实体都必须参与这种关系,而不是每个管理员都参与添加教师的关系,因为他们可能永远不会添加教师。

表架构 人员ID,教师ID,名字,姓氏,日期和时间,人员ID(管理员)

其他相关架构

人(超级) 人员ID(PK),姓名,D.O.B,

学生(子类,不相交) 人员ID(PK),学生ID,名字,姓氏,D.O.B,年龄

老师(子类,不相交) 人员ID(PK),教师ID,名字,姓氏

管理员(子类,不相交) 人员ID(PK),管理员ID,名字,姓氏

到目前为止,我已经尝试过:

CREATE TABLE [dbo].[Administrator's Teacher] (
[Person ID]  INT  NOT NULL,
[Teacher ID] INT          NOT NULL,
[First Name] VARCHAR (50) NOT NULL,
[Surname]    VARCHAR (50) NOT NULL,
[Person ID] INT NOT NULL,
PRIMARY KEY CLUSTERED ([Person ID] ASC) 
REFERENCES [dbo].[Teacher] ([Person ID]),
FOREIGN KEY ([Person ID])
REFERENCES [dbo].[Administrator] ([Person ID])
);

我想我无法创建表,因为我无法区分我正确引用的哪个人ID?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果这是管理员和教师之间的多对一关系,则以下内容就足够了:

.container { width: 200px; margin: 0 auto; }
    .row { padding: 15px 5px; }
    .expand-full-width { background:  yellow; } 

每个教师条目都将映射到添加它的管理员。这里似乎不需要任何连接表(即多对多关系通常需要连接表)。

同样,您的列名有点误导。为什么角色有多个标识符?即为什么管理员有管理员ID和人员ID?我的回答假设了很多这些ID,但你应该明白这一点。

只需从教师表创建一个FK到管理表,即可涵盖1对多关系。