2016-03-18 2 views
0

Я хочу создать частично динамическую форму. Несколько полей будут сохранены в таблице training_session, тэги будут сохранены в таблице tags и подключены к учебной сессии через training_tags. Однако, помимо этих полей, которые должны быть динамическими. Если вы посмотрите на эту картину, вы получите идею:Дизайн базы данных для динамической формы

enter image description here

Я изо всех сил, чтобы разработать базу данных для этих динамических полей, хотя. Я придумал что-то вроде этого:

field_types

id - self explanatory 
type - holds the value int or string 

полей

id - same 
id_field_type - which type of value does the field hold? 
label - could also be "name", I guess. Just to know, which field it actually is 
value - the actual value of the field 

Каковы лучшие практики и решения таких проблем, как это?

ответ

1

Поскольку вы отметили MySQL, похоже, вы ищете дизайн реляционной базы данных. Реляционная база данных - normalized для устранения дублирования данных.

Рассматривая форму, мы можем создать 7 таблиц базы данных; Учебная сессия, тег, тег тренировочной сессии, погружение, погружение на тренировочном сеансе, оборудование и оборудование для обучения. Вы уже придумали 2 таблицы. Как правило, имена таблиц являются единственными.

Итак, давайте посмотрим, как вы определяете таблицу обучения.

Training Session 
---------------- 
Training Session ID 
Training Session Title 
Training Session Description 
Training Session Time Stamp 
Training Session Duration 

учебной сессия ID является Автоинкрементным целым или длинным, а также первичным или кластеризации ключ таблицы. Остальные атрибуты должны быть понятны.

Следующая таблица, на которую мы будем смотреть, - это тег.

Tag 
--- 
Tag ID 
Tag Name 
Tag Description 
... 

Как и таблица Training Session, идентификатор тега является основным ключом для этой таблицы. Таблица тегов содержит одну строку для каждого из возможных меток, которые могут быть применены к учебной сессии.

Теперь у нас есть тренировки, и у нас есть теги. Следующий шаг - связать тренировки с соответствующими тегами. Для этого мы создадим таблицу соединений, Тестовый тег тренировки.

Training Session Tag 
-------------------- 
Training Session ID 
Tag ID 
... 

Первичным ключом для этой таблицы является комбинация идентификаторов учебного сеанса и идентификатора тега. Это дает вам теги для определенной тренировки. Если вам нужны тренировочные сессии для определенного тега, вам понадобится дополнительный уникальный индекс (идентификатор тега, идентификатор учебного сеанса).

Я думаю, что вы можете найти таблицы погружений и оборудования, а также таблицы стыковки тренировочного сеанса обучения и тренировочного сеанса.

+0

Ну, на самом деле довольно просто. Я думаю, что моя первоначальная идея этой формы была немного сложнее, но, глядя на нее сейчас, ваше предложение имеет смысл. Наверное, я начал пропускать лес за деревьями, поэтому я придумал этот field_type и полевые вещи. Спасибо, я пойду с этим предложением! –

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