- •Информационные системы
- •Пользователи информационных систем
- •Преимущество и проблемы интеграции информации
- •Проектирование баз данных
- •Выбор субд
- •Дата логическое проектирование
- •4 Нормальная форма
- •Операции над рбк
- •Обработка отношений
- •Размещение данных в памяти эвм
- •Язык запросов sql
- •Субд Microsoft Access
- •Субд FoXPro
- •Команды управления
- •Структура системных команд foxpro
- •Индексирование баз данных
- •Index on fio to kadrsex // sex – половая принадлежность
- •If found() // а если найду?
- •Язык vba (Visual Basic Application)
Дата логическое проектирование
Дата логическое проектирование реляционных баз данных называется так же логическим проектированием – это построение совокупности схем отношений, которое адекватно отображает объекты предметной области и семантические связи между ними.
Классическая технология логического проектирования РБД основана на теории нормализации отношений, разработанная американским математиком Е. Коддом. При этом проектирование это переход от более низких нормальных форм к более высоким.
Различают:
первую нормальную форму – 1НФ
вторую нормальную форму – 2НФ
третью нормальную форму – 3НФ
нормальную форму Бойса Конда - НФБК
четвертую нормальную форму – 4НФ
пятую нормальную форму – 5НФ
Нормализация отношений
Теория нормализации основана на том, что определенный набор таблиц обладает лучшими свойствами при включении, модификации и удалении данных, чем все остальные наборы таблиц, с помощью которых могут быть представлены те же данные.
Простым называется атрибут, если значения его атомарны, то есть неделимы.
Сложный атрибут может иметь значения, являющимися соединениями одного или разных доменов.
Отношение приведено к 1НФ если все его атрибуты простые.
Отношение R: сотрудник – 1НФ
Табельный номер |
ФИО |
Оклад |
Комната |
Телефон |
Дети |
|
|
имя.р |
возр.р. |
||||
211 |
Иванов |
5000 |
12 |
616 |
Саша |
10 |
211 |
Иванов |
5000 |
12 |
616 |
Женя |
7 |
211 |
Иванов |
5000 |
12 |
616 |
Вася |
3 |
358 |
Темин |
7000 |
12 |
616 |
Вова |
5 |
360 |
Котов |
10000 |
5 |
306 |
Таня |
8 |
360 |
Котов |
10000 |
5 |
306 |
Саша |
6 |
В данном случае атрибут дети – сложный. А по определению, в 1НФ не может содержаться сложных атрибутов.
Эту таблицу в таком виде нельзя использовать. Её нельзя ввести в компьютер, т.к. СУБД будет выдавать ошибку – первичный ключ будет повторяться, либо совсем отсутствовать.
Для приведения к первой нормальной форме, добавим к ключу одно из полей сложного атрибута.
Недостатки:
сотрудник вообще не попадает в базу, если у него нет детей
Дублирование информации
Если у пользователя что то меняется, то требуется изменять несколько колонок
Неключевым атрибут - любой атрибут отношения не входящий в состав ни одного возможного ключа.
Функциональная зависимость – пусть X и Y два атрибута некоторого отношения. Говорят, что Y функционально зависит от Х, если в любой момент времени, каждому значению X соответствует только 1 значение Y.
Взаимно независимые атрибуты – атрибуты, которые функционально не зависят друг от друга.
Если в отношении существует несколько функциональных зависимостей, то каждый атрибут или несколько атрибутов, от которых зависит другой атрибут, называются детерминантом отношения.
Говорят, что неключевой атрибут функционально полно зависит от составного ключа, если он функционально зависит от всего ключа, а не от какой-то его части.
Имя ребенка
ФИО
Оклад
Комната
Телефон
Возраст ребенка
Рассмотрим как неключевые атрибуты зависят от составного ключа.
Возраст ребенка –> (Табл. № && имя р.)
Отношения находятся в 2НФ если оно находится в 1НФ и каждый его неключевой атрибут функционально полно зависит от составного ключа.
В отношении Сотрудник 2НФ нарушено, так как только возраст ребенка имеет полную функциональную зависимость.
R1: сотрудник
Табельный номер |
ФИО |
Оклад |
Комната |
Телефон |
211 |
Иванов |
5000 |
12 |
616 |
358 |
Темин |
7000 |
12 |
616 |
360 |
Котов |
10000 |
5 |
306 |
R2: дети
Табельный номер |
Имя ребенка |
Возраст ребенка |
211 |
Саша |
10 |
211 |
Женя |
7 |
211 |
Вася |
3 |
358 |
Вова |
5 |
360 |
Таня |
8 |
360 |
Саша |
6 |
R1 и R2 во второй нормальной форме.
Но в них все же комната и телефон дублируются многократно.
Если в какой то комнате изменился телефон, то придется изменять множество строчек.
Если в какой то комнате в данный момент никто не сидит, то информация о комнате теряется.
Транзитивная зависимость – пусть X Y Z атрибуты одного отношения и между ними существует функциональная зависимость, такая, что
Тогда говорят, что Z транзитивно зависит от X.
Отношение находится в 3НФ, если оно находится в 2НФ и каждый не ключевой атрибут не транзитивно зависит от первичного ключа.
В нашем случае телефон зависит от табельного номера транзитивно.
R3: сотрудник
Табельный номер |
ФИО |
оклад |
Комната |
211 |
Иванов |
--- |
12 |
358 |
Темин |
--- |
5 |
360 |
Котов |
--- |
5 |
R4: аудитории
Комната |
Телефон |
12 |
616 |
5 |
300 |
R3: сотрудник (табN, ФИО, оклад, комната)
R4: аудитории (Nk, телефон)
R2: (таблN, имя.р, возраст.р)
Спроектировать базу данных:
Студент (Номер факультета, название факультета, ФИО декана, телефон деканата, номер группы, специальность, ФИО старосты, количество студентов в группе, номер зачетки, стипендия)
Nф |
назв. ф |
фио д |
тел.д |
Ном гр |
спец |
кол ст в гр |
фио стар |
стип |
ФИО |
ном зач |
4 |
ТКиИ |
Ромаз |
305 |
4209 |
230101 |
24 |
Саб |
1200 |
Саб |
001 |
|
|
|
|
|
|
24 |
|
1200 |
Бас |
002 |
|
|
|
|
|
|
24 |
|
0 |
Петров |
003 |
|
|
|
|
4210 |
222222 |
20 |
Куй |
1800 |
Куев |
004 |
|
|
|
|
|
|
|
|
|
|
|
Первая нормальная форма нарушена, так как на факультете информация о группах сложный атрибут, а в группе информация о студентах сложный атрибут.
Для приведения к первой нормальной форме добавим по одному полю из сложных атрибутов.
2НФ нарушена, так как все неключевые атрибуты имеют неполную функциональную зависимость, то есть мы должно провести декомпозицию, согласно этим отношениям.
R1: факультет
Nф |
название факультета |
фио декана |
телефон |
|
|
|
|
|
|
|
|
R2: группы
N группы |
ФИО старосты |
специальность |
количество студентов |
|
|
|
|
|
|
|
|
R3: студент
Номер зачетки |
ФИО |
стипендия |
|
|
|
|
|
|
|
|
|
R4: Таблица связей
N факультета |
N Группы |
N зачетки |
|
|
|
НФБК (нормальная форма Бойса-Кодда)
Отношение находится в НФБК в том и только том случае, если оно находится в 3НФ и каждый детерминант отношения является возможным ключом отношения.
|
|
|
|
R: Экзамены(Nз, Ид.N, Дисциплина, Дата, Оценка)
Идентификационный номер является детерминантом, но не является возможным ключом, а только частью возможного ключа –> нормальная форма Бойса-Кодда нарушена. Необходимо провести декомпозицию.
R1 |
R2 |
Номер зачетки |
Номер зачетки |
Дисциплина |
Ид_номер |
Дата |
|
Оценка |
|
Для R2: номер зачетки или идентификационный номер
R2 в НФБК так как идентификационный номер детерминант и возможный ключ.