Бази данни



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

Преработване до BCNF

  • Д. Гоцева
  • БД-лекции
  • DB(Patno,appNo,time,doctor)
  • R1(Patno,PatName)
  • BCNF: преработете до
  • DB(Patno,time,doctor)
  • R1(Patno,PatName)
  • R2(time,appNo)
  • time е достатъчно за да работи appointment number на пациент. BCNF е удовлетворена и последните релации са в BCNF

Нормализация 3

  • Д. Гоцева
  • БД-лекции
  • Гл.ас. Д-р Даниела Гоцева
  • http://dgoceva.info

Нормализация

  • Д. Гоцева
  • БД-лекции
  • Структура на лекцията
    • Нормализация до Boyce Codd Normal Form (BCNF) – пример 1b
    • Нормализация до четвърта нормална форма (4NF)
    • Нормализация до пета нормална форма (5НФ)

Пример 1b

  • Д. Гоцева
  • БД-лекции
  • DB(Patno,PatName,appNo,time,doctor)
  • Няма повтарящи се групи – релацията е в 1НФ
  • 2НФ – елиминира се частичната зависимост:
    • DB(Patno,time,doctor)
    • R1(Patno,PatName)
    • R2(time,appNo)
  • 3НФ – няма транзитивни зависимости
  • Проверяваме за BCNF.

BCNF всеки детерминант е кандидат ключ

  • Д. Гоцева
  • БД-лекции
  • DB(Patno,time,doctor)
  • R1(Patno,PatName)
  • R2(time,appNo)
  • Детерминантите кандидат ключове ли са?
    • Patno -> PatName Patno съществува в DB, а PatName - не, следователно не е приложим.
    • Patno,appNo -> Time,doctor не всички LHS съществуват в релациите, следователно не е приложим
    • Time -> appNo Time присъства, но appNo - не, следователно не е приложим.
    • Релациите са е BCNF.

Обобщение: пример 1

  • Д. Гоцева
  • БД-лекции
  • Този пример показва:
  • BCNF е по-строга от 3НФ, не винаги релациите, които са в 3НФ са и в BCNF
  • BCNF е необходима в редица ситуации за получаване на напълно разбиране на модела на данните
  • Съществуват множество за получаване на BCNF.
    • Няма правила, които да покажат кой алгоритъм е по лесен в конкретния случай.

Пример 2

  • Д. Гоцева
  • БД-лекции
  • Grade_report(StudNo,StudName,(Major,Adviser, (CourseNo,Ctitle,InstrucName,InstructLocn,Grade)))
  • Функционални зависимости
    • StudNo -> StudName
    • CourseNo -> Ctitle,InstrucName
    • InstrucName -> InstrucLocn
    • StudNo,CourseNo,Major -> Grade
    • StudNo,Major -> Advisor
    • Advisor -> Major

Пример 2 (2)

  • Д. Гоцева
  • БД-лекции
  • Ненормализирана релация
  • Grade_report(StudNo,StudName,(Major,Adviser, (Course,Ctitle,InstrucName,InstructLocn,Grade)))
  • 1NF премахва повтарящите се групи
    • Student(StudNo,StudName)
    • StudMajor(StudNo,Major,Adviser)
    • StudCourse(StudNo,Major,Course, Ctitle,InstrucName,InstructLocn,Grade)

Пример 2 (3)

  • Д. Гоцева
  • БД-лекции
  • 1NF
    • Student(StudNo,StudName)
    • StudMajor(StudNo,Major,Adviser)
    • StudCourse(StudNo,Major,Course,
    • Ctitle,InstrucName,InstructLocn,Grade)
  • 2NF - премахване частичните зависимости
    • Student(StudNo,StudName)
    • StudMajor(StudNo,Major,Adviser)
    • StudCourse(StudNo,Major,Course,Grade)
    • Course(Course,Ctitle,InstrucName,InstructLocn)

