Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Надмірність даних та аномалії оновлення
Головною метою проектування реляційної бази даних є групування атрибутів в відношення таким чином, щоб зменшити надмірність даних та таким чином зкоротити обєм памяті, необхідний для фізичного зберігання відношень, які зображуються у вигляді таблиць.
Проблеми, які повязані з надмірністю даних, можна простежити, порівнявши відношення „Співробітники” та „Відділення” з відношенням „Співробітники_Відділення”.
Відношення „Співробітники”
Код |
ПІБ |
Адреса_ співробітника |
Посада |
Д_Н |
З_П |
Номер_відділ. |
21 |
Філатов Андрій Петрович |
Одеса, Вільямса 7, 45 |
Менеджер |
01.05.1970 |
950 |
5 |
37 |
Никитіна Ганна Миколаївна |
Черкаси, Корольова 67, 3 |
Секретар |
16.09.1980 |
700 |
3 |
14 |
Федоров Микола Сергійович |
Черкаси, б-р Шевченко 19, 5 |
Директор |
28.10.1969 |
1500 |
3 |
9 |
Краснова Олена Валеріївна |
Київ, Пушкінська 21, 44 |
Бухгалтер |
31.12.1964 |
1200 |
7 |
5 |
Петренко Оксана Вікторівна |
Одеса, Левітана 4, 90 |
Менеджер |
03.04.1972 |
950 |
3 |
41 |
Васильєва Ганна Семенівна |
Одеса, Грецька 47, 15 |
Бухгалтер |
18.02.1968 |
1200 |
5 |
Відношення „Відділення”
Номер_ відділення |
Адреса_ відділення |
Телефон_ відділення |
5 |
Одеса, Ген. Бочарова 19 |
551440 |
7 |
Київ, Іванова 8 |
285190 |
2 |
Черкаси, Шевченко 14 |
438615 |
4 |
Запоріжжя, Гоголя 82 |
648369 |
3 |
Одеса, Ген. Петрова 1 |
659569 |
1 |
Луганськ, Київська 67 |
938544 |
Відношення „Співробітники_відділення”
Код |
ПІБ |
Адреса_ співробітника |
Посада |
Д_Н |
З_П |
Номер_ відділення |
Адреса_ відділення |
Телефон_ відділення |
21 |
Філатов Андрій Петрович |
Одеса, Вільямса 7, 45 |
Менеджер |
01.05. 1970 |
950 |
5 |
Одеса, Ген. Бочарова 19 |
551440 |
37 |
Никитіна Ганна Миколаївна |
Черкаси, Корольова 67, 3 |
Секретар |
16.09. 1980 |
700 |
3 |
Одеса, Ген. Петрова 1 |
659569 |
14 |
Федоров Микола Сергійович |
Черкаси, б-р Шевченко 19, 5 |
Директор |
28.10. 1969 |
1500 |
3 |
Одеса, Ген. Петрова 1 |
659569 |
9 |
Краснова Олена Валеріївна |
Київ, Пушкінська 21, 44 |
Бухгалтер |
31.12. 1964 |
1200 |
7 |
Київ, Іванова 8 |
285190 |
5 |
Петренко Оксана Вікторівна |
Одеса, Левітана 4, 90 |
Менеджер |
03.04. 1972 |
950 |
3 |
Одеса, Ген. Петрова 1 |
659569 |
41 |
Васильєва Ганна Семенівна |
Одеса, Грецька 47, 15 |
Бухгалтер |
18.02. 1968 |
1200 |
5 |
Одеса, Ген. Бочарова 19 |
551440 |
Відношення „Співробітники_Відділення”є альтернативною формою зображення відношень „Співробітники” та „Відділення”.
В відношенні „Співробітники_Відділення” створюються надмірні дані, так як відомості про відділення компанії повторюються в записах про кожного співробітника цього відділення.
В протилежність цьому, в відношенні „Відділення” відомості про відділення компанії створюються лише в одному записі, а в відношенні „Співробітники” повторюється лише номер відділення компанії, який уявляє собою місце роботи кожного співробітника.
При роботі з відношеннями, які мають надмірні дані, можуть виникати проблеми, які називаються аномаліями оновлення та діляться на:
1. Аномалії вставки
Існує 2 головних різновиди аномалій вставки, які можна зобразити за допомогою відношення „Співробітники_Відділення”.
„Співробітники_Відділення” необхідно вказати і відомості про відділення компанії, в якому ці співробітники працюють.
Наприклад, при додаванні відомостей про нового співробітника відділення компанії №7 необхідно ввести відомості про це відділення компанії №7, які повинні співпадати з відомостями про це ж відділення компанії в інших записах відношення „Співробітники_Відділення”.
Відношення „Співробітники” та „Відділення” не постраждають від такого потенційного неспівпадіння даних, так як для кожного співробітника в відношенні „Співробітники” необхідно буде ввести тільки номер існуючого відділення компанії. Окрім цього, відомості про відділення компанії з номером №7 записуються в базу даних один раз у вигляді одного рядка відношення „Відділення”.
власних співробітників, необхідно буде присвоїти визначення Null всім атрибутам
переліку персоналу відношення „Співробітники_Відділення”.
Так як атрибут „Номер співробітника” є первинним ключем відношення „Співробітники_Відділення”, то спроба ввести визначення Null в атрибут „Номер співробітника” викличе порушення цілісності сутностей та буде відхилена. Тобто, в відношення „Співробітники_Відділення” неможливо ввести запис про нове відділення компанії, який містить визначення Null в атрибуті „Номер співробітника”.
Структура відношень „Співробітники” та „Відділення” допомогає уникнути виникнення цієї проблеми, так як відомості про відділення компанії заносяться в відношення „Відділення” незалежно від вводу відомостей про співробітників. Відомості про співробітників, які будуть працювати в новому відділенні компанії, можуть бути додані в відношення „Співробітники” трохи згодом.
2. Аномалії знищення
При знищенні з відношення „Співробітники_Відділення” запису з інформацією про останнього співробітника деякого відділення компанії, відомості про це відділення компанії будуть повністю знищенні з бази даних.
Наприклад, після знищення з відношення „Співробітники_Відділення” запису „Якименко Андрій Олександрович” з особовим номером „СА9” з бази даних неявним чином будуть знищенні всі відомості про відділення компанії з номером 7.
Структура відношень „Співробітники” та „Відділення” допомагає попередити виникнення цієї проблеми, так як відомості про відділення компанії характеризуються окремо від записів з відомостями про співробітників. Повязує ці два відношення тільки атрибут „Номер відділення”.
При знищенні з відношення „Співробітники” запису з номером співробітника „СА9” відомості про відділення компанії №7 в відношенні „Відділення” залишуться недоторканими.
При спробі змінити значення одного з атрибутів для деякого відділення компанії в відношенні „Співробітники_Відділення”, необхідно оновити відповідаючі значення в записах для всіх співробітників цього відділення. Якщо не всі записи з даними в відношенні „Співробітники_Відділення” будуть оновленні, то в такому разі база даних буде мати суперечливі відомості.
Тобто, в нашому прикладі для відділення компанії з номером 3 в записах, які ставляться до різних співробітників, помилково можуть бути вказані різні значення номеру телефону цього відділення.
Всі наведені приклади показують те, що краще зберігати інформацію в окремих відношеннях „Співробітники” та „Відношення”, а не в одному відношенні „Співробітники_Відділення”.