2013-09-06 5 views
0

Мне нужно иметь несколько форм с раскрывающимися списками, используя теги select. Есть два варианта для представления выбранного выбора в каждом списке:Представление значений выпадающего списка в базе данных

  1. Сохраните выбор в виде строки или целого числа.
  2. Сохраните все возможные варианты для определенного списка в отдельной таблице, а затем используйте внешний ключ из основной таблицы в эту таблицу.

Например, один список попросит пользователя колледжа, которого он посещает. Пользователь может выбрать один из вариантов в списке или выбрать «Другое» и ввести другое значение в поле ввода.

Другой список спросит, сколько миль он проехал в прошлом году. Варианты будут иметь форму «0-100 миль», «100-500 миль», «500-1000 миль» и т. Д. Если я использую параметр 1, я могу либо сохранить всю строку, либо короткую версию строки, либо целое число. В последних двух вариантах я вручную преобразую значение в отображаемое значение.

Я склоняюсь к варианту 2, но хочу избежать необходимости менять все позже. Единственная проблема, с которой я столкнулся с этими параметрами, заключается в том, что я должен заполнить базу данных исходными значениями для каждой таблицы (я использую Django и могу использовать приборы).

Поскольку это так распространено, какой вариант люди предпочитают использовать? Каковы плюсы и минусы?

+0

Используйте нормализованный дизайн. Если вы не знаете, что это значит, я хорошо слышал о книге «Дизайн баз данных для простых смертных». –

+0

Я знаком с нормализацией, которая будет соответствовать варианту 2. То, что я не знаю, работает над большим веб-приложением и запутанными людьми, которые работают в процессе производства, а не только на уровне схемы базы данных, а также кодом приложения и управление данными. –

ответ

0

Определенно вариант 2.

  1. Нормализовать все.
  2. Измерение производительности запроса.
  3. Используйте кеширование или денормализацию только тогда, когда вы замечаете плохие результаты.
Смежные вопросы