Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
bd.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.91 Mб
Скачать

Маніпулювання даними

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

Приклади типових операторів пошуку даних з можливістю модифікації:

  • знайти і утримати для подальшої модифікації єдиний екземпляр сегмента, що задовольняє умові пошуку;

  • знайти і утримати для подальшої модифікації наступний екземпляр сегмента з тими ж умовами пошуку;

  • знайти і утримати для подальшої модифікації наступний екземпляр для того ж батька.

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

  • вставити новий екземпляр сегмента у вказану позицію;

  • оновити поточний екземпляр сегмента;

  • видалити поточний екземпляр сегмента.

Наведемо приклад операції додавання нового екземпляра сегмента КАФЕДРА:

КАФЕДРА.Назва = "САПР";  КАФЕДРА.Завідуючий = "Іванов";  КАФЕДРА.Корпус = 3;  INSERT КАФЕДРА  WHERE ФАКУЛЬТЕТ.Назва = "інформатики";

Додати сегмент ВИКЛАДАЧ можна так:

ВИКЛАДАЧ.Ім'я = "Петров";  ВИКЛАДАЧ.Посада = "асистент";  ВИКЛАДАЧ.Адреса - "Проспект Миру 13/17";  INSERT ВИКЛАДАЧ  WHERE ФАКУЛЬТЕТ.Назва - "інформатики"  AND КАФЕДРА.Назва = "САПР";

Щоб замінити сегмент, його слід спочатку вибрати за допомогою команди GET HOLD, яка вказує, що шуканий сегмент буде модифікований, потім змінити у знайденого сегмента певні поля й застосувати команду REPLACE. Наприклад, у такий спосіб можна змінити сегмент «адреса викладача Петрова з кафедри САПР»:

GET HOLD UNIQUE ВИКЛАДАЧ  WHERE ФАКУЛЬТЕТ.Назва = "інформатики"  AND КАФЕДРА.Назва = "САПР"  AND ВИКЛАДАЧ.Ім'я = "Петров";  ВИКЛАДАЧ.Адреса = "вул. Теремківська 1/19";  REPLACE;

Видалення сегмента здійснюється за тією ж схемою, що й заміна: потрібно віднайти сегмент за допомогою команди GET HOLD, потім видалити його командою DELETE. При цьому прикладна програма може проаналізувати значення полів знайденого сегмента і прийняти остаточне рішення щодо його подальшого існування. Наприклад, видалення інформації про викладача Петрова кафедри САПР факультету інформатики виконується так:

GET HOLD UNIQUE ВИКЛАДАЧ  WHERE ФАКУЛЬТЕТ.Назва - "інформатики"  AND КАФЕДРА.Назва = "САПР" AND ВИКЛАДАЧ.Ім'я = "Петров";  DELETE;

Видалення екземпляра сегмента приводить до видалення всіх екземплярів його дочірніх сегментів, оскільки в ієрархічній структурі жодний екземпляр сегмента не може існувати без свого «батька». Отже, якщо Ви видаляєте екземпляр сегмента КАФЕДРА, то автоматично видаляються всі екземпляри сегментів, що відповідають викладачам даної кафедри.

Переваги та недоліки ієрархічної моделі

До переваг ієрархічної моделі належать:

  • розвинені низькорівневі засоби керування даними в зовнішній пам'яті;

  • можливість побудови ефективних прикладних систем;

  • економне використання пам'яті.

Зазначимо, що ієрархічна модель має також певні недоліки:

  • асиметрія пошуку за симетричними запитами - програми пошуку викладачів за кафедрами та кафедр за викладачами принципово відрізняються: в першому випадку структура ієрархії збігається зі структурою пошуку, а в другому — ні;

  • залежність між пошуком та відповідністю ієрархічної структури наявним зв'язкам у предметній області - якщо ієрархічна структура відповідає структурі зв'язків ПО, то записувати пошукові вирази набагато легше;

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

  • аномалії додавання, видалення та оновлення даних - не можна здійснити операцію додавання сегмента ВИКЛАДАЧ без зазначення сегмента КАФЕДРА; не можна видалити сегмент КАФЕДРА, на видаляючи сегментів ВИКЛАДАЧ; після оновлення даних один і той самий екземпляр сутності зображується у вигляді багатьох екземплярів об'єктів бази даних.

  • дублювання даних - якщо об'єкти предметної області мають зв'язки типу «один-до-одного» або «один-до-багатьох», то ієрархічна структура дає змогу зображувати дані без дублювання; проте, якщо є зв'язки типу «багато-до-багатьох», то дублювання даних під час відображення в ієрархічній моделі неминуче.

Крім згаданих основних недоліків ієрархічної моделі слід зазначити також складність реалізації гнучких механізмів захисту даних, цілісності та несуперечності «дружніх» інтерфейсів користувача. Основні недоліки ієрархічної моделі пов'язані з тим, що не всі предметні області мають чітко виражену ієрархічну структуру. Наведений на рис. 8.2. приклад добре узгоджується з ієрархічною структурою. Проте, якщо ми розглянемо предметну область із сутностями «викладач», «дисципліна», «лекція» в ситуації, коли один викладач читає лекції з багатьох дисциплін і одна й та сама дисципліна читається багатьма викладачами, то вона «погано» піддається ієрархічній структуризації. Справа в тому, що між викладачами і дисциплінами існує зв'язок типу «багато-до-багатьох», який не є адекватним ієрархічній структурі даних. Для відображення зв'язків цього типу була запропонована мережна модель даних.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]