Зачем приводить к 3 нормальной форме [MySQL]?

Solomon Kane

Постоялец
Регистрация
26 Авг 2009
Сообщения
144
Реакции
9
А точнее, зачем рушить транзитивную зависимость? Вот, скажем, в одном из примеров был такой момент - полное название производителя => короткое. То есть 2 ячейки. В объяснении сказано, якобы полное и неполное названия транзитивно связаны. То есть указав полное название мы обязаны указывать неполное. Или наоборот. А такого быть не должно. Но почему мы обязаны указывать второе значение? Мы же можем его просто взять и не указать.

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

В общем, кто знает, объясните.

Спасибо!

P.S. Перенесите, пожалуйста, в раздел про БД! Так в мозг вбилась связка PHP и MySQL, что даже запостил вопрос сюда, так как уже давно не мыслю одно без другого.
 
На самом деле ничего не понял, какой конкретно вопрос?
Вообще кажется тут все зависит от поставленной цели.
Если надо взять все данные, то одним индексом не отделаешь, например как в вебмани получение аттестата псевдонима.
 
Нормализация проводится для устранения явных и неявных коллизий в таблицах. В общем случае это ведет к увеличению числа таблиц. Разработчик сам решает, на какой нормальной форме ему остановиться - на 1-й или дойти до 5-й. Если вы не видите никакий подводных камней, зачем усложнять себе жизнь. Сделайте таблицу в 1-й или 2-й нормальной формеи достаточно.

НО ведь я могу руками ввести для индекса Москвы улицу, которая есть только в Питере, а без дополнительных проверок это никак не скажется на самой базе.

а это не нормализация как таковая. Нормализация - это чаще всего изменение структуры таблиц, чаще всего с делением потей и таблиц на части и т.д.
В случае с адресами - таблица городов сокращает объем базы и используеся как справочник.
Таблица улиц - содержит поля ID улицы, ID города, название улицы. Поэтому названия заносятся в города в соответствии с ID города и т.д.

Если приведете конкретную задачу со структурой таблиц, легче будет обсуждать
 
Назад
Сверху