2013-08-03 4 views
-1

Я внедряю приложение-анкету, которое имеет разные типы вопросов и ответов. Моя цель - эффективно создавать таблицы базы данных, чтобы они были масштабируемыми.Проектирование таблиц базы данных

+0

Can вы меняете свою СУБД I, если можете, я предлагаю вам взглянуть на тип данных Array, на Postgresql. http://www.postgresql.org/docs/9.1/static/arrays.html Я не все ваши требования, но могут быть очень умными идеями, которые используют эту функцию. С помощью этой функции: У вас только 1 стол и 2 столбца. Вы не теряете дискового пространства. Подумайте об этом. –

ответ

1

Создайте таблицу для ответов на вопросы и одну таблицу, затем создайте внешний ключ с идентификатором вопроса в таблице ответов.

Что-то вроде:

Вопрос стол

+---------+-------------+------+---------+---------+-------+ 
| Field | Type  | Null | Key  | Default | Extra | 
+---------+-------------+------+---------+---------+-------+ 
| q_id | int   | NO | PRIMARY | NULL |  | 
| question| varchar(20) | NO |   | NULL |  | 
+---------+-------------+------+---------+---------+-------+ 

ответа стол

+---------+-------------+------+---------+---------+-------+ 
| Field | Type  | Null | Key  | Default | Extra | 
+---------+-------------+------+---------+---------+-------+ 
| a_id | int   | NO | PRIMARY | NULL |  | 
| q_id | int   | NO | FOREIGN | NULL |  | 
| answer | varchar(20) | NO |   | NULL |  | 
+---------+-------------+------+---------+---------+-------+ 
+0

не могли бы вы немного объяснить больше? –

+0

Джо также предлагает создать отдельную таблицу для подключения нескольких вопросов к ответу, а также другого путь. – Whistletoe

+0

Это один вопрос, много ответов. Классический «один-ко-многим» с внешним ключом. – duffymo

0

В прошлом я разработал аналогичную систему и сделал questions (id, question_text) таблицу и answers (id, answer_text) таблицу, плюс question2answer (question_id | answer_id | correct) таблицу с уникальным индексом на (question_id, answer_id), чтобы не вставлять один и тот же ответ на один и тот же вопрос дважды. «correct» - это истина | false, чтобы указать, что ответ правильный для этого вопроса для целей подсчета очков.

Таким образом, если вы хотите добавить ответ на вопрос позже, просто вставьте ответ в таблицу ответов и сопоставьте его с вопросом в question2answer.

Это также позволяет повторно использовать ответы для более чем одного вопроса. (т. е. вам не нужно указывать «да» и «нет» миллион раз в базе данных, вы просто сопоставляете существующий идентификатор ответа «да» с новым вопросом, который позволяет дать ответ «да».

Смежные вопросы