如何 link 单行从 table 到整个单独的 table
How to link a single row from a table to a whole separate table
我有两个 table 想要 link,我想 link table 中的每个人 StudentID
和我的整个 Questions
table.
我正在尝试创建一些东西,让我可以使用 StudentID
从 Question
table 向个人 Student
设置任意数量的问题,所以当学生登录他们的帐户,他们可以查看已设置给他们的问题。我想我可能需要在我的问题 table 中添加一个 Boolean
称为 [set
] 或类似的我可以更新为 true 的东西,这意味着学生现在可以查看该问题。
我将提供我的 tables 以帮助解释更多:
问题table(我想我想link从这个table到StudentID
的问题:
CREATE TABLE [dbo].[Questions] (
[QuestionID] INT IDENTITY (1, 1) NOT NULL,
[Actual answer] NVARCHAR (50) NULL,
[Question Space] NVARCHAR (50) NULL,
[Question Type] INT NULL,
PRIMARY KEY CLUSTERED ([QuestionID] ASC)
);
类 table:
CREATE TABLE [dbo].[Classes] (
[ClassSize] INT NULL,
[TeacherID] INT NOT NULL,
[StudentID] INT NOT NULL,
CONSTRAINT [PK_Classes] PRIMARY KEY CLUSTERED ([TeacherID] ASC, [StudentID] ASC),
CONSTRAINT [FK_Classes_StudentDetails] FOREIGN KEY ([StudentID]) REFERENCES [dbo].[StudentDetails] ([StudentID]),
CONSTRAINT [FK_Classes_TeacherDetails] FOREIGN KEY ([TeacherID]) REFERENCES [dbo].[TeacherDetails] ([TeacherID])
);
学生详情table
(我真的不认为我有必要提供这个 table 但无论如何我都会):
CREATE TABLE [dbo].[StudentDetails] (
[StudentID] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (50) NULL,
[Username] NVARCHAR (50) NULL,
[Password] NVARCHAR (50) NULL,
[First Name] NVARCHAR (50) NULL,
[Last Name] NVARCHAR (50) NULL,
[Email Address] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([StudentID] ASC)
);
既然你在Question
和Student
之间有M-M关系,即一个问题可以设置给多个学生,一个学生可以有多个问题,你需要的是一个中介table这表示哪个问题设置给哪个学生。像这样。
CREATE TABLE [dbo].[QuestionStudentAssociation] (
[QuestionStudentAssociationID] INT IDENTITY(1,1) NOT NULL,
[QuestionID] INT NOT NULL REFERENCES Questions(QuestionID),
[StudentID] INT NOT NULL REFERENCES StudentDetails(StudentID),
PRIMARY KEY CLUSTERED ([QuestionStudentAssociationID] ASC)
);
我有两个 table 想要 link,我想 link table 中的每个人 StudentID
和我的整个 Questions
table.
我正在尝试创建一些东西,让我可以使用 StudentID
从 Question
table 向个人 Student
设置任意数量的问题,所以当学生登录他们的帐户,他们可以查看已设置给他们的问题。我想我可能需要在我的问题 table 中添加一个 Boolean
称为 [set
] 或类似的我可以更新为 true 的东西,这意味着学生现在可以查看该问题。
我将提供我的 tables 以帮助解释更多:
问题table(我想我想link从这个table到StudentID
的问题:
CREATE TABLE [dbo].[Questions] (
[QuestionID] INT IDENTITY (1, 1) NOT NULL,
[Actual answer] NVARCHAR (50) NULL,
[Question Space] NVARCHAR (50) NULL,
[Question Type] INT NULL,
PRIMARY KEY CLUSTERED ([QuestionID] ASC)
);
类 table:
CREATE TABLE [dbo].[Classes] (
[ClassSize] INT NULL,
[TeacherID] INT NOT NULL,
[StudentID] INT NOT NULL,
CONSTRAINT [PK_Classes] PRIMARY KEY CLUSTERED ([TeacherID] ASC, [StudentID] ASC),
CONSTRAINT [FK_Classes_StudentDetails] FOREIGN KEY ([StudentID]) REFERENCES [dbo].[StudentDetails] ([StudentID]),
CONSTRAINT [FK_Classes_TeacherDetails] FOREIGN KEY ([TeacherID]) REFERENCES [dbo].[TeacherDetails] ([TeacherID])
);
学生详情table
(我真的不认为我有必要提供这个 table 但无论如何我都会):
CREATE TABLE [dbo].[StudentDetails] (
[StudentID] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (50) NULL,
[Username] NVARCHAR (50) NULL,
[Password] NVARCHAR (50) NULL,
[First Name] NVARCHAR (50) NULL,
[Last Name] NVARCHAR (50) NULL,
[Email Address] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([StudentID] ASC)
);
既然你在Question
和Student
之间有M-M关系,即一个问题可以设置给多个学生,一个学生可以有多个问题,你需要的是一个中介table这表示哪个问题设置给哪个学生。像这样。
CREATE TABLE [dbo].[QuestionStudentAssociation] (
[QuestionStudentAssociationID] INT IDENTITY(1,1) NOT NULL,
[QuestionID] INT NOT NULL REFERENCES Questions(QuestionID),
[StudentID] INT NOT NULL REFERENCES StudentDetails(StudentID),
PRIMARY KEY CLUSTERED ([QuestionStudentAssociationID] ASC)
);