
- •Ис поддержки принятия решений.
- •Общая характеристика реляционной модели данных.
- •Типы данных
- •Типы данных, используемые в реляционной модели
- •Отношения, атрибуты, кортежи отношений.
- •Тема: Первая нормальная формула
- •Базовые концепции реляционных бд db2.
- •Объекты db2, используемые для хранения бд.
- •Контейнер Контейнер — это физическое хранилище. Имя контейнера — это имя папки (или имя устройства) или имя файла (для dms).
- •Буферный пул
- •Расчет физического пространства для таблиц.
- •Объекты системы
- •Целостность данных
- •Потенциальные ключи
- •Внешние ключи.
- •Целостность внешних ключей.
- •Операции, в результате которых нарушается ссылочная целостность:
- •Стратегии поддержания ссылочной целостности.
- •Дополнительные стратегии поддержки ссылочной целостности.
- •Нормальная форма отношений.
- •Критерий оценки качества логической модели данных.
- •Нормализация таблиц
- •Замкнутость реляционной алгебры
- •Зависимые реляционные операторы.
- •Запросы, невыразимые средствами реляционной алгебры.
- •Элементы языка sql.
- •Синтаксис языка sql с использованием языка Бэкуса-Наура.
- •Замечание
- •Замечание
- •Синтаксис условных выражений (из раздела where)
- •Порядок выполнения оператора select
- •Выражение средствами sql операторов реляционной алгебры
Критерий оценки качества логической модели данных.
Адекватность БД предметной области, т.е.
Состояние БД в каждый момент времени должно соответствовать состоянию предметной области
Изменение состояния предметной области должно приводить к соответствующему изменению состояния БД.
Ограничения предметной области, отраженные в модели предметной области, должны некоторым образом отражаться и учитываться в БД.
Легкость разработки и сопровождения БД (есть программный код, триггеры).
Скорость выполнения операции обновления данных.
Хранимая процедура — это процедура, хранящаяся непосредственно в БД в откомпилированном виде и может запускаться пользователями и приложениями (например, код в С++ со вставками SCL (?)).
Триггер — это хранимая процедура, связанная с определенным событием (запускается по определенному событию).
Скорость операции обновления данных зависит:
На уровне логического моделирования определяем отношения и атрибуты этих отношений. На этом уровне можно объявлять индексы, структуры и др. Количество атрибутов и отношений влияют на скорость обновления данных. В БД, требующих постоянных изменений, производительность определяется скоростью выполнения большого количества небольших операций, например операция вставки записи в таблицу. Если для таблицы не созданы индексы, то операция вставки выполняется с одинаковой скоростью, независимо от размеров таблицы.
Операции обновления и удаления
Прежде чем удалить запись ее нужно найти. Скорость увеличивается с увеличением записей в таблице и не зависит от количества атрибутов.
Следствие: чем больше атрибутов имеет отношение, тем больше вероятность того, что на каждый атрибут будет построен индекс (индекс представляет собой сбалансированное дерево).
Пример:
Предметную область опишем в следующем неформальном описании:
сотрудники организации выполняют проекты;
проекты состоят из нескольких заданий;
каждый сотрудник может участвовать в одном или нескольких проектах, или временно не участвовать;
над каждым проектом могут участвовать несколько сотрудников или временно проект может быть приостановлен, т.е. над ним не работает ни один сотрудник;
над каждым заданием в проекте работает ровно один сотрудник;
каждый сотрудник числится в одном отделе;
каждый сотрудник имеет телефон, находящийся в отделе.
Дополнительное уточнение, связанное с уникальностью:
о каждом сотруднике нужно хранить номер (уникальный) и фамилию;
каждый отдел имеет уникальный номер;
каждый проект имеет номер (уникальный) и наименование;
каждая работа имеет номер, уникальный в рамках проекта.
Отношение R находится во второй нормальной форме тогда и только тогда, когда отношение находится в первой нормальной форме и нет не ключевых атрибутов, зависящих от части ключа.
Не ключевой атрибут — это атрибут, не входящий в состав никакого потенциального ключа.
Лекция №9 (4.04.02.)
Нормализация таблиц
Рассмотрим четыре нормальные формы. Каждая нормальная форма определяет уровень абстракции.
Первая нормальная форма (1 НФ).
Таблица находится в 1 НФ, если в каждой ячейке таблицы находится только одно значение, а не множество значений. Таблица в 1 НФ не обязательно удовлетворяет 2 НФ и высшим.
PART (primary key) |
WAREHOUSE |
P0010 |
Warehouse A, Warehouse B, Warehouse C. |
P0020 |
Warehouse B, Warehouse D. |
Эта таблица не является таблицей в 1 НФ. Чтобы эту таблицу нормализовать, необходимо разбить ее так, чтобы каждая строка была бы уникальной. Т.е. получится такая таблица:
PART (primary key) |
WAREHOUSE |
P0010 |
Warehouse A |
P0010 |
Warehouse B |
P0010 |
Warehouse C |
P0020 |
Warehouse B |
P0020 |
Warehouse D |
Можно так же завести третью колонку уникальных идентификаторов, чтобы использовать ее как первичный ключ для доступа к этой таблице.
Вторая нормальная форма (2 НФ).
Таблица находится во 2 НФ, если каждая колонка, которая не является частью ключа, зависит от существующего ключа. 2 НФ нарушается, если не ключевая колонка зависит от части составного ключа.
PART (primary key) |
WAREHOUSE (primary key) |
Quantity |
WAREHOUSE- ADDRESS |
P0010 |
Warehouse A |
400 |
New Field Road |
P0010 |
Warehouse B |
543 |
Greenway |
Эта таблица не удовлетворяет 2 НФ, так как колонка WAREHOUSE ADDRESS зависит только от части составного ключа, а именно от колонки WAREHOUSE.
Для нормализации необходимо разбить эту таблицу на 2 таблички:
WAREHOUSE–TABLE
WAREHOUSE (primary key) |
WAREHOUSE- ADDRESS |
Warehouse A |
New Field Road |
Warehouse B |
Greenway |
PART–TABLE–WAREHOUSE примет вид:
PART (primary key) |
WAREHOUSE (foreign key) |
Quantity |
P0010 |
Warehouse A |
400 |
P0010 |
Warehouse B |
543 |
P0010 |
Warehouse C |
329 |
P0020 |
Warehouse A |
200 |
2 НФ помогает избавиться от избыточности и несогласованности.
Проблемы, возникающие при работе с исходной (ненормализованной) таблицей:
Адрес хранилища повторяется в каждой записи для каждой части, которая хранится в этом хранилище (Избыточность).
Если адрес хранилища изменяется, каждая строка, содержащая часть, которая хранится в этом хранилище, должна быть изменена.
Если одному хранилищу соответствует несколько адресов, то возникает несогласованность данных.
Если в какой-то момент в некотором хранилище не будет сохраняться ни одной части, то возможна потеря этого хранилища и его адреса.
Третья нормальная форма (3 НФ).
Таблица находится в 3 НФ, если каждая неключевая колонка не зависит от других неключевых колонок, а зависит только от ключа.
EMPNO (primary key) |
FIRSTNAME |
LASTNAME |
WORKDEPT |
DEPTNAME |
00029 |
John |
Parker |
E11 |
Operations |
000320 |
Ramlal |
Mehta |
E21 |
Software Support |
000310 |
Maude |
Set |
E11 |
Operations |
Не ключевые столбцы
(но они зависимы)
Если один из сотрудников перейдет в другой отдел, то надо изменить и идентификатор отдела, и его название. А если будут еще зависимые от этих колонки, то надо будет изменять и их.
Для нормализации необходимо разбить таблицу на две таблицы: первая с описанием сотрудников, вторая — с описанием отделов.
Единственная проблема заключается в том, что для SQL-оператора SELECT необходимо будет использовать сложный оператор JOIN.
Четвертая нормальная форма (4 НФ).
Таблица находится в 4 НФ, если нет строк, содержащих 2 или более многозначных независимых фактов об одной сущности. Рассматриваются такие сущности, как сотрудник, его профессиональная подготовка и языки, которыми он владеет. Каждый сотрудник обладает профессиональными навыками в нескольких областях и знает несколько языков.
Рассматриваются два отношения: первое — между сотрудником и его профессиональными знаниями, второе — между сотрудником и языками, которыми он владеет.
EMPNO (primary key) |
SKILLS |
LANGUAGE |
000130 |
Data modeling |
English |
000130 |
Database design |
English |
000230 |
Application design |
Spanish |
000230 |
Database design |
Spanish |
Результатом приведения к 4 НФ будут две таблицы, нормализованные до 4 НФ.
Каждая последующая НФ включает в себя все предыдущие, т.е. если таблица удовлетворяет 3 НФ, то она удовлетворяет так же 2 НФ и 1 НФ.
Если факты о сущности являются взаимозависимы, то такая таблица не может быть разбита на две таблицы.
Лекция №10 (11.04.02)