Нормализация реляционных баз данных Страница 8. Заключение
|
Страница 8 из 8 Надеюсь, у читателей сложилось определенное представление о процессе нормализации отношений и о его роли при проектировании баз данных. Должен заметить, что для простоты изложения я выбрал несколько надуманные примеры и специально предварительно их "испортил", чтобы в дальнейшем подвергнуть нормализации.
На практике дело обычно обстоит не так. Во-первых, кроме совсем уж зеленых новичков, вряд ли кому придет в голову начинать проектирование базы данных с таблиц, нарушающих 1НФ (возможно, за исключением случаев, когда нужно занести в БД данные, подготовленные табличным процессором вроде Excel).
С составными ключами на практике тоже доводится встречаться не так уж часто. Обычно составной ключ подменяют так называемым суррогатным ключом, т.е. ключом искусственного происхождения, который обычно генерируется самой СУБД, которая и гарантирует его уникальность. Составной ключ в этом случае становится альтернативным ключом, а суррогатный - первичным. Исключением, пожалуй, является ситуация с идентифицирующими зависимостями, когда имеет место миграция первичного ключа родительской сущности в составной первичный ключ дочерней. Но рассмотрение подобных случаев выходит за рамки данной статьи. Надеюсь, что совместными усилиями в свое время мы доберемся и до этого вопроса.
Таким образом, на практике приводить отношения к 1НФ и 2НФ приходится не столь уж часто. Скорее вполне достаточно оказывается проглядеть отношения, чтобы убедиться, что они не нарушают эти нормальные формы.
С 3НФ ситуация несколько сложнее, так как транзитивная зависимость не всегда так явно бросается в глаза. Поэтому нарушение 3НФ - наиболее частая проблема, с которой приходится иметь дело.
Впрочем, нормализация - это фактически исправление огрехов, допущенных при проектировании БД. Как известно, частенько оказывается проще не допускать этих огрехов с самого начала, нежели спроектировать БД кое-как, а потом оптимизировать (чем мы, собственно, и занимались на протяжении всей статьи). Неоценимую помощь в проектировании БД оказывают соответствующие методологии (их несколько, я предпочитаю IDEF1X, разработанную для NASA), а также инструментальные средства для поддержки этих методологий (тут опять же есть выбор, лично я по ряду причин выбрал для себя AlFusion Data Modeler производства Computer Associates). |