如何将这种多对一的关系改为一对一?

iAt*_*_it 5 .net c# sql

我有两个表,如下面的快照.

![图] [1]

场景: 一个问题应该只有一个正确答案,但可以有很多(在我的情况下为3个)错误答案(如测验节目).

问题:

Questions表中有多个答案Answers,但只有一个正确的答案.正确的答案是AnswerIDQuestions表和它关系到AnswerID在列Answer表.但它显示为多对一关系(请参阅粗体字段).

我已将问题表中的UNIQUE约束应用于AnswerID,但它仍显示多对一关系.我可以做什么,以便每个AnswerID列条目链接到问题表中的单个AnswerID?或者这样可以吗?

谢谢

问题表:

CREATE TABLE [dbo].[Questions](
        [QuestionID] [int] NOT NULL,
        [QuestionText] [nvarchar](max) NOT NULL,
        [AnswerID] [int] UNIQUE NOT NULL,
        [ImageLocation] [ntext] NULL,
     CONSTRAINT [PK_Questions_1] PRIMARY KEY CLUSTERED 
Run Code Online (Sandbox Code Playgroud)

答案表:

CREATE TABLE [dbo].[Answers](
    [AnswerID] [int] NOT NULL,
    [AnswerText] [nchar](50) NOT NULL,
    [QuestionID] [int] NOT NULL,
 CONSTRAINT [PK_Answers] PRIMARY KEY CLUSTERED 
Run Code Online (Sandbox Code Playgroud)

Cᴏʀ*_*ᴏʀʏ 4

另一种方法:

  1. 把它QuestionID从你的Answers桌子上扔下来。
  2. AnswerID从表中删除该列Questions
  3. 创建一个新表QuestionAnswer(或者更有意义的表,例如ExamTest等),其中包含 a QuestionID、 anAnswerID和一个IsCorrect标志。
  4. 将所有内容映射Answers到他们的Questions,并标记哪一个是正确的。

现在,您也可以重复使用其他问题的答案,并且每个问题和答案仅存在一次。如果您想添加有关问题答案组合的其他元数据,它也可能很有用。例如:

  1. Sequence用于控制答案出现顺序的列。
  2. PointValue帮助生成最终分数或等级的列。