Бази данни



страница6/9
Дата10.05.2022
Размер1.32 Mb.
#114206
ТипЛекции
1   2   3   4   5   6   7   8   9
нормализация на данни
Свързани:
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)


Сподели с приятели:
1   2   3   4   5   6   7   8   9




©obuch.info 2024
отнасят до администрацията

    Начална страница