Определение функциональных зависимостей отношений и их нормальных форм - PullRequest
0 голосов
/ 24 июля 2011

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

1) Дана следующая логическая схема: Отношения product_sales

POS     Zone     Agent   Product_Code   Qualification   Quantity_Sold
123-A   Zone-1   A-1     P1             8               80
123-A   Zone-1   A-1     P1             3               30
123-A   Zone-1   A-2     P2             3               30
456-B   Zona-1   A-3     P1             2               20
456-B   Zone-1   A-3     P3             5               50
789-C   Zone-2   A-4     P4             2               20

Предполагая, что: • Точки продаж сгруппированы в Зону. • В каждой торговой точке есть агенты. • Каждый агент работает в одном POS. • Два агента из одинаковых торговых точек не могут продавать один и тот же продукт. • Для каждого продукта, проданного агентом, ему присваивается квалификация в зависимости от продукта и проданное количество.

a) Указать 4 функциональных зависимости.
б) Какова нормальная форма этой структуры.

Ответы [ 2 ]

1 голос
/ 30 июля 2011

В своем комментарии вы сказали:

Ну, согласно теории, которую я прочитал, я думаю, что это может быть, но у меня много сомнений: POS → Зона, {POS, Агент} →Zone, Agent → POS, {Agent, Product_code, Quantity_Sold} → Qualification -

Я думаю, что это хорошее усилие.

  1. Я думаю, POS-> Zone - это правильно.
  2. Я не думаю, что {POS, Агент} → Зона совершенно права.Если вы посмотрите на пример данных и немного подумаете, я думаю, вы найдете, что Agent-> POS, и этот Agent-> Zone.
  3. Я не думаю, что {Агент, Код_продукта, Количество_Продано} → Квалификация вполне верна.Требование гласит: «Для каждого продукта, проданного агентом, ему присваивается квалификация в зависимости от продукта и проданного количества».Важной частью этого является «Квалификация в зависимости от продукта и проданного количества».Квалификация зависит от продукта и количества, поэтому {Код продукта, Количество} -> Квалификация.(Ничто в требовании не говорит мне, что квалификация может отличаться для идентичных заказов от двух разных агентов.)

Итак, на основании вашего комментария, я думаю, что у вас есть эти функциональные зависимости до сих пор.

  • POS-> Зона
  • Агент-> POS
  • Агент-> Зона
  • Код продукта, Количество-> Квалификация

Но вам не хватает хотя бы одного, который существенно влияет на определение ключей.Вот требование.

Два агента с одинаковыми точками продаж не могут продавать один и тот же продукт.

Как вы выражаете функциональную зависимость, подразумеваемую этим требованием?

1 голос
/ 24 июля 2011

Чтобы вы начали находить 4 функциональные зависимости, подумайте, какие атрибуты зависят от другого атрибута:

например: зависит ли Зона от POS?(если так, POS -> Зона ) или POS зависит от Зоны?(в этом случае Зона -> POS ).

Четыре из пяти ваших утверждений что-то говорят о зависимости между атрибутами (или комбинациями нескольких атрибутов).


Что касается нормализации, то здесь есть (относительно) понятное руководство здесь .Фраза «ключ, весь ключ и ничего кроме ключа» также является хорошим способом запомнить 1-ю, 2-ю и 3-ю обычные формы.

...