Sql server SQL Server ASP.NET Web App将主键引用为其他表中的外键
我正在尝试使用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、姓名、姓氏 到目前为止,我已经尝试:Sql server SQL Server ASP.NET Web App将主键引用为其他表中的外键,sql-server,asp.net-mvc,Sql Server,Asp.net Mvc,我正在尝试使用visual studio创建一个表,以表示asp.net web应用程序中er图中的以下关系: 管理员添加一名教师 一对多,教师实体完全参与,因为每个教师只能由管理员添加 一个管理员添加多个教师,一个管理员添加一个教师。每个教师实体必须参与该关系,而不是每个管理员都参与添加教师的关系,因为他们可能永远不会添加教师 表模式 人员ID、教师ID、姓名、姓氏、日期和时间、人员ID(管理员) 其他相关模式 个人(超级班) 人员ID(PK)、姓名、D.O.B、 学生(不相交的子类) 个人I
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?如何解决此问题?如果管理员和教师之间存在多对一关系,则以下内容就足够了:
create table dbo.Teacher
(
[Person ID] int not null primary key clustered,
[Teacher ID] int not null,
[First Name] varchar(64) not null,
Surname varchar(64) not null,
AdministratorId int not null
foreign key references dbo.Administrator([Person ID])
);
go
每个教师条目都将映射到添加它的管理员。这里似乎不需要任何联接表(即多对多关系通常需要联接表)
同样,您的列名也有点误导。为什么角色有多个标识符?也就是说,为什么一个管理员有一个管理员ID和一个个人ID?我的回答假设了那么多关于这些ID的信息,但你应该明白这一点
只需创建一个从教师表到管理员表的FK,以涵盖一对多关系。如果这是管理员和教师之间的多对一关系,以下内容就足够了:
create table dbo.Teacher
(
[Person ID] int not null primary key clustered,
[Teacher ID] int not null,
[First Name] varchar(64) not null,
Surname varchar(64) not null,
AdministratorId int not null
foreign key references dbo.Administrator([Person ID])
);
go
每个教师条目都将映射到添加它的管理员。这里似乎不需要任何联接表(即多对多关系通常需要联接表)
同样,您的列名也有点误导。为什么角色有多个标识符?也就是说,为什么一个管理员有一个管理员ID和一个个人ID?我的回答假设了那么多关于这些ID的信息,但你应该明白这一点
只需从教师表到管理员表创建一个FK,以涵盖一对多关系。旁注:尽量避免在表或列名中使用单引号/任何特殊字符或空格。旁注:尽量避免在表或列名中使用单引号/任何特殊字符或空格。谢谢Thomas,我明白你的意思。我一直在创建新表,而我应该在现有表中增加一个PK来充当FK。谢谢Thomas,我明白你的意思了。我一直在创建新表,而我本应在现有表中扩充PK以充当FK。