powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите по нормализации базы данных
12 сообщений из 12, страница 1 из 1
Подскажите по нормализации базы данных
    #38517172
wetmwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно спроектировать и нормализовать до 4-й нормальной формы (если возможно, то до 5) простенькую базу данных, содержащую сведения о товаре. Ранее я никогда не нормализовывал базы данных, и понятие нормальных форм у меня с трудом оседает в голове.
Я придумал такие таблицы (столбцы в скобках).

Товар (номер, имя, описание, количество, цена, изображение, номер_поставщика, номер_категории), ключ - "номер"
Категория (номер_категории, имя_категории), ключ - "номеркатегории"
Поставщик (номер_поставщика, имя_поставщика), ключ - "номерпоставщика"


1) 1NF и 2NF выполняются, как я понял. А вот для 3NF не могу понять, вроде есть функциональные зависимости имя->описание, имя->изображение? Или все же они от ключа зависят?

2) Прочитал на одном сайте о 2NF: "создайте отдельные таблицы для наборов значений, относящихся к нескольким записям", поэтому создал таблицы "Категория" и "Поставщик". В других источниках такого не было, не знаю, стоит ли выделять в отдельные таблицы.

Если укажете на какие-то еще ошибки в моих рассуждениях, то буду только благодарен.
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517176
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wetmwl,

Основная ошибка в том, что вы начали с конца, а не с начала. При проектировании БД таблицы - это последнее, чего вы коснетесь; ведь это, по сути, конечная цель задачи.

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

Когда определитесь с сущностями, переходите к их атрибутам; не забывайте, что они могут быть скалярные, а могут и множественные. Например, у вас всегда будет только одно фото для товара? Обычно их несколько.

Сходите на Яндекс.Маркет, посмотрите на него с точки зрения организации БД - где какие сущности, какие у них атрибуты, как они связаны?

А нормализация начнется тогда, когда полностью определитесь со всем вышесказанным.
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517258
alexei_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До 5-ой нормальной формы? Вы серьёзно?
На практике очень редко встречаются БД полностью соответствующие даже 3-ей.

4-ая, насколько я помню теорию, будет представляет из себя набор таблиц каждая из которых состоит только из первичного ключа и одного атрибута + таблицы связи многие-ко-многим. Такая структура на практике совершенно не эффективна. Более высокие формы нормализации даже понять сложно, не то что на практике применить...
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517332
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexei_k,

Не, это шестая. Но четвертая в реальной жизни тоже нафиг не нужна.

ТС, а что за задача-то? Если учебная, то это одно дело, а если реальная, то зачем вы стремитесь к 5НФ?
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517348
alexei_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegaelalexei_k,

Не, это шестая. Но четвертая в реальной жизни тоже нафиг не нужна.

ТС, а что за задача-то? Если учебная, то это одно дело, а если реальная, то зачем вы стремитесь к 5НФ?
Ндя. Подзабыл :) Пора Дейт-а перечитывать.

В реальной жизни даже HГ Бойса-Кодда не нужна. Как говорили мне когда-то "Всё что выше 3-ей не находит логического обоснования за пределами научного сообщества." А на практике даже простую 3-ю достичь часто не удаётся.
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517354
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wetmwl Товар (номер, имя, описание, количество, цена, изображение, номер_поставщика, номер_категории), ключ - "номер"


1) 1NF и 2NF выполняются, как я понял. А вот для 3NF не могу понять, вроде есть функциональные зависимости имя->описание, имя->изображение? Или все же они от ключа зависят?

.

От ключа то в таблице все зависят, на то он и ключ. Однако, для нарушения 3НФ, НФБК нужны транзитивные зависимости атрибутов.
Для этого надо, чтобы не было зависимости имя -> номер (Т.е. имя тоже не оказалось бы ключем, не уникально), а из фразы "вроде есть функциональные зависимости имя->описание, имя->изображение" удалить слово "вроде".
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517456
wetmwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ennor Tiegael, допустим, у меня будет только одно фото, и категория не будет содержать подкатегорий в отличие от Яндекс-Маркета. Задача пока что учебная. Я выделял сущности "Товар", "Категория" и "Поставщик", где "Товар" принадлежит одной "Категории" и одному "Поставщику".

vadiminfo, получается у меня есть зависимости номер->имя, имя->описание и имя->изображение, т.е. есть транзитивные зависимости, которые нужно убрать для 3NF, а убрать зависимость имя -> номер нужно для НФБК?
Если я вас верно понял, то нужно разбить таблицу "Товар".
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517526
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wetmwl
vadiminfo, получается у меня есть зависимости номер->имя, имя->описание и имя->изображение, т.е. есть транзитивные зависимости, которые нужно убрать для 3NF, а убрать зависимость имя -> номер нужно для НФБК?

Если я вас верно понял,...

Вы не верно поняли меня. "убрать зависимость имя -> номер" нужно не для НФБК, а для того, что зависимость была транзитивный: при наличии имя -> номер зависимости не транзитивны . Т.е. для наличия данных транзитивных зависимостей нужно, чтобы имя было не уникально. Но если оно не уникально, то под вопросом окажутся зависимости имя->описание и имя->изображение.

Потому пока не очевидно что "получается у меня есть...т.е. есть транзитивные зависимости", т.е. преждевременно " разбить таблицу "Товар"".

Вам нужно все же выяснить зависимости. Пока у Вас ясно только, что уникален номер. Теперь надо выяснять имя уникально или нет: может быть два одинаковых имени или нет там у вас в таблице "Товар"?
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517871
wetmwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имя тоже у меня уникально. Значит, 3NF у меня есть.

Ах вот, почему я путаюсь: в части источников написано:
"ни один неключевой атрибут R не находится в транзитивной функциональной зависимости от потенциального ключа R", а в другом
"каждый неключевой атрибут нетранзитивно зависит от первичного ключа".

Если не ошибаюсь, то НФБК тоже есть, потому что у меня ключи не зависят ни от одного из неключевых атрибутов.
Многозначных зависимостей я не нашел, значит, 4NF.
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517929
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wetmwlИмя тоже у меня уникально. Значит, .
Относительно, рассмотренных Вами ранее зависимостей. Если Вы уверенны, что нет других, то "3NF у меня есть"

wetmwlЕсли не ошибаюсь, то НФБК тоже есть,
.
Ну у Вас пока не найдено в принципе транзитивных зависимостей, а для нарушения НФБК нужна хоть одна - любая.
Для 3NF - "неключевого" атрибута.
У Вас же, вроде, нет пока составных ключей, а от составных все зависят.
Потому о ситуации "в 3NF, но не НФБК" говорить слишком рано.

wetmwlМногозначных зависимостей я не нашел, значит, 4NF.
Значит не найдено нарушения 4NF. Это формально не означает "4NF": не всегда же "мы не нашли" = "нет на самом деле".
Но, скорее всего, в реальном проекте более чем достаточно того, что о 4NF вообще вспомнили.
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38517999
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опечатка (комп плохо набивает буквы е и н):

У Вас же, вроде, нет пока составных ключей, а от составных все зависят.

следует читать

У Вас же, вроде, нет пока составных ключей, а от не составных все зависят. Т.е. это атрибуты сами ключи и транзитиво зависть не могут.
...
Рейтинг: 0 / 0
Подскажите по нормализации базы данных
    #38518900
wetmwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрю, есть ли еще зависимости, хотя на первый взгляд их тут больше не осталось. Вроде стало теперь более понятно с этими нормальными формами, спасибо.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите по нормализации базы данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]