Реляционная модель данных Разработана Е.Ф.Коддом (E.F.Codd) в 1970 г.
Достоинства Небольшой набор абстракций Мощный математический аппарат Ненавигационное манипулирование данными
Недостатки Ограниченность при использовании в областях применения, требующих предельно сложные структуры данных Невозможность адекватного отображения семантики предметной области
Особенности реляционной модели данных Определена манипуляционная часть Имеются конкретные языки описания данных, ограничений, накладываемых на данные, и манипулирования данными Единый язык SQL
Базовые структурные компоненты (1) Домены – простые и составные Простые домены: ГОД = {1985, 2003, 2000} ДЕНЬГИ = {500, 1000, 850} Составной домен: ИСТОРИЯ ЗАРПЛАТЫ = {{, }, { }, {,, }}
Базовые структурные компоненты (2) Отношение Даны D 1, D 2, …, D n – домены Отношение R = { таких, что d i D i, i = 1, 2, …, n } Пример: D 1 = {a, b, c}, D 2 = {1, 2}. R 1 = {, } R 2 = {,, }
Базовые структурные компоненты (3) Атрибуты Способ использования домена в отношении Схема отношения Именованная совокупность пар
Базовые структурные компоненты (4) Пример: Домены: ЧИСЛО, СТРОКА Схема отношения ОТДЕЛ: ОТДЕЛ ( Номер отдела: ЧИСЛО, Название: СТРОКА )
Ненормализованное отношение (1) Составной домен: ИСТОРИЯ ЗАРПЛАТЫ ( ГОД, ДЕНЬГИ ) Схема отношения СОТРУДНИК СОТРУДНИК ( Номер сотрудника: ЧИСЛО, Имя: СТРОКА, Зарплата: ИСТОРИЯ ЗАРПЛАТЫ )
Ненормализованное отношение (2) Номер сотрудника ИмяЗарплата 1Иванов 1985, , Петров 1985, , , 1000
Нормализованное отношение Номер сотрудника ИмяГод Выплаты 1Иванов Иванов Петров Петров Петров
Представление сущности Ключи отношения Первичный ключ – PK (Primary Key) –простой –составной Альтернативный ключ – AK (Alternate Key) Пример: КАФЕДРА (Номер кафедры, Название (АК))
Представление связи 1:n (1) Внешний ключ – FK (Foreign Key) Отношения: СОТРУДНИК (Номер сотрудника, Имя, Год рождения) ОТДЕЛ (Номер отдела, Название (АК)) Связь СОТРУДНИК – ОТДЕЛ СОТРУДНИК (Номер сотрудника, Имя, Год рождения, Номер отдела (FK))
Представление связи 1:n (2) ОТДЕЛНомер отдела Название Первичный ключ Альтернативный ключ 10Бухгалтерия 20 Административно- хозяйственный 30Библиотека
Представление связи 1:n (3) СОТРУД- НИК Номер сотрудника Имя Год рождения Номер отдела Первич- ный ключ Внешний ключ 1Иванов Петров Нельзя вставить кортеж
Представление связи n:n (1) Отношения: ПОСТАВЩИК (Номер поставщика, Имя, Адрес) ДЕТАЛЬ (Номер детали, Название, Цена) Связь ПОСТАВЩИК – ДЕТАЛЬ ПОСТАВКА (Номер поставщика (FK1), Номер детали (FK2), Количество)
Представление связи n:n (2) ПОСТАВЩИК Номер поставщика Имя Адрес Первичный ключ S1Иванов Орел S2Петров Тюмень S3Сидоров Пермь
Представление связи n:n (3) ДЕТАЛЬНомер детали НазваниеЦена Первичный ключ P1Болт 18 P2Винт 14 P3Гайка 10 P4Шуруп 15
Представление связи n:n (4) ПОСТАВКА Первичный ключ отношения связи Количество Номер поставщика Номер детали FK для ПОСТАВЩИК FK для ДЕТАЛЬ Собственный атрибут S1P1100 S1P2200 S2P3150
Ограничения целостности Целостность сущностей: ограничение PK уникальность других атрибутов (АК) обязательность значений атрибутов допустимость значений атрибутов Ссылочная целостность ОТДЕЛ ( Номер отдела, Название (АК) ) СОТРУДНИК ( Номер сотрудника, Имя, Год рождения, Номер отдела (FK) )
Ссылочная целостность (1)
Ссылочная целостность (2) Операции с дочерним отношением Вставка – корректное значение FK Удаление – без ограничений Модификация FK – корректное новое значение FK
Ссылочная целостность (3) Операции с родительским отношением Вставка – без ограничений Удаление – реакция на связанные записи: –не удалять –удалить все –установить пустое значение (отсутствие связи) Модификация PK – реакция аналогична
Язык определения данных Возможности: Создание домена Создание отношения Определение ограничений целостности
Соответствие между компонентами РМД и РБД РМД – реляционная модель данных РБД – реляционная база данных Структурный компонент РМДЭлемент РБД Домен Тип данных Отношение Таблица Атрибут Колонка таблицы Кортеж отношения Строка таблицы
Ограничения целостности в РБД Тип ограничения целостности Представление в SQL Первичный ключPRIMARY KEY Уникальность значенияUNIQUE Обязательность значенияNULL или NOT NULL Допустимость значенияCHECK Ссылочные ограниченияFOREIGN KEY
Предложения SQL для определения данных CREATE тип_объекта DROP тип_объекта ALTER тип_объекта Типы объектов: и другие DATABASEINDEX TABLETRIGGER VIEWPROCEDURE
Создание таблицы (1) CREATE TABLE имя_таблицы ( имя_колонки тип_данных ограничения_на_колонку,... табличное_ограничение,... )
Создание таблицы (2) Ссылочное ограничение на колонку: … REFERENCES родительская_таблица ( имя_PK в родительской таблице ) ON DELETE реакция Реакция: RESTRICT CASCADE SET NULL
Создание таблицы (3) Табличное ссылочное ограничение: FOREIGN KEY( список_колонок_таблицы ) REFERENCES родительская_таблица ( PK из родительской таблицы ) ON DELETE реакция
Пример 1 CREATE TABLE P( P_ID INT NOT NULL PRIMARY KEY IDENTITY, PName VARCHAR(20) NOT NULL UNIQUE, Price DECIMAL(6,0) NOT NULL CHECK(Price > 0) )
Пример 2 CREATE TABLE SP( S_ID INT NOT NULL REFERENCES S ON DELETE RESTRICT, P_ID SMALLINT NOT NULL, Qty INT NOT NULL CHECK(QTY > 0), PRIMARY KEY(S_ID, P_ID), FOREIGN KEY(P_ID) REFERENCES PON DELETE RESTRICT )
Удаление таблицы DROP TABLE имя_таблицы Нельзя удалить родительскую таблицы, если существует хотя бы одна связанная с ней дочерняя таблица