Комбинированный метод проектирования

Функциональные зависимости атрибутов от первичного ключа сущности находятся легко, а именно, первичный ключ сущности функционально определяет все ее атрибуты. Комбинированный метод может помочь в отыскании так называемых “перекрестных” зависимостей между сущностями. Рассмотрим примеры.

Пример 43. Спроектируем комбинированным методом базу данных для предметной области МАГАЗИНЫ. В таблице 5 представлены сущности и их атрибуты.

Таблица 5. Сущности и их атрибуты предметной области МАГАЗИНЫ

Сущности Атрибуты сущностей Первичный ключ Обозначение
ПОСТАВЩИКИ НомерПоставщика да А
  Фио   B
Адрес
Телефон
Директор
ТОВАРЫ НомерТовара да С
  НаименованиеТовара D
Цена
МАГАЗИНЫ НомерМагазина да E
  НазваниеМагазина S
Адрес
ОТДЕЛЫ КодОтдела да K
  НазваниеОтдела L
Заведующий
ТИПЫ_ТОВАРОВ КодТипа да M
НазваниеТипа N

На заданном множестве атрибутов U = ABCDESKLMN для каждой сущности будут справедливы зависимости F = {A → B, C→ D, E → S, K → L, M → N,...}. Многоточия должны быть заменены “перекрестными” зависимостями между сущностями. Найдем их из описания ER-диаграммы, причем для поиска “перекрестных” зависимостей класс принадлежности сущности не имеет значения.

1. ПОСТАВЩИКИ (М) поставляют (М) ТОВАРЫ

2. ТОВАРЫ (М) продаются_в (М) МАГАЗИНАХ

3. МАГАЗИНЫ (1) содержат (М) ОТДЕЛЫ

4. ТОВАРЫ (М) поступают_в (1) ОТДЕЛЫ

5. ТОВАРЫ (М) имеют (1) ТИПЫ

По определению функциональных зависимостей, данному в разделе 1.3.1, каждому значению набора атрибутов в левой части зависимости в каждый момент времени соответствует точно одно значение атрибута в правой части зависимости. Отсюда следует, что только выделенные связи могут быть использованы для получения “перекрестных” зависимостей. Связь 3 даст зависимость ОТДЕЛЫ ® МАГАЗИНЫ, или, используя первичные ключи, K ® E. Аналогично связь 4 даст зависимость ТОВАРЫ ® ОТДЕЛЫ или C ® K, связь 5 – зависимость ТОВАРЫ ® ТИПЫ или C ® M.

Заменяем многоточия этими зависимостями. В результате получаем

F = {A → B, C→ D, E → S, K → L, M → N, K → E, C → K, C → M}

или, используя правило объединения зависимостей по правым частям (см. раздел 1.3.2):

F = {A → B, C→ DKM, E → S, K → LE, M → N}

Таким образом, имеем исходные данные для проектирования базы данных методом синтеза: множество атрибутов U = ABCDESKLMN и множество функциональных зависимостей F, определенное на U. Выполним ускоренный синтез.

Строим расширенное множество зависимостей:

= {A → B, C→ DKMLESN, E → S, K → LES, M → N}.

Условно неизбыточное покрытие 0 = ℱ.

Добавляем тривиальную зависимость U → Æ и строим диаграмму зависимостей, на которой выполняем операцию транзитивной редукции зависимостей. Результат показан на рисунке 18.

Рисунок 18 – Диаграмма зависимостей для предметной области МАГАЗИНЫ

Получаем результирующую декомпозицию отношений:

R1 = AC; R2 = C DKM; R3 = A B; R4 = K LE;

R5 = M N; R6 = E S;

или для реальных данных:

R1: Поставщики_Товары или Поставки (НомерПоставщика, НомерТовара);

R2: Товары (НомерТовара, НаименованиеТовара, Цена, КодОтдела, КодТипа);

R3: Поставщики (НомерПоставщика, ФИО, Адрес, Телефон, Директор);

R4: Отделы (КодОтдела, НазваниеОтдела, Заведующий, НомерМагазина);

R5: Типы_Товаров (КодТипа, НазваниеТипа);

R6: Магазины (НомерМагазина, НазваниеМагазина, Адрес).

Набор атрибутов AC является минимальным суперключом, так как

AC+ = U, но A+ ≠ U и C+ ≠ U.

