ЗНАЧЕННЯ ВІДНОСИН

У цьому розділі ми приступимо до більш докладного вивчення відносин (тобто значень відносин) як таких Перш за все, необхідно відзначити, що відносини мають певні властивості всі ці властивості безпосередньо випливають з визначення ставлення, наведеного в попередньому розділі, і всі вони є дуже важливими Спочатку сформулюємо розглядаються властивості, а потім докладно їх опишемо Будь-яке конкретне ставлення має властивості, зазначеними нижче

1 Кожен кортеж містить точно одне значення (відповідного типу) для каж дого атрибута

2 Атрибути не характеризуються небудь упорядкуванням (наприклад, зліва на право)

3 Кортежі нехарактеризуються небудь упорядкуванням (наприклад, зверху вниз)

4 Відносно відсутні дублікати кортежів

Для ілюстрації цих властивостей скористаємося ставленням з даними про постачальників, наведеним на рис 38 (див стор 119) Для зручності це відношення знову показано на рис 61, але заголовок в ньому розширено для включення імен типів

210 Частина II Реляційна модель

Примітка Формально ми повинні були б розширити також тіло для включення імен атрибутів і типів Наприклад, запис S # для постачальника si повинна була б фактично виглядати наступним чином

S#   S#   S#(S1)

Рис 61 Ставлення з даними про постачальників, наведене на рис 38

Але для спрощення залишимо тіло цього відношення в такому ж вигляді, в якому воно було спочатку представлено на рис 38

1&nbsp&nbsp&nbsp Відносини нормалізовані

Як було зазначено в розділі 62, кожен кортеж містить точно одне значення для кожного зі своїх атрибутів, тому можна зробити незаперечне висновок, що кожен кортеж в кожному відношенні містить точно одне значення для кожного зі своїх атрибутів Ставлення, яке відповідає цій властивості, називаєтьсянормалізованим інакше думку можна висловити таким чином, що відношення знаходиться в першій нормальній форме5, 1НФ Згідно з цим визначенням, відношення, показане на рис 61, є нормалізованим

Примітка Це перша властивість може здатися цілком очевидним і воно дійсно є таким, особливо у звязку з тим, що (як міг вже помітити читач) всі відносини нормалізовані за визначенням Тим Проте, з цієї властивості випливають деякі важливі слідства Див підрозділ Атрибути зі значеннями у вигляді відносин нижче в цьому розділі, а також главу 19 (де йдеться про відсутньої інформації)

2&nbsp&nbsp Атрибути не характеризуються небудь упорядкуванням (наприклад, зліва направо) Як вже було сказано, компоненти кортежу нехарактеризуються небудь упорядкуванням (наприклад, зліва направо), і аналогічне твердження є

справедливим стосовно до атрибутів відносини (фактично за тією ж

причини, а саме, у звязку з тим, що заголовок відносини являє собою безліч атрибутів, а безлічі в математиці не характеризуються впорядкуванням своїх елементів) Однак якщо ми зображуємо ставлення на папері у вигляді таблиці, то ми, природно, змушені показувати стовпці цієї таблиці в певному порядку розташування зліва направо, але читач повинен завжди враховувати, що цей порядок не має значення Наприклад, на рис 61 стовпці відносини цілком могли бути показані (припустимо) у порядку зліва направо, SNAME, CITY, STATUS, S #, і цей малюнок все одно представляв би те ж відношення,

5 Ця форма отримала назву першої у звязку з тим, що можуть бути також визначені деякі більш високі нормальні форми – друга, третя і тд (Див глави 12 і 13)

щонайменше, якщо воно розглядається як обєкт реляційної моделі6 Тому не може бути такого поняття, як перший атрибут або другий атрибут (І тд), а також не може йти мова про наступний атрибуті (Тобто щодо не визначено поняття проходження) атрибути завжди повинні бути вказані по іменах, а не по їх позиціях Завдяки цьому усувається значна частина передумов для виникнення помилок і появи вкрай заплутаних програм Наприклад, відсутня можливість визначати методи, не передбачені в системі і дозволяють якимось чином перебирати один атрибут за іншим, просто нарощуючи покажчик Ця ситуація відрізняється в кращу сторону в порівнянні з багатьма системами програмування, часто допускають можливість вільно чи мимоволі користуватися тим, що логічно не повязані елементи фізично розташовані близько один від одного, незважаючи на те, що це призводить до створення програм, що можуть призвести численними помилками

