|
|
страница | 6/9 | Дата | 10.05.2022 | Размер | 1.32 Mb. | | #114206 | Тип | Лекции |
| нормализация на данниСвързани: BD4, данни - Един проект има >1 неключови полета и трябва да се изследва транзитивната зависимост:
Extract - Полето Address зависи от стойността на manager.
- От таблицата можем да
- Project(project_no, manager, address)
- manager -> address
- В този случай address е транзитивно зависим от manager.
- Първичният ключ е project_no, но LHS и RHS нямат отношение към този ключ и затова присъстват в релацията.
Fix - Излишъкът от данни води до
- Дублиране на адреса, ако мениджъра има повече от един проекти
- Проблеми при актуализация на адреса – трябва да променим повече редове и това може да е източник на грешки.
- Транзитивната функционална зависимост се премахва чрез разделяне на таблицата
- Създават се две релации – една с транзитивна зависимост и друга с всички останали атрибути.
- Таблицата Project се разделя на Project и Manager.
- Определящият атрибут е първичен ключ в новата релация - manager е първичен ключ в релацията Manager
- Оригиналният ключ е първичен ключ в останалите нетранзитивни атрибути – в случая, project_no остава ключ в новата таблица Projects.
Резултат - При тази организация трябва да съхраним адреса само веднъж
- Ако се нуждаем от адреса на мениджъра, го получаваме от релацията Manager.
- Атрибутът manager е връзка между двете таблици, като в таблицата Projects е външен ключ.
- Получените релации са в 3НФ.
Обобщение: 1НФ - Една релация е в 1НФ, ако не съдържа повтарящи се групи
- За да се преобразува ненормализирана релация в 1НФ:
- Таблицата се прави плоска и се променя първичния ключ или
- Декомпозира се релацията в по-малки, една за повтарящите се групи и една за неповтарящите се.
- Първичният ключ на оригиналната релация се слага и в двете нови релации.
- Пример:
- R(a,b,(c,d)) става
- R(a,b)
- R1(a,c,d)
Сподели с приятели: |
|
|