Требуется помощь в нормализации дизайна базы данных (5nf) - PullRequest
8 голосов
/ 05 августа 2010

Можете ли вы, ребята, показать мне, как получить этот ERD в 5-й нормальной форме? Вчера мы выполнили задание, в которое вошел реальный клиент и объяснил нам, в чем его нужда. Моя группа разработала эту модель. Я пытаюсь сделать шаг вперед и посмотреть, смогу ли я получить ее в 5-й нормальной форме, чтобы я Я могу понять это лучше, так как на следующей неделе мы будем делать еще одну групповую ERD, которая должна быть в 5nf. Дело в том, что я не знаю, с чего начать, и книга не доходит до меня. вы, ребята, можете мне помочь. Эрд модель http://img534.imageshack.us/img534/2118/capturekk.jpg

Новая информация "Потребности фальшивых клиентов"

У клиента 2 отделения "Лаб 1, Лаборатория 2 ", которая заказывает медицинские товары из его, как перчатки и пи домашних животных и т.д .. отделы выросли, и он хочет отслеживать то, что в инвентарь, что продают продавцы у кого лучшая цена и какая стоимость центр это пришло.

То, как он объяснил, что товар заказан, что человек идет к нему и просит поставки он затем записывает, что лаборатория человек от имени человека и какой центр затрат, чтобы выставить счет. но он также хочет отслеживать, что было куплена по дате и что есть в наличии и что нужно покупать. Он также привел пример, который хотят некоторые пользователи товары от конкретного поставщика, которые может не иметь лучшие цены, и он также получает некоторые каталоги в письма с ценами тоже, что он хочет трек.

Я прошу прощения, если он перепутался, но это все из памяти.

Ответы [ 2 ]

4 голосов
/ 05 августа 2010

Я собираюсь высунуть свою шею и сказать, что ваша текущая схема на самом деле не имеет права на 5NF. Взяв цитату из Википедии, он говорит, что большинство таблиц 4NF уже соответствуют 5NF:

Использование Только в редких случаях Таблица 4NF не соответствует 5NF. Эти это ситуации, в которых сложный ограничения реального мира, регулирующие допустимые комбинации значений атрибутов в таблице 4NF не подразумевается в структура этой таблицы. Если такой таблица не нормирована на 5НФ, бремя поддержания логического согласованность данных в пределах стол должен нести частично приложение, ответственное за вставки, удаления и обновления Это; и есть повышенный риск что данные в таблице будут стать противоречивым. В отличие от 5NF дизайн исключает возможность такие несоответствия.

http://en.wikipedia.org/wiki/Fifth_normal_form

Возможно, цель не в том, чтобы сделать вашу базу данных 5NF, а в том, чтобы понять ее структуру по сравнению с 5NF и аргументировать, почему она уже может быть в 5NF.

Обновление: При чтении какой-либо формы консенсуса из комментариев кажется, что ваш дизайн уже может быть в 5NF, будь то дизайн или случайно с предыдущего прохода нормализации.

1 голос
/ 05 августа 2010

Отказ от ответственности: Не зная вашей бизнес-логики, я могу быть совершенно не прав с некоторыми из следующих предложений:

Хорошо, несколько вещей, которые я видел в вашей схеме базы данных.

  1. Ваша таблица МВЗ выглядит как таблица поиска и таблица связей.Таким образом, если у вас есть определенное количество центров затрат, скажем, например, 5, но 1000 пользователей, то в этой таблице будет 5000 записей, в которых хранится имя центра затрат (при условии, что назначение центра затрат не уникально для каждого пользователя).Возможно, вы захотите разделить ассоциацию пользователей на отдельную таблицу, которая имеет свои собственные PK и FKs costcenterId и userId.
  2. Таблица инвентаризации, в которой, как я полагаю, хранится сумма запаса для предмета, должна толькоНужно в количествах, не уверен, для чего описание.Если описание не уникально для каждого инвентаря предмета, вы можете разделить его на собственную таблицу поиска и сослаться на него в таблице инвентаря.
  3. Вы храните "lineQuantity" в таблице поставщиков.Для чего этот столбец?Похоже, что это каким-то образом относится к определенному заказу (количество купленного товара?). Если это так, вы захотите разделить его на собственную таблицу и связать его с заказом, а не с продавцом.не зная точно, что такое lineQuantity, хотя это предложение может быть совершенно неверным.
  4. Последнее предложение не уверено, имеет ли это значение для вашего класса.Вы определяете все ваши типы данных как CHAR (10), возможно, вы захотите изменить их на фактические типы данных, которые вы будете использовать для базы данных.
...