2010-09-21 1 views

ответ

5

Как правило, я хочу создать базу данных по крайней мере для Boyce Codd/5th Normal Form, за исключением случаев, когда я нахожу веские причины. Основной причиной использования нормальной формы является исключение избыточности, которое могло бы привести к неправильным результатам. Другим преимуществом является то, что нормальная форма помогает избежать «смещения» в дизайне базы данных (тенденция укладываться в некоторые шаблоны использования больше, чем другие), что упрощает поддержку изменений схемы по мере развития требований.

1

Нет, не всегда.

Вам нужно хорошо понимать нормальные формы, чтобы избежать глупых ошибок. Но иногда это полезно, по соображениям удобства или производительности. (Кэширование)

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

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

0

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

+0

Хороший вопрос о хранилищах данных. –

1

Еще в тот же день я использовал моделирование ER для анализа данных, затем преобразовал в реляционную модель, а затем преобразовал реляционную модель в таблицы SQL (с их индексами). Это звучит сложно, но это не так. Каждый шаг прост и управляем.

Если вы правильно моделируете ER, вы связываете каждый атрибут с правильным сущностью или отношением. Каждая организация получает ключ, будь то естественный или синтетический. Обнаружение всех полезных отношений - это самая глубокая часть анализа данных.

Модель ER может использоваться как руководство для формирования отношений из атрибутов. Каждый объект получает отношение, и каждое отношение «многие ко многим» получает отношение, в то время как отношения «многие к одному» получают внешний ключ в одном из отношений сущности.

Такая конструкция автоматически в 3NF. Вылеты из BCNF, 4NF и 5NF встречаются редко.

Создание таблиц SQL на основе отношений является простым. Для проектирования индекса требуется, чтобы вы ожидали объем, нагрузку и ресурсы и несколько зависимы от СУБД.