如何在数据库中存储具有重复值的值

时间:2016-04-22 10:25:30

标签: android database sqlite database-design

我正在尝试使用android创建一种测验并且这样做我将主题和问题存储在sqlite数据库中,现在我的问题是一个主题可以有多个问题而且问题可以适用于多个主题我将如何将其放入数据库任何帮助将是一个赞赏的感谢

3 个答案:

答案 0 :(得分:1)

您需要三个不同的表格。一个用于您的主题,一个用于您的问题,另一个用于存储问题和主题的ID,因此可以将多个链接在一起。

就像你有话题:1:食物,2:汽车,3:动物。 问题:1:猫驾驶什么样的车? 2:狗吃什么样的食物?

并在第三个表格中链接它们:

topic_id | question_id
2        | 1
3        | 1
1        | 2
3        | 2

答案 1 :(得分:0)

您需要一个包含问题和答案ID的映射表,因此需要3个表。

假设你有“问题”表:

Question 1 with Id 1
Question 2 with Id 2
Question 3 with Id 3

另一张表“答案”:

Answer 1 With Id 1
Answer 2 with Id 2

让我们说问题1可以有两个答案,你需要将它们与表格“QuestionsAnswers”联系起来,其中有2列,一个持有问题的ID,另一个持有答案的ID:

CREATE TABLE [MyDatabase].[dbo].[QuestionsAnswers](
[QuestionId] [int] NOT NULL,
[AnswerId] [int] NOT NULL)

让我们简化这个并建立5个关系:

QuestionId | AnswerId 
1          | 1
2          | 1
2          | 2
3          | 2
1          | 2

答案2涉及问题1,2和3

问题2涉及答案1和2

答案 2 :(得分:0)

使用第三范式[see Wikipedia],您可以执行以下操作:

你有3张桌子。您的table_categories,table_questions和第三个表,表示这两者之间的m到n关系。 这可以通过简单地为每个1对1实现创建一行来实现,如下所示。

table_categories
_______________________________________
id       name

1       "culture"
2       "history"
...
42      "animals"


table_questions
_______________________________________
id       name

1       "Which fo the following is not a member of the EU?"
2       "When was the last FIFA world cup in Europe?"
...
42      "Who was Jimmy Hendrix?"


table_question_categories
_______________________________________
id      fk_id_question    fk_id_category

1       4                 5
2       4                 37
...
42      42                5