ТИПИ ВІДНОСИН

Тепер перейдемо до вивчення відносин У цьому описі часто будуть розглядатися аналогією з визначеннями, що стосуються кортежів, які були сформульовані в попередньому розділі, але стосовно відносин має бути приведене набагато більше інформації порівняно з кортежами, тому відповідний матеріал був розбитий на кілька розділів: у розділі 63 розглядаються типи ставлення, в розділі 64 – Значення відносин, а в розділі 65 – змінні відносини (Relation variable, або скорочено relvar)

Спочатку розглянемо точне визначення терміна ставлення Значення відношення (або просто відношення), допустимо г, складається з заголовка і тела4, які відповідають визначенням, наведеним нижче

■ Тема відносини r являє собою заголовок кортежу, визначення кото рого наведено в розділі 62 Ставлення r має такі ж атрибути (следова тельно, такі ж імена і типи атрибутів) і таку ж ступінь, як заголовок

■ Тіло відносини r являє собою безліч кортежів, що мають один і той же заголовок кардинальність відносини r визначається як кардинальність цієї множини (Взагалі кажучи, Кардинально безлічі називається коли кість елементів множини)

Тип відношення r визначається заголовком r і має такі ж атрибути (отже, імена і типи атрибутів) і ступінь, як і сам заголовок Нижче наведено точне визначення імені типу ставлення

RELATION {А1 Т1, А2 Т2, .., An Tn}

А тут показаний приклад відносини (він аналогічний, але не ідентичний відношенню, показаному на рис 46 в розділі 4)

Це ставлення має наступний тип

RELATION { MAJOR_P# P#, MINOR_P# P#, QTY QTY }

4 Якщо розглядається звичайне зображення відносини у вигляді таблиці, то заголовок відповідає рядку імен стовпців, а тіло – безлічі рядків з даними У літературі заголовок іменується також схемою (відносини) або іноді просто схемою Крім того, заголовок іноді називають змістом (intension), і в такому випадку для позначення тіла застосовується термін розширення (extension)

У неформальному викладі прийнято виключати з заголовка відносини імена типів і показувати тільки імена атрибутів Тому наведене вище відношення можна

неформально представити таким чином

У мові Tutorial D для позначення цього відносини можна використовувати наступне вираз

RELATION {

TUPLE {MAJOR_P # Р # (P1), MINOR_P # P # (P2), QTY QTY (5)},

TUPLE { MAJOR_P# P#(P1),MINOR_P# P#(P3), QTY QTY(3) }    ,

TUPLE { MAJOR_P# P#(P2),MINOR_P# P#(P3), QTY QTY(2) }    ,

TUPLE { MAJOR_P# P#(P2),MINOR_P# P#(P4), QTY QTY(7) }    ,

TUPLE { MAJOR_P# P#(P3),MINOR_P# P#(P5), QTY QTY(4) }    ,

TUPLE{ MAJOR_P# P#(P4),MINOR_P# P#(P6), QTY QTY(8)    } }

Це вираз являє собою приклад виклику селектора відносини, який має наступний загальний формат

RELATION   [   &ltheading&gt   ]   {   &lttuple exp commalist&gt   }

Тут необовязковий параметр &ltheading&gt, представляє собою розділений комами список атрибутів , укладений у фігурні дужки, потрібно, тільки якщо не заданий параметр з позначенням списку вираженні кортежу < tuple exp coimalist&gt.  Безумовно, всі вирази кортежу < tuple exp> повинні ставитися до одного і того ж типу кортежу, а цей тип кортежу повинен бути точно таким же, як і той, що визначений параметром &ltheading&gt, якщо задано цей параметр

Слід зазначити що ставлення, строго кажучи, не містить кортежів воно містить тіло а тіло в свою чергу включає в себе кортежі Але при неформальному спілкуванні зручно формулювати свої висловлювання так, як якщо б відносини безпосередньо включали кортежі, і ми у всій цій книзі будемо слідувати цим угодам, що дозволяє спростити виклад матеріалу

Як і у випадку кортежів, відношення ступеня один називається унарним, ставлення

ступеня два бінарним, відношення ступеня три тернарного (І тд) загалом, відношення ступеня п називається п-арним Ставлення нульової ступеня (тобто відношення без атрибутів) прийнято називати нуль-арним (Останній варіант ставлення докладно розглядається в наступному розділі) Крім того, слід зазначити, що справедливі наведені нижче твердження

■ Кожна підмножина заголовка є заголовком (як і у випадку кортежів)

■ Кожна підмножина тіла є тілом

В обох випадках розглядається підмножина може, зокрема, бути порожнім підмножиною

Генератор типу RELATION

У мові Tutorial D передбачений генератор типу RELATION, який може бути викликаний (наприклад) у визначенні деякої змінної відносини Відповідний приклад наведено нижче

VAR PART_STRUCTURE ..

RELATION { MAJOR_P# P#, MINOR_P# P#, QTY QTY } ..

(Тут для спрощення виключені ті частині визначення, які не відносяться до даної теми) Загалом, генератор типу RELATION має таку ж форму, як і генератор типу TUPLE, за винятком того, що замість ключового слова TUPLE застосовується ключове слово RELATION Тип відношення, вироблений внаслідок конкретного виклику генератора типу RELATION (наприклад, тільки що показаний у визначенні змінної відносини PART_STRUCTURE), безумовно, є згенерованим типом

Кожен тип ставлення має відповідний оператор селектора відносини Вище вже було наведено приклад виклику селектора для щойно показаного типу ставлення Ставлення, отримане за допомогою цього виклику селектора, може бути присвоєно змінної відносини PART_STRUCTURE або перевірено на рівність з іншим ставленням такого ж типу Зокрема, слід зазначити, що необхідною і достатньою умовою того, щоб два відношення належали до одного і того ж типу, є наявність в них однакових атрибутів Необхідно також враховувати, що атрибути будь-якого заданого типу ставлення самі можуть належати до будь-якого типу (вони можуть навіть належати до деякого типу кортежу або до деякого іншого типу відносини)

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*