3&nbsp&nbsp Кортежі нехарактеризуються небудь упорядкуванням (наприклад, зверху вниз) Ця властивість випливає з того факту, що тіло відносини також являє собою безліч (кортежів) ще раз підкреслимо, що множини в математиці не впорядковані Але зображуючи відносини на папері у вигляді таблиці, ми змушені показувати рядки цієї таблиці в деякому порядку розташування зверху вниз тим не менш, читач повинен враховувати, що цей порядок не має значення Наприклад, на рис 61 рядки цілком можна було б також показати в зворотному порядку, притому що сам малюнок і раніше представляв би те ж відношення Тому не існує такого поняття, як перший кортеж, пятий кортеж або 97-й кортеж відносини, крім того, не існує такого поняття, як наступний кортеж; іншими словами, у відносинах не визначена позиційна адресація і немає поняття Слідування. Заслуговує уваги те, що якби зазначені поняття були визначені, потрібні були б також деякі додаткові операції, наприклад, виконати вибірку л-го кортежу, Вставити цей новий кортеж тут, перемістити цей кортеж звідси сюди і тд А оскільки існує один і тільки один спосіб подання інформації в реляційної моделі (що є безпосереднім наслідком інформаційного принципу Кодда), дуже потужним засобом реляційної моделі є те, що для обробки цієї інформації достатньо мати одне і тільки одне безліч операторів

Розглянемо останнє зауваження більш докладно Фактично не викликає сумніву таке твердження, що якщо існує N різних способів подання інформації, то потрібно N різних множин операторів, а якщо N> 1, то доводиться реалізовувати, документувати, пояснювати студентам, вчити самим, запамятовувати і використовувати більше операторів Але введення кожного додаткового оператора призводить лише до зростання складності, а не виразною мощі Не існує будь-яких корисних операторів, які можуть застосовуватися, тільки якщо N> 1, а не N = 1 Ця тема буде більш докладно розглядатися в главі 26 (див [2612]—[2614] і [2617]), а потім знову зявиться в главі 27

6 З причин, які нас тут не цікавлять, відносини в математиці, на відміну від їх аналогів в реляційної моделі, характеризуються впорядкуванням своїх атрибутів зліва направо (і це зауваження, безумовно, відноситься і до кортежів)

Повернемося до опису самих відносин Безумовно, певні вимоги щодо впорядкування кортежів зверху вниз (а також з упорядкування атрибутів зліва направо) висуваються у звязку з створенням інтерфейсу між базою даних і базовою мовою, таким як С або COBOL (див відомості про курсором SQL і конструкції ORDER BY, наведені в розділі 4) Але ці вимоги накладає базова мова, а не реляційна модель в дійсності базова мова вимагає перетворення невпорядкованих відносин у впорядковані списки, або масиви (кортежі), саме для того, щоб придбали сенс операції, подібні Вибірці п-го кортежу. Аналогічним чином, певні вимоги щодо впорядкування кортежів повинні дотримуватися при поданні результатів запитів для кінцевого користувача Але ці вимоги не входять до складу реляційної моделі як такої швидше, вони складають частину того середовища, в якій визначена сама реалізація цієї реляційної моделі4     Відсутність відносно дублікатів кортежів

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

Примітка Ця властивість також служить для ілюстрації ідеї про те, що поняття відношення і таблиці є різними, оскільки таблиця може включати дублікати рядків (якщо не дотримуються деякі вимоги, дозволяють запобігти таку можливість), а відношення, за визначенням, ніколи не містить будь-яких дублікатів кортежів

І дійсно, це є (або має бути) очевидним, що саме поняття дублікатів кортежів позбавлене сенсу Для спрощення приймемо припущення, що ставлення, наведене на рис 61, має тільки два атрибути, s # і CITY (як показано в розділі 65, інтерпретація цих атрибутів відповідає їх призначенню-Постачальник s # знаходиться в місті CITY), а також припустимо, що ставлення містить кортеж, згідно з яким має місце істинний факт, що постачальник S1 знаходиться в Лондоні У такому випадку, якби ставлення містило дублікат зазначеного кортежу (за умови, що це взагалі можливо), воно просто інформувало б нас про те ж істинному факт вдруге Але якщо щось є істинним, то при багаторазовому повторенні воно не стає більш істинним

Розгорнутий опис проблем, які можуть бути викликані наявністю дублікатів кортежів у відношенні, можна знайти в [63] і [66]

Джерело: Дейт К Дж, Введення в системи баз даних, 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>

*

*