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

Тема в разделе "Базы данных", создана пользователем Solomon Kane, 23 июл 2011.

Модераторы: latteo
  1. Solomon Kane

    Solomon Kane Постоялец

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

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

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

    Спасибо!

    P.S. Перенесите, пожалуйста, в раздел про БД! Так в мозг вбилась связка PHP и MySQL, что даже запостил вопрос сюда, так как уже давно не мыслю одно без другого.
     
  2. ramses21

    ramses21 Постоялец

    Регистр.:
    20 июл 2008
    Сообщения:
    107
    Симпатии:
    16
    На самом деле ничего не понял, какой конкретно вопрос?
    Вообще кажется тут все зависит от поставленной цели.
    Если надо взять все данные, то одним индексом не отделаешь, например как в вебмани получение аттестата псевдонима.
     
    Solomon Kane нравится это.
  3. everest

    everest

    Регистр.:
    20 дек 2006
    Сообщения:
    197
    Симпатии:
    20
    Нормализация проводится для устранения явных и неявных коллизий в таблицах. В общем случае это ведет к увеличению числа таблиц. Разработчик сам решает, на какой нормальной форме ему остановиться - на 1-й или дойти до 5-й. Если вы не видите никакий подводных камней, зачем усложнять себе жизнь. Сделайте таблицу в 1-й или 2-й нормальной формеи достаточно.

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

    Если приведете конкретную задачу со структурой таблиц, легче будет обсуждать
     
    Solomon Kane нравится это.