Пример 44. Для предметной области АВТОВОКЗАЛ в таблице 6 перечислены сущности и их атрибуты.

Таблица 6. Сущности и их атрибуты для предметной области АВТОВОКЗАЛ

Сущности Атрибуты Первичный ключ Обозначение
ВОДИТЕЛИ IDВодителя да А
  ФиоВодителя   B
Адрес
Телефон
Возраст
АВТОБУСЫ ГосНомер да С
  Тип D
Модель
РЕЙСЫ IDРейса да E
  НомерРейса K
Куда
ДатаВремяОтправ
ПАССАЖИРЫ IDПассажира да Р
  ФиоПас L
АдресЭлПочты

Поскольку первичные ключи функционально определяют все атрибуты сущностей, включим эти зависимости в множество F: F = {A → B, C → D, E → K, P → L,...}

Здесь многоточия должны быть заменены “перекрестными” зависимостями между сущностями, которые можно найти из описания ER-диаграммы:

1. ВОДИТЕЛИ (М) ведут (1) АВТОБУСЫ

2. АВТОБУСЫ (М) отправляются_в (М) РЕЙСЫ

3. ВОДИТЕЛИ (М) назначаются_на (М) РЕЙСЫ

4. ПАССАЖИРЫ (М) отправились_в (1) РЕЙСЫ

По определению функциональных зависимостей, данному в разделе 1.3.1, каждому значению набора атрибутов в левой части зависимости в каждый момент времени соответствует точно одно значение атрибута в правой части зависимости. Отсюда следует, что только выделенные связи используются для получения “перекрестных” зависимостей. Связь 1 даст зависимость ВОДИТЕЛИ ® АВТОБУСЫ, или, используя первичные ключи, A ® C. Аналогично связь 4 даст зависимость P ® E. Заменяя многоточия этими зависимостями, получим

F = {A → B, C → D, E → K, P → L, A ® C, P ® E}

или, используя правило объединения зависимостей по правым частям (см. раздел 1.3.2):

F = {A → BC, C → D, E → K, P → LE}

Таким образом, имеем исходные данные для проектирования базы данных методом синтеза: множество атрибутов U = ABCDEKPL и множество функциональных зависимостей F, определенное на U. Выполним ускоренный синтез.

Строим расширенное множество зависимостей

ℱ= {A → BCD, C → D, E → K, P → LEK}

Условно неизбыточное покрытие 0 = ℱ.

Добавляем тривиальную зависимость ABCDEKPL → Æ и строим диаграмму зависимостей, изображенную на рисунке 19, на которой выполняем операцию транзитивной редукции зависимостей

Рисунок 19 – Диаграмма зависимостей для предметной области АВТОВОКЗАЛ

Результирующая декомпозиция будет такой (первичные ключи выделены):

R1 = AP; R2 = P LE; R3 = A BC; R4 = E K; R5 = C D

или на реальных данных:

R1: Водители_Пассажиры (IDВодителя, IDПассажира);

R2: Пассажиры (IDПассажира, ФиоПас, АдресЭлПочты,IDРейса);

R3: Водители (IDВодителя, ФиоВодителя, Адрес, Телефон, ГосНомер);

R4: Рейсы (IDРейса, НомерРейса, Куда, ДатаВремяОтправ);

R5: Автобусы (ГосНомер, Тип, Модель).

Заметим, что набор атрибутов AP является минимальным суперключом, так как

AP+ = APBCDEKL = U и A+ =ABCD ≠ U; P+ = PLEK≠ U.

Если для какой-либо сущности существует возможный первичный ключ, то его нужно отделить от остальных атрибутов сущности, как это сделано в примере 45.

Пример 45. Предметная область выбрана такая же, как в примере 44, в которой добавлена еще одна сущность БИЛЕТЫ, а для сущности ПАССАЖИРЫ определен возможный первичный ключ НомерПаспорта, который выделен из набора неключевых атрибутов L отдельным обозначением S.

Таблица 7. Сущности и их атрибуты для предметной области АВТОВОКЗАЛ

Сущности Атрибуты Первичный ключ Обозначение
ВОДИТЕЛИ ID_водителя да А
  ФиоВодителя   B
Адрес
Телефон
Возраст
АВТОБУСЫ ГосНомер да С
  Тип D
Модель
РЕЙСЫ IDРейса да E
  НомерРейса K
Куда
ДатаВремяОтправ
ПАССАЖИРЫ ID_пассажира да P
  ФиоПас L
