2016-04-22 3 views
0

Я пытаюсь создать викторину с использованием android, и для этого я храню темы и вопросы в базе данных sqlite, теперь моя проблема в том, что тема может иметь более одного вопроса, и вопрос может быть применим к более чем одной теме, как бы поместить это в базу данных. Любая помощь была бы благодарна.Как хранить значения с повторяющимися значениями в базе данных

ответ

1

Вам понадобятся три разные таблицы. Один для ваших тем, один для ваших Вопросов и тот, где вы храните идентификатор вопроса и темы, поэтому несколько могут быть связаны друг с другом.

у вас есть темы: 1: еда, 2: автомобили, 3: животные. вопросы: 1: какой автомобиль кошка диск? 2: какая пища есть собака?

и связать их в третьей таблице вы бы:

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

Вы должны таблицу сопоставления, проведение как вопрос и ответ Id's, поэтому 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 может иметь оба ответа, вы должны связать их с таблица «Вопросы и ответы» с двумя столбцами, одна из которых содержит идентификатор вопроса, а другая содержит идентификатор ответа:

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

0

Использование третьей нормальной формы [see Wikipedia] вы бы сделали примерно следующее:

У вас есть 3 стола. Ваши table_categories, table_questions и третья таблица, представляющие отношения m-to-n между этими двумя. Это достигается путем простого создания строки для каждого 1-к-1-realtionship, как показано ниже.

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 
Смежные вопросы