如何 link 单行从 table 到整个单独的 table

How to link a single row from a table to a whole separate table

我有两个 table 想要 link,我想 link table 中的每个人 StudentID 和我的整个 Questions table.

我正在尝试创建一些东西,让我可以使用 StudentIDQuestion 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)
);

既然你在QuestionStudent之间有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)
);