Определение функциональных зависимостей отношений и их нормальных форм

Я готовлюсь к тесту базы данных, и в учебном пособии есть несколько (много) упражнений по нормализации БД и функциональной зависимости, но учитель не делал подобных упражнений, поэтому я хотел бы, чтобы кто-нибудь помог мне понять это, чтобы атаковать остальные 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. • Два агента в одних и тех же торговых точках не могут продавать один и тот же продукт. • Для каждого продукта, проданного агентом, ему присваивается Квалификация в зависимости от продукта и проданного количества.

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


person franvergara66    schedule 24.07.2011    source источник
comment
Ответ на вопрос не помогает вам, он делает работу вместо вас. Поэтому опубликуйте свой ответ для четырех функциональных зависимостей и свой анализ того, в какой нормальной форме находится это отношение, и мы поможем вам улучшить ваш анализ и понимание.   -  person Mike Sherrill 'Cat Recall'    schedule 24.07.2011
comment
Ну, по прочитанной теории думаю может быть, но у меня много сомнений: POS → Zone, {POS, Agent} → Zone, Agent → POS, {Agent, Product_code, Quantity_Sold} → Qualification   -  person franvergara66    schedule 24.07.2011
comment
@Mekhiah: я добавил тег «домашнее задание», потому что это пост типа домашнего задания, а не вопрос :) Согласен на Catcall   -  person Tomas    schedule 25.07.2011


Ответы (2)


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

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

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


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

person Richard Inglis    schedule 24.07.2011
comment
POS сгруппированы в зону, поэтому: POS → Зона, В каждой точке продаж есть агенты: {POS, Агент} → Зона, Каждый агент работает в одной POS: Агент → POS, Для каждого продукта, проданного агентом, это присвоена Квалификация в зависимости от продукта и проданного количества: {Агент, Код_продукта, Проданное количество} → Квалификация, я думаю, что это правильный ответ, вы могли бы поправить меня, если я ошибаюсь? - person franvergara66; 24.07.2011
comment
Второй (в каждой торговой точке есть агенты) особо ничего вам не говорит... - person Richard Inglis; 25.07.2011
comment
tnx, но я так и не понял, как определить нормальную форму конструкции - person franvergara66; 25.07.2011

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

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

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

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

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

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

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

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

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

person Mike Sherrill 'Cat Recall'    schedule 29.07.2011