Page 107 - 4636
P. 107
Books (книги)
ISBN Author Title (Назва) Price (Ціна)
(Автор)
5-8459-0046-8 Майкл Морган Java2. Посібник користувача 88.40
5-8459-1082-X Крістофер Негус Linux. Біблія користувача 98.20
5-8459-1134-6 Марина Смоліна CorelDrawX3. Самовчитель 68.20
Рисунок 5.3 - Дана схема складається з таблиць Customers, OrdersiBooks
У даному випадку, дивлячись на модель, не можна дізнатись, які книги були вказані в кожному
замовленні. Це питання ми розглянемо пізніше.
Уникнення зберігання надлишкової інформації
Дещо раніше ми задавалися питанням: "Чому б просто не зберігати адресу Слави Моргунова в
таблиці Orders?"
Якщо Слава Моргунов замовить у магазині "Буквофіл" кілька книг (на що ми щиро
сподіваємося), відомості про нього доведеться записувати кілька разів. У підсумку таблиця Orders
може набути вигляду, показаного на рис. 5.4.
OrderID Amount Date (Дата) CustomerID Name(ФІО) Address City
(Іденти- (Сумма) (Іденти- (Адреса) (Місто)
фікатор фікатор
заказу) клієнта)
1 27.50 02-Червня-2013 1 Слава Моргунов 56, вул. Пулюя м.Одеса
2 12.99 15-Червня-2013 1 Слава Моргунов 56, вул. Пулюя м.Одеса
3 74.00 19-Червня-2013 1 Слава Моргунов 56, вул. Пулюя м.Одеса
4 6.99 01-Липня-2013 1 Слава Моргунов 56, вул. Пулюя м.Одеса
Рисунок 5.4 - Структура бази даних, в якій зберігається надлишкова інформація, займає
більше місця і може бути причиною аномалій у даних
З таким підходом пов'язані дві основні проблеми:
1 По-перше, марно витрачається простір на жорсткому диску. Навіщо зберігати інформацію про
Славу тричі, якщо досить зробити це тільки один раз.
2 По-друге, в цьому випадку можливе виникнення аномалій оновлення, тобто ситуацій , коли
оновлення бази даних призводить до невідповідностей у даних. Цілісність даних порушується, після
чого невідомо, які дані правильні, а які - ні. Як правило, подібні ситуації завершуються втратою даних.
Слід уникати трьох типів аномалій оновлень : аномалій модифікації , аномалій вставки та
аномалій видалення.
Якщо, очікуючи виконання замовлення, Слава Моргунов переїде в інший будинок, нову адресу
доведеться вказувати в трьох місцях, а не в одному, проробляючи в три рази більшу роботу. Можна не
помітити інших замовлень і змінити адресу всього в одному місці, що призведе до ще гірших
наслідків- невідповідності даних у базі. Такі проблеми називають аномаліями модифікації, оскільки
вони з'являються внаслідок спроб модифікації бази даних.
У цьому випадку відомості про Славу Моргунова доведеться вводити щоразу, приймаючи
замовлення. Тому необхідно постійно перевіряти відповідність між введеними відомостями і даними,
записаними в таблиці. В іншому випадку в таблиці можуть з'явитися два рядки з інформацією, яка
суперечить одна одній про Славу Моргунова. Наприклад, в одному рядку може повідомлятися, що
Слава Моргунов проживає в м. Одеса, а в іншій місцем його проживання буде вказаний смт. Солотвин.
Така невідповідність називається аномалією вставки, оскільки вона виникає під час вставки даних.
104