Пример 2 (4)

  • Д. Гоцева
  • БД-лекции
  • 2NF
    • Student(StudNo,StudName)
    • StudMajor(StudNo,Major,Adviser)
    • StudCourse(StudNo,Major,Course,Grade)
    • Course(Course,Ctitle,InstrucName,InstructLocn)
  • 3NF - премахване на транзитивните зависимости
    • Student(StudNo,StudName)
    • StudMajor(StudNo,Major,Adviser)
    • StudCourse(StudNo,Major,Course,Grade)
    • Course(Course,Ctitle,InstrucName)
    • Instructor(InstructName,InstructLocn)

Пример 2 (5)

  • Д. Гоцева
  • БД-лекции
  • BCNF – всеки детерминант е кандидат ключ
    • Student : има само един детерминант StudNo
    • StudCourse: детерминантите са StudNo,Major
    • Course: детерминантът е Course
    • Instructor: детерминантът е InstrucName
    • StudMajor: детерминантите са
      • StudNo,Major, или
      • Adviser
  • Само StudNo,Major е кандидат ключ.

Пример 2: BCNF

  • Д. Гоцева
  • БД-лекции
  • BCNF
    • Student(StudNo,StudName)
    • StudCourse(StudNo,Major,Course,Grade)
    • Course(Course,Ctitle,InstrucName)
    • Instructor(InstructName,InstructLocn)
    • StudMajor(StudNo,Adviser)
    • Adviser(Adviser,Major)

BCNF - проблеми

  • Д. Гоцева
  • БД-лекции
  • Ако записът за студент 456 се изтрие, губим информация кой е консултанта по BIOLOGY.
  • Няма запис за факта, че WATSON може да консултира по COMPUTING докато нямаме студент, избрал COMPUTING, на който да прикачим WATSON като консултант.

Разделяме таблицата на две

  • Д. Гоцева
  • БД-лекции
  • В BCNF имаме 2 таблици:

Четвърта нормална форма (4НФ)

  • Д. Гоцева
  • БД-лекции
  • В 4НФ, типът запис не съдържа >=2 независими данни с >1 стойности за едно entity.
  • Една релация е в 4НФ, тогава и само тогава, когато не съдържа многостойностни зависимости.
  • Данна с много стойности може да кореспондира с връзка M:N или M:1.
  • Многостойностна зависимост съществува когато има три атрибута (A,B и C) в една релация и за всяка стойност на А има добре дефинирано множество стойности В и добре дефинирано множество стойности С. Множеството стойности В и независимо от С и обратно.

Пример

  • Д. Гоцева
  • БД-лекции
  • Дадена е информация за филмови звезди. Тя включва детайли за техните адреси, филми, в които са участвали:
    • Name -> Address
    • Name -> Movie

Пример (2)

  • Д. Гоцева
  • БД-лекции
  • Carrie Fisher има 2 адреса и участва в 3 филма
  • Единственият начин да покажем, че адресите и филмите са независими, е да заложим всички допустими комбинации
  • Няма нарушения на BCNF
    • Релацията не е в 4НФ
    • Трябва да я разделим на 2 таблици

Пример (3)

  • Д. Гоцева
  • БД-лекции

Пета нормална форма (5НФ)

  • Д. Гоцева
  • БД-лекции
  • 5НФ е разработена да хваща join dependency
    • Една релация, която има join dependency не може да се раздели чрез проекция в други релации без лъжливи резултати
    • Една релация е в 5НФ, когато нейната информационно съдържание не може да се реконструира на няколко по-малки релации

Join Dependency Decomposition

  • Д. Гоцева
  • БД-лекции

Лъжливи резултати

  • Д. Гоцева
  • БД-лекции

Обратно към ER модела

  • Д. Гоцева
  • БД-лекции
  • След края на процеса нормализация, се връщаме обратно и сравняваме резултантните релации с оригиналния ER модел
    • Може да се наложи смяна на модела като се вземат под внимание промените от нормализацията. ER диаграмата трябва да бъде правилно изображение на модела, който се реализира в БД!
    • Изискуемите промени зависят от това, колко е бил добър ER модела в началото!


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




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

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