- Показаният пример съдържа повтарящи се групи. Ако не се държи сметка за тях, можем да създадем:
- Student(matric_no, name, date_of_birth, subject, grade )
- matric_no -> name, date_of_birth
- name, date_of_birth -> matric_no
- Премахването на повтарящите се групи води до наличие на излишък. Премахването на излишъка налага нормализация на релациите.
Първа нормална форма (1НФ) - Една релация е в 1НФ, тогава и само тогава, когато не съдържа повтарящи се атрибути или групи от атрибути.
- Пример:
- Таблицата Student table има повтарящи се групи и следователно не е в 1НФ
- След като има повтарящи се групи, таблицата е ненормализирана.
- За да премахнем повторенията:
Плоска таблица и разширяване на ключа - Таблицата Student с повтарящите се групи, може да се запише:
- Student(matric_no, name, date_of_birth, ( subject, grade ) )
- Ако повтарящите се групи се изравнят, както при таблицата Student #2, ще получим:
- Student(matric_no, name, date_of_birth, subject, grade )
- Тук няма повтарящи се групи, но е налице излишък от данни. За всяка комбинация matric_no/subject, името на студента и датата на раждане се повтарят. Това води до грешки.
Проблеми при изравняване на таблици - При изравняване на релациите се получават аномалии в системата. Те се получават от излишъка на данни и са аномалии при добавяне, изтриване и актуализация.
- Insertion anomaly – тъй като subject е в състава на първичния ключ, не може да се добави студент, докато няма поне един предмет. (Нито една част на първичния ключ не може да е NULL!)
- Update anomaly – промяна на името на студент, означава намиране на всички редове в БД с този студент и последователната им промяна.
- Deletion anomaly- ако се налага изтриване на информацията за предмет, се изтриват и студентите, които са свързани с него.
Сподели с приятели: |