
- •1. Мета роботи
- •2. Короткі теоретичнi вiдомостi
- •Створення і перевірка локальної логічної моделі даних для окремих призначених для користувача представлень
- •1.1 Виключення особливостей, несумісних з реляційною моделлю (необов'язковий етап)
- •Видалення двосторонніх зв'язків "багато до багатьох" (*:*)
- •Видалення рекурсивних зв'язків "багато до багатьох" (*:*)
- •Видалення складних зв'язків
- •4. Видалення багатозначних атрибутів
- •1.2. Визначення набору відношень виходячи із структури локальної логічної моделі даних
- •1. Сильні типи сутності.
- •2. Слабкі типи сутностей.
- •3. Двосторонні зв'язки типа "один до багатьох" (1 :*)
- •4. Двосторонні зв'язки типу "один до одного" (1:1)
- •5. Обов'язкова участь однієї сторони в зв'язку типу 1:1
- •6. Рекурсивні зв'язки "один до одного" (1:1)
- •7. Зв'язки типу суперклас/підклас
- •8. Двосторонні зв'язки "багато до багатьох" (*:*)
- •9. Багатозначні атрибути
- •1.3. Перевірка відношень за допомогою правил нормалізації
- •1.4 Перевірка відповідності стосунків вимогам призначених для користувача транзакцій
- •Контрольні запитання
- •4. Практичне завдання
- •6. Список літератури
8. Двосторонні зв'язки "багато до багатьох" (*:*)
Для кожного двостороннього зв'язку *:* необхідно створити відношення, уявляючи цей зв'язок, і включити в нього всі атрибути, які входять до складу цього зв'язку. Копії атрибутів первинного ключа сутності, що бере участь в звязку, передаються в нове відношення для використання як зовнішні ключі. Ці зовнішні ключі утворюють також первинний ключ нового відношення, можливо, у поєднанні з деякими іншими атрибутами зв'язку. Якщо унікальність можуть забезпечити один або декілька атрибутів,утворюючих зв’язок,то в концептуальній моделі даних не врахована якась сутність. Але цей дефект може бути усунений в описаному процесі перетворення. Наприклад, розглянемо зв'язок. Client Views Proper typorrent типу *:* (рис. 15.2, а). Для відображення цього зв'язку створюються відношення з сильними сутностями і client і Propertyforrent, а також відношення Viewing, відповідне зв'язку Views. В результаті цього формується структура, показана на рис. 15.8, Залишаємо як вправу для читача перевірку того, що аналогічний набір відношень був би створений на основі моделі даних, приведеної на рис. 15.2, в який зв'язок *:* був би перетворений в проміжну сутність.
Client (clientNo, fName, IName, telNo, prefType, maxRent, staffNo) Первинний ключ clientNo; внешний ключ staffNo що посилається на Staff (staffNo) |
PropertyForRent (propertyNo, street, city, postcode, type, rooms, rent) Первинний ключ propertyNo |
Viewing (clientNo, propertyNo, dateView, comment) Первиний ключ clientNo, propertyNo Зовнішній ключ посилається на Client (clientNo) Зовнішній ключ посилаться на PropertyForRent (propertyNo)
|
Рис. 15.8. Приклад структури зв'язку типа *:*
В. Складні типи зв'язків
Для кожного тяжкого зв'язку створюється відношення, що відображує цей зв'язок, і в нього включаються всі атрибути, що входять до складу даного зв'язку, В нове відношення передаються для використання як зовнішні ключі копії атрибутів первинного ключа сутності, що бере участь в складному зв'язку. Всі зовнішні ключі, відповідні стороні зв'язку "багато хто" (наприклад, 1..*, 0..*), як правило, утворює також первинний ключ цього нового відношення, можливо, у поєднанні з деякими іншими атрибутами звязку. Наприклад, трибічний зв'язок Registers в представленні Branch відповідає операції, виконуваній співробітником компанії, реєструючим нового клієнта у відділенні (рис. 15.4, а). Для перетворення цього зв'язку створюються відношення, відповідні сильній сутності Branch, Staff і Client, а також відношення Registration, яке відповідає зв'язку Registers. У результаті цього формується структура, показана на рис. 15.9. Знову-таки, залишаємо як вправу для читача перевірку того, що створюється такий же набір відношень, як і на основі моделі даних, показані на рис. 15.4, б, в якій трибічний зв'язок був перетворений в проміжну сутність.
Рис. 15.9. Структура відношення Registration