нормализация базы данных - PullRequest
0 голосов
/ 12 января 2011

EDIT : Было бы хорошей идеей просто держать все это под одной большой таблицей и иметь флаг, который различает различные формы?

Мне нужно создать сайт с 5 формами, может быть, больше. пока поля для форм следующие:

http://i56.tinypic.com/25it7c7.jpg http://i56.tinypic.com/25it7c7.jpg

Как лучше всего нормализовать этот дизайн?

Я думал о том, чтобы разделить «Личные данные» на 3 разные таблицы: http://i53.tinypic.com/auts2h.jpg http://i53.tinypic.com/auts2h.jpg

и затем ссылаться на них от других с помощью идентификатора ...

Это имеет смысл? Похоже, у меня будет много отношений ...

1 Ответ

2 голосов
/ 13 января 2011

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

Итак, чтобы ответить на ваш вопрос: нет, вы не сделаете структуру базы данных более нормализованной, разбив большую таблицу, как вы описали.

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

Разбиение одной большой таблицы на несколько маленьких таблиц с отношением один к одному между ними не делает данные более нормализованными, а просто делает ваши запросы более трудными для написания. * И вы не хотите структурировать свой дизайн базы данных вокруг интерфейсов (форм), если нет веской причины. Там обычно нет.

* Хотя иногда есть веские причины разбивать большие таблицы и создавать отношения один к одному, нормализация не входит в их число.

...