Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Выбор первичных ключей



Можно убедиться, что все отношения в рассматриваемой модели имеют только один потенциальный ключ, поэтому в качестве первичных ключей для каждого отношения выберем единственный имеющийся потенциальный ключ. При этом все первичные ключи получились достаточно простыми. Приведём их в виде таблицы:

Отношение Первичный ключ
Credits {ID, debitorID }
Debitors {ID}
Payment {ID}
User {ID}

Нормализация отношений.

Для ликвидации противоречий в отношениях необходимо провести их нормализацию.

НФ.

Все отношения уже находятся в 1НФ, так как значения всех их атрибутов атомарны, т.е. каждый его кортеж содержит только одно значение для каждого из атрибутов.

НФ.

Отношения “Пользователи”, “Дебиторы” и “Оплаты” имеют единственные и простые потенциальные ключи, поэтому уже находятся в 2НФ.

Рассмотрим отношение “Кредиты”. Обозначим его R1.Оно имеет множество атрибутов A = { ID, Дебитор, Баланс, Дата, Сумма} и неприводимое множество функциональных зависимостей

S = {

{id}->{Сумма},

{id}->{Дата},

{Дебитор}->{Баланс}

}.

Потенциальным ключом в этом отношении является множество K = {ID, Дебитор}.

Это отношение не находится в 2НФ, так как атрибуты “ID” и “Дебитор” приводимо зависят от потенциального ключа (т.е. зависят от части ключа).

Проведём нормализацию этого отношения до 2НФ.

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

R1’ = {

ID,

Дебитор,

Баланс

}

Потенциальным ключом отношении R1’ является множество атрибутов {ID, cinema}.

R1’’ = {

ID,

Сумма,

Дата

}

Потенциальным ключом отношении R1’’ является множество атрибутов {ID}.

Таким образом, исходное отношение “Кредиты” было разбито на отношения R1’ и R1’’, которые находятся в 2НФ, причём нетрудно убедиться, что естественное объединение R1’ и R1’’ даст отношение “Кредиты”.

3НФ

Отношения “Пользователи”, “Дебиторы”, а также отношения R1’ и R1’’, на которые было разбито отношение “Кредиты”, находятся в 2НФ, так как не имеют неключевых атрибутов, которые транзитивно зависят от первичного ключа.

Рассмотрим отношение “Оплаты”. Обозначим его R2. Оно имеет множество атрибутов

A = {ID, Кредитный счет, Сумма, Дата} и неприводимое множество функциональных зависимостей

S = {

{ID} -> { Кредитный счет },

{ID} -> { Дата },

{ Дата } -> { Сумма }

}.

Потенциальным ключом в этом отношении является множество атрибутов K = {ID}.

Это отношение не находится в 3НФ, так как по правилу транзитивности

{ID} -> { Кредитный счет, Дата } ʌ { Дата } -> {Сумма} =>

=> {ID} -> { Сумма },

т.е. атрибуты “ Сумма ” транзитивно зависит от потенциального ключа.

Проведём нормализацию этого отношения до 3НФ.

Для этого выполним декомпозицию этого отношения и разобьём его на две проекции. В первую проекцию включим все атрибуты, входящие в потенциальный ключ. Во вторую проекцию включим неключевые атрибуты, которые нетранзитивно зависят от ключа и через которые осуществляется транзитивная зависимость, в качестве нового потенциального ключа, а также транзитивно зависящий от ключа отношения R2 атрибут.

R2’ = { ID,

Дата,

Кредитный счет

}

Потенциальным ключом отношении R2’ является множество атрибутов {ID}.

R2’’ = {

Дата,

Сумма

}

Потенциальным ключом отношении R2’’ является множество атрибутов {Дата}.

Таким образом, исходное отношение “Оплаты” было разбито на отношения R2’ и R2’’, которые находятся в 3НФ, причём нетрудно убедиться, что естественное объединение R2’ и R2’’ даст отношение “Оплаты”.

В результате, все отношения являются нормализованными до 3НФ. Для тех отношений, которые были разбиты на несколько проекций, зададим новые имена:

R1’ − “Баланс дебитора”,

R1’’ − “Сумма кредита”,

R2’ − “Дата кредитной операции”,

R2’’ − “Сумма оплаты в данном месяце”





Дата публикования: 2014-11-28; Прочитано: 200 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...