КАТЕГОРИИ: Архитектура-(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
Дата добавления: 2014-01-11; Просмотров: 537; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |