330 likes | 477 Views
Реляционная модель данных. Разработана Е.Ф.Коддом ( E.F.Codd) в 1970 г. Достоинства. Небольшой набор абстракций Мощный математический аппарат Ненавигационное манипулирование данными. Недостатки.
E N D
Реляционная модель данных Разработана Е.Ф.Коддом (E.F.Codd) в 1970 г.
Достоинства • Небольшой набор абстракций • Мощный математический аппарат • Ненавигационное манипулирование данными
Недостатки • Ограниченность при использовании в областях применения, требующих предельно сложные структуры данных • Невозможность адекватного отображения семантики предметной области
Особенности реляционной модели данных • Определена манипуляционная часть • Имеются конкретные языки описания данных, ограничений, накладываемых на данные, и манипулирования данными • Единый язык SQL
Базовые структурные компоненты (1) • Домены – простые и составные Простые домены: ГОД = {1985, 2003, 2000} ДЕНЬГИ = {500, 1000, 850} Составной домен: ИСТОРИЯ ЗАРПЛАТЫ = {{<1985, 500>, <2000, 1000>}, {<2000, 850>}, {<1985, 850>, <2000, 500>, <2003, 1000>}}
Базовые структурные компоненты (2) • Отношение Даны D1, D2, …, Dn – домены Отношение R = { <d1, d2, …, dn> таких, что diDi, i = 1, 2, …, n } Пример: D1 = {a, b, c}, D2 = {1, 2}. R1 = {<a, 2>, <c, 1>} R2 = {<a, 2>, <b, 2>, <a, 1>}
Базовые структурные компоненты (3) • Атрибуты Способ использования домена в отношении • Схема отношения Именованная совокупность пар <имя атрибута : имя домена>
Базовые структурные компоненты (4) Пример: Домены: ЧИСЛО, СТРОКА Схема отношения ОТДЕЛ: ОТДЕЛ ( Номер отдела: ЧИСЛО, Название: СТРОКА )
Ненормализованное отношение (1) Составной домен: ИСТОРИЯ ЗАРПЛАТЫ ( ГОД, ДЕНЬГИ ) Схема отношения СОТРУДНИК СОТРУДНИК ( Номер сотрудника: ЧИСЛО, Имя: СТРОКА, Зарплата: ИСТОРИЯ ЗАРПЛАТЫ )
Представление сущности Ключи отношения • Первичный ключ – PK (Primary Key) • простой • составной • Альтернативный ключ – AK (Alternate Key) Пример: КАФЕДРА (Номер кафедры, Название (АК))
Представление связи 1:n (1) Внешний ключ – FK (Foreign Key) Отношения: СОТРУДНИК (Номер сотрудника, Имя, Год рождения) ОТДЕЛ (Номер отдела, Название (АК)) Связь СОТРУДНИК – ОТДЕЛ СОТРУДНИК (Номер сотрудника, Имя, Год рождения, Номер отдела (FK))
Представление связи n:n (1) Отношения: ПОСТАВЩИК (Номер поставщика, Имя, Адрес) ДЕТАЛЬ (Номер детали, Название, Цена) Связь ПОСТАВЩИК – ДЕТАЛЬ ПОСТАВКА (Номер поставщика (FK1), Номер детали (FK2), Количество)
Ограничения целостности Целостность сущностей: • ограничение PK • уникальность других атрибутов (АК) • обязательность значений атрибутов • допустимость значений атрибутов Ссылочная целостность ОТДЕЛ ( Номер отдела, Название (АК) ) СОТРУДНИК ( Номер сотрудника, Имя, Год рождения, Номер отдела (FK) )
Ссылочная целостность (2) Операции с дочерним отношением • Вставка – корректное значение FK • Удаление – без ограничений • Модификация FK – корректное новое значение FK
Ссылочная целостность (3) Операции с родительским отношением • Вставка – без ограничений • Удаление – реакция на связанные записи: • не удалять • удалить все • установить пустое значение (отсутствие связи) • Модификация PK – реакция аналогична
Язык определения данных Возможности: • Создание домена • Создание отношения • Определение ограничений целостности
Соответствие между компонентами РМД и РБД РМД – реляционная модель данных РБД – реляционная база данных
Предложения SQL для определения данных • CREATE тип_объекта • DROP тип_объекта • ALTERтип_объекта Типы объектов: и другие
Создание таблицы (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 KEYIDENTITY, 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 P ON DELETE RESTRICT )
Удаление таблицы DROP TABLE имя_таблицы Нельзя удалить родительскую таблицы, если существует хотя бы одна связанная с ней дочерняя таблица