我目前正在构建一个类似这样的桌面应用程序:用户创建项目,并添加问题/答案(每个问题只有一个非空答案)。每个项目都可以有无限量的问题/答案,每个问题/答案都可以链接到无限量的项目。
我创建了两个项目和问题表,但我不知道如何将它们联系起来。我想过为每个问题添加项目ID,但问题只能链接到一个项目。
示例:
Project name: Geography
Project name: History
Question: When did the WW1 end?
Answer: 1918
Linked to: Geography, History, ...
这个问题可以包含在两个项目中,两个项目都可能有更多问题。
感谢。
答案 0 :(得分:3)
您应该创建一个表来链接项目和QAs:
Create table Projects_QAs(ProjectID int not null,QuestionID int not null,
primary key(ProjectID,QuestionID)
)
您还可以创建foreign keys
以将QuestionID
和ProjectID
关联到相关表格的ID
。
此外,您可以在(Index
,QuestionID
)上添加ProjectID
以便更快地进行查询。
答案 1 :(得分:0)
这是一个非常普遍的问题,所以我有一个很普遍的答案。
有三种类型的数据库关系: -One到一 -One一对多 -many一对多
您目前只考虑一对一的关系,其中项目中的唯一ID链接到问题中的一个特定唯一ID
你应该考虑一对多或多对多的模式。
编辑:像Ormoz所说,可以使用第三个表来实现这种多对多模型,其中新表的每个条目代表一个问题/项目组合,作为项目和问题之间的链接的方式。
如果我们的general_question(question_id = 1)适合项目project_1(project_id = 1)和project_2(project_id = 2),那么我们希望新表p1_q1中有2条记录(project_id = 1且question_id = 1 )和p2_q1(使用project_id = 2和question_id = 1)作为将两个项目链接到同一个问题的方法。