我有一个问答系统。一个问题有4个选项和1个答案(没有正确的答案,只是用户的答案)。那么我应该如何建立这三个表之间的关系呢?我在下面做的是否正确?这就像问题表中缺少的东西,因为我有4种选择(我将如何插入它们?)
Question Table: QuestionId, QuestionText
Choice Table: ChoiceId, ChoiceText, QuestionId
Answer Table: AnswerId, ChoiceId, QuestionId, UserId
提前谢谢你。这是我在stackoverflow中的第一个问题:)
度过愉快的一天,
阿尔珀
答案 0 :(得分:0)
由于ChoiceId
已经识别出QuestionId
,如果您想要对数据进行完全规范化,则可以删除QuestionId
表中的Answer
。
我会使用以下结构:
create table questions (
question_id number primary key,
question_text text
);
create table questions_choices (
question_id number references questions(question_id),
choice_number number,
choice_text text,
primary key(question_id, choice_number)
);
create table answers (
answer_id number primary key,
user_id number references users(user_id),
question_id number,
choice_number number,
foreign key (question_id, choice_number) references questions_choices(question_id, choice_number)
);
这与您所拥有的相似,但在questions_choices
表上没有代理键。