Я пытаюсь создать сайт дружбы. Проблема, с которой я сталкиваюсь, - это когда пользователь присоединяется к веб-сайту, на котором они должны заполнять форму. Эта форма имеет много фиксированных выпадающих элементов, которые пользователь должен заполнить. Ниже приведен пример одного из раскрывающихся списков.Дизайн базы данных - выпадающее поле ввода Проблема
Опуститесь (Любимые Питомцы)
товары в любимых домашних животных
1. Dog
2. Cat
3. Bird
4. Hampster
Что такое лучший способ сохранить эту информацию в базе данных. Сейчас таблица профилей имеет столбец для каждого фиксированного раскрывающегося списка. Это правильный дизайн базы данных. См. Пример:
User ID | Age | Country | Favorite Pet | Favorite Season
--------------------------------------------------------------
1 | 29 | United States | Bird | Summer
Это правильный дизайн базы данных? сейчас у меня есть, вероятно, 30 + столбцов. Большинство столбцов исправлены, потому что они выпадают, и пользователь должен выбрать один из вариантов.
Каков правильный подход к этой проблеме?
p.s. Я также думал о создании таблицы для каждого раскрывающегося списка, но это действительно усложняло бы запросы и приводило бы к множеству таблиц.
Другой подход
Profile
стол
ID | username | age
-------------------
1 | jason | 27
profileDropDown
стол:
ID | userID | dropdownID
------------------------
1 | 1 | 2
2 | 1 | 7
выпадающим стол:
ID | dropdown | option
---------------------
1 | pet | bird
2 | pet | cat
3 | pet | dog
4 | pet | Hampster
5 | season | Winter
6 | Season | Summer
7 | Season | Fall
8 | Season | spring
Да, каждая таблица списков должна быть отдельной таблицей, если только вы не храните текст (т. Е. DOG вместо 1), что является плохим дизайном. Наличие 30 + столбцов не проблема, но они имеют смысл быть вместе, DB101 - Читайте о нормализации вашей базы данных –