ГЕНЕРАТОРИ-ТИПІВ і реляційна модель

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

VAR SALES ARRAY INTEGER [12]

Ця конструкція дозволяє визначити змінну SALES, допустимими значеннями якої є одномірнімасиви з 12 цілих чисел У цьому прикладі вираз ARRAY INTEGER [12] може розглядатися як виклик генератора типу ARRAY, який повертає масив конкретного типу Даний конкретний тип масиву є згенерованим типом З цього випливають наведені нижче висновки

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

2 Згенеровані типи є цілком допустимими типами і можуть примі няться скрізь, де допустимо використання звичайних несгенерірованних типів Наприклад, може бути визначена деяка змінна відносини, що має певний атрибут типу ARRAY INTEGER [12] На відміну від цього, самі ге нератори типів як такі не є типами

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

Примітка Хоча і може існувати можливість визначати нескалярние типи, не викликаючи безпосередньо деякий генератор типу, в даній книзі така можливість більше не розглядається

4 Для повної ясності відзначимо, що ми розглядаємо згенеровані типи саме як типи, що визначаються системою, оскільки для їх отримання потрібно викликати генератор типу, який визначається системою

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

Отже, згенеровані типи, безумовно, мають можливі уявлення (скорочено possrep – possible representation), які, цілком очевидно, є похідними, по-перше, від універсального можливого уявлення, застосовуваного до розглянутого генератору типу, і, по-друге, від конкретного можливого подання (подань) видимого користувачеві компонента (компонентів) конкретного розглянутого згенерованого типу Наприклад, у разі генератора типу ARRAY INTEGER [12] мають місце описані нижче особливості

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

Видимі користувачеві компоненти являють собою саме ті 12 елементів масиву, які були щойно згадані, і вони мають то можливе подання (подання), який визначено для типу INTEGER

Аналогічним чином, повинні бути передбачені оператори, що надають необхідні функціональні можливості селектора і оператора ТНЕ_ Наприклад, вираз

ARRAY     INTEGER     (    2,                                        5,                                        9,                                        9,                                        15,                                        27,                                        3 3 ,                                        32,                                        2 5 ,                                        19,                                        5,                                        1    )

яке по суті являє собою літерал з визначенням масиву, може використовуватися для завдання конкретного значення типу ARRAY INTEGER [12] (іншими словами, для застосування функціональних засобів селектора ) Аналогічним чином, наступний вираз

SALES   [3]

може використовуватися для доступу до третього компоненту (тобто до третього елементу масиву) того значення масиву, яке виявилося поточним значенням змінної масиву SALES (іншими словами, для застосування функціональних засобів оператора ТНЕ_ ) Це вираз може також служити в якості псевдопеременной

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

Застосовні також оператори присвоювання і порівняння для перевірки на рівність

Наприклад, нижче наведено допустимий оператор присвоювання

SALES   :=   ARRAY   INTEGER   (   2,    5,    9,    9,    15,    27,    33,    32,    25, 19,    5,    1   )    

А в даному випадку визначено допустимий оператор перевірки на рівність

SALES     =   A R R AY     I NTEGER                                        (     2,                                         5,                                         9,                                         9,                                         15,                                         2 7 ,                                         3 3 ,                                         3 2 ,                                         25,                                         19,     5,

1     )

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

■ Може бути передбачено таке універсальне обмеження, що нижній індекс

lower не повинен бути більше верхнього індексу upper

■ Може бути передбачений універсальний оператор звернення REVERSE, який приймає в якості вхідних даних довільний одновимірний масив і повертає як вихідних даних іншої такий же масив, що містить елементи першого масиву в зворотному порядку

(В дійсності, згадані вище селектори, оператори ТНЕ_, а також оператори присвоювання і порівняння на рівність також фактично походять від деяких універсальних операторів)

На закінчення відзначимо, що двома генераторами типів, які мають особливу важливість у світі реляційних баз даних, є TUPLE І RELATION ЦІ оператори докладно розглядаються в наступному розділі

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

*

*