Я внедряю приложение-анкету, которое имеет разные типы вопросов и ответов. Моя цель - эффективно создавать таблицы базы данных, чтобы они были масштабируемыми.Проектирование таблиц базы данных
ответ
Создайте таблицу для ответов на вопросы и одну таблицу, затем создайте внешний ключ с идентификатором вопроса в таблице ответов.
Что-то вроде:
Вопрос стол
+---------+-------------+------+---------+---------+-------+
| 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 | |
+---------+-------------+------+---------+---------+-------+
не могли бы вы немного объяснить больше? –
Джо также предлагает создать отдельную таблицу для подключения нескольких вопросов к ответу, а также другого путь. – Whistletoe
Это один вопрос, много ответов. Классический «один-ко-многим» с внешним ключом. – duffymo
В прошлом я разработал аналогичную систему и сделал questions (id, question_text)
таблицу и answers (id, answer_text)
таблицу, плюс question2answer (question_id | answer_id | correct)
таблицу с уникальным индексом на (question_id, answer_id), чтобы не вставлять один и тот же ответ на один и тот же вопрос дважды. «correct» - это истина | false, чтобы указать, что ответ правильный для этого вопроса для целей подсчета очков.
Таким образом, если вы хотите добавить ответ на вопрос позже, просто вставьте ответ в таблицу ответов и сопоставьте его с вопросом в question2answer.
Это также позволяет повторно использовать ответы для более чем одного вопроса. (т. е. вам не нужно указывать «да» и «нет» миллион раз в базе данных, вы просто сопоставляете существующий идентификатор ответа «да» с новым вопросом, который позволяет дать ответ «да».
- 1. Проектирование таблиц из базы данных mySQL
- 2. Mysql - Проектирование базы данных
- 3. Проектирование хорошей базы данных
- 4. проектирование базы данных отчета студента
- 5. Проектирование базы данных управления запасами?
- 6. Проектирование базы данных
- 7. проектирование базы данных Hypertable
- 8. Aerospike проектирование базы данных
- 9. Комплексное проектирование базы данных
- 10. Проектирование локализованной схемы базы данных
- 11. Проектирование базы данных с той же таблицей для других таблиц
- 12. Проектирование таблиц Sql Server
- 13. Запрос на проектирование базы данных
- 14. Проектирование базы данных для отношений
- 15. Запрос на проектирование базы данных
- 16. Проектирование базы данных для ACL
- 17. Проектирование базы данных: циклические ссылки
- 18. Проектирование базы данных SQL Server
- 19. Визуальное проектирование структуры базы данных
- 20. Запрос на проектирование базы данных
- 21. Проектирование схемы базы данных (MySQL)
- 22. Проектирование базы данных для словаря
- 23. Проектирование пула подключения базы данных
- 24. Проектирование таблицы базы данных Notification
- 25. Проектирование базы данных, на основе структуры данных
- 26. Схема базы данных проектирование помощь - Mysql
- 27. проектирование базы данных для системы продажи
- 28. Проектирование таблиц для заказа системы
- 29. Проектирование хранилища данных из базы данных oltp
- 30. Проектирование базы данных для хранения данных страниц
Can вы меняете свою СУБД I, если можете, я предлагаю вам взглянуть на тип данных Array, на Postgresql. http://www.postgresql.org/docs/9.1/static/arrays.html Я не все ваши требования, но могут быть очень умными идеями, которые используют эту функцию. С помощью этой функции: У вас только 1 стол и 2 столбца. Вы не теряете дискового пространства. Подумайте об этом. –