- 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 като консултант.
Четвърта нормална форма (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 модела в началото!
Сподели с приятели: |