|
|
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
Мне нужно спроектировать и нормализовать до 4-й нормальной формы (если возможно, то до 5) простенькую базу данных, содержащую сведения о товаре. Ранее я никогда не нормализовывал базы данных, и понятие нормальных форм у меня с трудом оседает в голове. Я придумал такие таблицы (столбцы в скобках). Товар (номер, имя, описание, количество, цена, изображение, номер_поставщика, номер_категории), ключ - "номер" Категория (номер_категории, имя_категории), ключ - "номеркатегории" Поставщик (номер_поставщика, имя_поставщика), ключ - "номерпоставщика" 1) 1NF и 2NF выполняются, как я понял. А вот для 3NF не могу понять, вроде есть функциональные зависимости имя->описание, имя->изображение? Или все же они от ключа зависят? 2) Прочитал на одном сайте о 2NF: "создайте отдельные таблицы для наборов значений, относящихся к нескольким записям", поэтому создал таблицы "Категория" и "Поставщик". В других источниках такого не было, не знаю, стоит ли выделять в отдельные таблицы. Если укажете на какие-то еще ошибки в моих рассуждениях, то буду только благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2014, 06:26 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
wetmwl, Основная ошибка в том, что вы начали с конца, а не с начала. При проектировании БД таблицы - это последнее, чего вы коснетесь; ведь это, по сути, конечная цель задачи. Начало же, в вашем случае - это определение (вычленение) сущностей реального мира, информацию о которых будет хранить ваша база, и их взаимосвязей друг с другом. Категории, допустим, редко делаются плоским списком - обычно они организуются в дерево, но бывают и более сложные структуры. Когда определитесь с сущностями, переходите к их атрибутам; не забывайте, что они могут быть скалярные, а могут и множественные. Например, у вас всегда будет только одно фото для товара? Обычно их несколько. Сходите на Яндекс.Маркет, посмотрите на него с точки зрения организации БД - где какие сущности, какие у них атрибуты, как они связаны? А нормализация начнется тогда, когда полностью определитесь со всем вышесказанным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2014, 07:45 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
До 5-ой нормальной формы? Вы серьёзно? На практике очень редко встречаются БД полностью соответствующие даже 3-ей. 4-ая, насколько я помню теорию, будет представляет из себя набор таблиц каждая из которых состоит только из первичного ключа и одного атрибута + таблицы связи многие-ко-многим. Такая структура на практике совершенно не эффективна. Более высокие формы нормализации даже понять сложно, не то что на практике применить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2014, 13:48 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
alexei_k, Не, это шестая. Но четвертая в реальной жизни тоже нафиг не нужна. ТС, а что за задача-то? Если учебная, то это одно дело, а если реальная, то зачем вы стремитесь к 5НФ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2014, 16:24 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
Ennor Tiegaelalexei_k, Не, это шестая. Но четвертая в реальной жизни тоже нафиг не нужна. ТС, а что за задача-то? Если учебная, то это одно дело, а если реальная, то зачем вы стремитесь к 5НФ? Ндя. Подзабыл :) Пора Дейт-а перечитывать. В реальной жизни даже HГ Бойса-Кодда не нужна. Как говорили мне когда-то "Всё что выше 3-ей не находит логического обоснования за пределами научного сообщества." А на практике даже простую 3-ю достичь часто не удаётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2014, 16:53 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
wetmwl Товар (номер, имя, описание, количество, цена, изображение, номер_поставщика, номер_категории), ключ - "номер" 1) 1NF и 2NF выполняются, как я понял. А вот для 3NF не могу понять, вроде есть функциональные зависимости имя->описание, имя->изображение? Или все же они от ключа зависят? . От ключа то в таблице все зависят, на то он и ключ. Однако, для нарушения 3НФ, НФБК нужны транзитивные зависимости атрибутов. Для этого надо, чтобы не было зависимости имя -> номер (Т.е. имя тоже не оказалось бы ключем, не уникально), а из фразы "вроде есть функциональные зависимости имя->описание, имя->изображение" удалить слово "вроде". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2014, 17:00 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
Ennor Tiegael, допустим, у меня будет только одно фото, и категория не будет содержать подкатегорий в отличие от Яндекс-Маркета. Задача пока что учебная. Я выделял сущности "Товар", "Категория" и "Поставщик", где "Товар" принадлежит одной "Категории" и одному "Поставщику". vadiminfo, получается у меня есть зависимости номер->имя, имя->описание и имя->изображение, т.е. есть транзитивные зависимости, которые нужно убрать для 3NF, а убрать зависимость имя -> номер нужно для НФБК? Если я вас верно понял, то нужно разбить таблицу "Товар". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2014, 21:46 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
wetmwl vadiminfo, получается у меня есть зависимости номер->имя, имя->описание и имя->изображение, т.е. есть транзитивные зависимости, которые нужно убрать для 3NF, а убрать зависимость имя -> номер нужно для НФБК? Если я вас верно понял,... Вы не верно поняли меня. "убрать зависимость имя -> номер" нужно не для НФБК, а для того, что зависимость была транзитивный: при наличии имя -> номер зависимости не транзитивны . Т.е. для наличия данных транзитивных зависимостей нужно, чтобы имя было не уникально. Но если оно не уникально, то под вопросом окажутся зависимости имя->описание и имя->изображение. Потому пока не очевидно что "получается у меня есть...т.е. есть транзитивные зависимости", т.е. преждевременно " разбить таблицу "Товар"". Вам нужно все же выяснить зависимости. Пока у Вас ясно только, что уникален номер. Теперь надо выяснять имя уникально или нет: может быть два одинаковых имени или нет там у вас в таблице "Товар"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2014, 01:06 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
Имя тоже у меня уникально. Значит, 3NF у меня есть. Ах вот, почему я путаюсь: в части источников написано: "ни один неключевой атрибут R не находится в транзитивной функциональной зависимости от потенциального ключа R", а в другом "каждый неключевой атрибут нетранзитивно зависит от первичного ключа". Если не ошибаюсь, то НФБК тоже есть, потому что у меня ключи не зависят ни от одного из неключевых атрибутов. Многозначных зависимостей я не нашел, значит, 4NF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2014, 03:21 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
wetmwlИмя тоже у меня уникально. Значит, . Относительно, рассмотренных Вами ранее зависимостей. Если Вы уверенны, что нет других, то "3NF у меня есть" wetmwlЕсли не ошибаюсь, то НФБК тоже есть, . Ну у Вас пока не найдено в принципе транзитивных зависимостей, а для нарушения НФБК нужна хоть одна - любая. Для 3NF - "неключевого" атрибута. У Вас же, вроде, нет пока составных ключей, а от составных все зависят. Потому о ситуации "в 3NF, но не НФБК" говорить слишком рано. wetmwlМногозначных зависимостей я не нашел, значит, 4NF. Значит не найдено нарушения 4NF. Это формально не означает "4NF": не всегда же "мы не нашли" = "нет на самом деле". Но, скорее всего, в реальном проекте более чем достаточно того, что о 4NF вообще вспомнили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2014, 12:45 |
|
||
|
Подскажите по нормализации базы данных
|
|||
|---|---|---|---|
|
#18+
опечатка (комп плохо набивает буквы е и н): У Вас же, вроде, нет пока составных ключей, а от составных все зависят. следует читать У Вас же, вроде, нет пока составных ключей, а от не составных все зависят. Т.е. это атрибуты сами ключи и транзитиво зависть не могут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2014, 16:24 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38518900&tid=1541022]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
174ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 277ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...