Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Крок 5. Проектування за наявності підтипів

Підтип сутності — це також сутність з її власними атрибутами та зв'язками; вона успадковує всі атрибути та зв'язки батьківської сутності (супертипу), а також усіх сутностей, що розташовані на вищих рівнях ієрархії.

Є два альтернативні способи відображення підтипів у вигляді таблиць: поєд­нання всіх атрибутів в одній таблиці та створення окремої таблиці для кожного підтипу. Кожен із цих методів має свої переваги й недоліки.

Все в одній таблиці

Основна таблиця створюється для сутності-супертипу, що є вершиною ієрархії. Можуть також створюватися віртуальні таблиці для кожного з підтипів. Як і ра­ніше, атрибути й зв'язки типу «багато-до-одного» приводять до створення стовп­ців даних і зовнішніх ключів.

Віртуальна таблиця — це спосіб звернення до підмножини даних із базової таблиці так, ніби це інша таблиця. Віртуальна таблиця може бути обмежена підмножиною стовпців та/або підмножиною рядків базової таблиці і в ній можуть бути змінені імена стовпців. Подібні прості віртуальні таблиці використовуються як для оновлення, так і для пошуку даних. Процедура створення віртуальних таб­лиць застосовується до кожного підтипу, всіх його підтипів тощо.

У базовій таблиці всі стовпці, створені для підтипів, оголошуються як NULL-стовпці. Обов'язковість атрибута (або зв'язку) для одного підтипу не має застосо­вуватися до іншого — тому всі такі стовпці мають стати факультативними з мож­ливою підтримкою згаданого обмеження цілісності в прикладному програмному забезпеченні або за допомогою спеціальної віртуальної таблиці.

До базової таблиці потрібно додати принаймні ще один стовпець з опцією not-null для визначення типу; він стає частиною первинного ключа.

Віртуальна таблиця створюється для кожного з підтипів з тією метою, щоб на­дати можливість доступу лише до необхідних даних згідно з вимогами приклад­них задач, що визначають спосіб маніпулювання сутностями, які є підтипами. Подібні віртуальні таблиці мають містити стовпці підтипу, ключі всіх його підти­пів та супертипу. До оголошення віртуальної таблиці додається фраза WHERE для перевірки значення поля Тип та контролю коректності зовнішніх ключів.

Розглянемо приклад на рис. 7.19. До складу первинного ключа введено поле Тип, значення якого вказує на те, що рядок таблиці належить супертипу ("ЗАМ") чи одному з його підтипів (рядок замовлення квитка, "РЗК", або інший рядок замов­лення, "ІРЗ").

Наведемо приклади описів віртуальних таблиць на мові SQL:

CREATE VIEW ІНІНІ_РЯДКИ_ЗАМ0ВЛЕННЯ AS SELECT Код_рядка, Код_замовлення, Опис, Коментар, Тип FROM РЯДКИ_ЗАМ0ВЛЕННЯ WHERE Тип="ІРЗ"

CREATE VIEW РЯДКИ_ЗАМ0ВЛЕННЯ_КВИТКА AS

SELECT Код_рядка, Код_замовлення, Опис, Кількість, Номер_рейсу. Тип FROM РЯДКИ_ЗАМ0ВЛЕННЯ

WHERE Тип="РЗК" AND Кількість NOT NULL.AND EXISTS (SELECT *

FROM РЕЙСОВІ_ПОЛЬОТИ

WHERE РЕСОВІ_ПОЛЬОТИ.Номер = РЯДКИ_ЗАМОВЛЕННЯ.Номер_рейсу)

За допомогою обох віртуальних таблиць перевіряються значення у стовпці Тип. Друга з цих таблиць вимагає обов'язкової наявності значення у стовпці Кількість та гарантує існування номера рейсу в таблиці РЕЙСОВ І_ПОЛЬОТИ, шо збігається зі значенням Номер_рейсу.

Окрема таблиця для кожного підтипу

Для кожного з підтипів створюється таблиця, в якій зберігатимуться його екзем­пляри. Якщо є багато рівнів підтипів, то можна побудувати таблиці тільки для найнижчого рівня. У цьому випадку таблиці всіх інших рівнів отримують як вір­туальні таблиці.

Таблиця, що створюється для підтипу, містить стовпці для кожного атрибута і зв'язку типу «багато-до-одного». Окрім того, створюються стовпці для всіх ат­рибутів і зв'язків типу «багато-до-одного» супертипу даного типу (і так далі вго­ру за ієрархією підтипів). При цьому властивості факультативності й належності до первинного ключа успадковуються.

В аналогічний спосіб можна побудувати таблиці для підтипів D та С. Тоді вір­туальні таблиці для сутностей типів В та А означуватимуться так:

CREATE VIEW В AS SELECT bl. b2, al, a2. G_g FROM D UNION

SELECT bl. b2, al. a2. G_g FROM E

CREATE VIEW A AS SELECT al, a2. G_g FROM D UNION

SELECT al, a2, G_g FROM E UNION

SELECT al, a2, G_g FROM C

<== предыдущая лекция | следующая лекция ==>
Крок 2. Перетворення атрибутів на стовпці | Спільний домен
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 537; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.