АдресЭлПочты
НомерПаспорта Возможный первичный ключ S
БИЛЕТЫ НомерБилета да O
  Цена   X
МестоВАвтобусе   Y

Следует отметить, что отдельные обозначения целесообразно назначать не только для возможных первичных ключей, но и для зависимых атрибутов, не являющихся первичными или возможными первичными ключами. Например, если мы хотим связать функциональной зависимостью атрибуты “Цена” и “МестоВАвтобусе” (“Цена” зависит от атрибута “МестоВАвтобусе”), как показано в таблице 6, то этим атрибутам также нужно дать отдельные обозначения X и Y соответственно. Поскольку первичный и возможный первичный ключи определяют все атрибуты сущности, можно написать часть функциональных зависимостей, входящих в множество F:

F = {A → B, C→ D, E → K, P → L, P → S, S → P, S → L, O → X, O → Y, Y → X,... }

В это множество нужно добавить “перекрестные” зависимости, которые легко определяются из соответствующего описания ER-диаграммы:

1. АВТОБУСЫ (М) отправляются в (М) РЕЙСЫ

2. ВОДИТЕЛИ (М) ведут (1) АВТОБУСЫ

3. ПАССАЖИРЫ (1) купили (1) БИЛЕТЫ

4. ПАССАЖИРЫ (М) отправились в (1) РЕЙСЫ

5. БИЛЕТЫ (М) куплены на (1) РЕЙСЫ

6. ВОДИТЕЛИ (М) назначены на (М) РЕЙСЫ

По определению функциональной зависимости атрибутов для поиска “перекрестных” зависимостей связи М:М из рассмотрения исключаются. Связи, в которых проявляются функциональные зависимости, выделены жирным шрифтом.

Связь 2 даст зависимость ВОДИТЕЛИ → АВТОБУСЫ или A → C, связь 3 –зависимость ПАССАЖИРЫ → БИЛЕТЫ и БИЛЕТЫ → ПАССАЖИРЫ или P → O и O → P, связь 4 – зависимость ПАССАЖИРЫ → РЕЙСЫ или P → Е, связь 5 – зависимость БИЛЕТЫ → РЕЙСЫ или О → Е.

Добавляя указанные здесь зависимости в множество F, получаем

F = {A → B, C→ D, E → K, P → L, P → S, S → P, S → L, O → X, O → Y, Y → X,

A → C, P → O, O → P, P → Е, О → Е}

или, воспользовавшись правилом объединения правых частей функциональных зависимостей (см. раздел 1.3.2) множество F можно привести к виду:

F = {A → BC, C→ D, E → K, P → LSOE, S → PL, O → XYPE, Y → X}

Далее продолжаем синтез.

Строим расширенное множество зависимостей:

= {A → BCD, C→ D, E → K, P → LSOEXYK, SPLOEKXY,

OXYPELSK, Y → X} и условно неизбыточное покрытие 0 = .

Выделенные жирным шрифтом зависимости эквивалентны. Оставляем одного представителя, например, первую из эквивалентных зависимостей.

Добавляя тривиальную зависимость U → Æ, строим диаграмму зависимостей, на которой выполняем операцию транзитивной редукции зависимостей:

1 A BCDEK P LSOXY → Æ

2 PLSOE X Y K 3 ABC D


4 EK 5 YX 6 CD

Рисунок 19 – Диаграмма зависимостей для предметной области АВТОВОКЗАЛ с сущностью БИЛЕТЫ и с альтернативным первичным ключом для одной из сущностей

Получаем результирующую декомпозицию отношений:

R1 = AP; R2 = P LSOEY; R3 = A BС;

R4 = E K; R5 = Y X; R6 = C D;

или для реальных данных:

R1: Водители_Пассажиры (ID_водителя, ID_пассажира);

R2: Пассажиры (ID_пассажира, ФиоПас, АдресЭлПочты,НомерПаспорта,

НомерБилета, IDРейса, МестоВАвтобусе);

R3: Водители (ID_водителя, ФиоВодителя, Адрес, Телефон, Возраст, ГосНомер);

R4: Рейсы (IDРейса, НомерРейса, Куда, ДатаВремяОтправ);

R5: Место_Цена (МестоВАвтобусе, Цена);

R6: Автобусы (ГосНомер, Тип, Модель).

Как и в примере 44 набор атрибутов AP является минимальным суперключом.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: