Реляционная модель данных Курс «Базы данных» Вадим Цесько Санкт-Петербургский государственный политехнический университет 18 февраля 2012 г. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 1 / 22 Содержание 1 Модели данных 2 Реляционная модель данных 3 Операции над отношениями Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 2 / 22 Модель данных Модель данных Набор понятий, описывающий данные и способы обработки данных, связи между ними и ограничения, накладываемые на данные. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 3 / 22 Модель данных Модель данных Набор понятий, описывающий данные и способы обработки данных, связи между ними и ограничения, накладываемые на данные. Модель данных определяет: Структуры Ограничения Операции Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 3 / 22 Структуры и ограничения Структуры — сущности БД: Элемент данных — наименьшая именованная единица данных, с помощью которой выполняется построение всех остальных структур Группа — именованная совокупность элементов данных, которые можно рассматривать как единое целое Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 4 / 22 Структуры и ограничения Структуры — сущности БД: Элемент данных — наименьшая именованная единица данных, с помощью которой выполняется построение всех остальных структур Группа — именованная совокупность элементов данных, которые можно рассматривать как единое целое Ограничения используются СУБД для контроля целостности данных при выполнении различных операций. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 4 / 22 Операции над данными Операции Переводят БД из одного допустимого состояния в другое. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 5 / 22 Операции над данными Операции Переводят БД из одного допустимого состояния в другое. Основные операции: Идентификация данного и нахождение его позиции в БД Выборка (чтение) данных Добавление новых данных Удаление данных Модификация данных Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 5 / 22 Операции над данными Операции Переводят БД из одного допустимого состояния в другое. Основные операции: Идентификация данного и нахождение его позиции в БД Выборка (чтение) данных Добавление новых данных Удаление данных Модификация данных Идентификация данных выполняется с учётом: Значений атрибутов данного Связей между данными Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 5 / 22 Операции над данными Операции Переводят БД из одного допустимого состояния в другое. Основные операции: Идентификация данного и нахождение его позиции в БД Выборка (чтение) данных Добавление новых данных Удаление данных Модификация данных Идентификация данных выполняется с учётом: Значений атрибутов данного Связей между данными Операции различаются по получаемому результату: Изменение или извлечение одной записи Изменение или извлечение нескольких записей Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 5 / 22 Реляционная модель данных Реляционная модель данных Модель данных, основанная на реляционной алгебре. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 6 / 22 Реляционная модель данных Реляционная модель данных Модель данных, основанная на реляционной алгебре. Реляционная алгебра Набор операторов, использующих отношения в качестве аргументов и возвращающих отношения в качестве результата. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 6 / 22 Реляционная модель данных Реляционная модель данных Модель данных, основанная на реляционной алгебре. Реляционная алгебра Набор операторов, использующих отношения в качестве аргументов и возвращающих отношения в качестве результата. Декартово произведение Для заданных конечных множеств D1 , D2 , . . . , Dn декартовым произведением D1 × D2 × · · · × Dn называется множество кортежей вида: d1 × d2 × · · · × dn , — где di ∈ Di . Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 6 / 22 Реляционная модель данных Реляционная модель данных Модель данных, основанная на реляционной алгебре. Реляционная алгебра Набор операторов, использующих отношения в качестве аргументов и возвращающих отношения в качестве результата. Декартово произведение Для заданных конечных множеств D1 , D2 , . . . , Dn декартовым произведением D1 × D2 × · · · × Dn называется множество кортежей вида: d1 × d2 × · · · × dn , — где di ∈ Di . Множества Di называются доменами. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 6 / 22 Отношения Отношение Подмножество декартова произведения D1 × D2 × · · · × Dn . Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 7 / 22 Отношения Отношение Подмножество декартова произведения D1 × D2 × · · · × Dn . Кортеж Элемент d1 × d2 × · · · × dn декартова произведения D1 × D2 × · · · × Dn . Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 7 / 22 Отношения Отношение Подмножество декартова произведения D1 × D2 × · · · × Dn . Кортеж Элемент d1 × d2 × · · · × dn декартова произведения D1 × D2 × · · · × Dn . Пример A = {a1 , a2 , a3 } и B = {b1 , b2 } A × B = {a1 × b1 , a2 × b1 , a3 × b1 , a1 × b2 , a2 × b2 , a3 × b2 } R1 = {a1 × b1 , a1 × b2 } и R2 = {a1 × b2 , a2 × b2 , a3 × b1 } Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 7 / 22 Отношения Отношение Подмножество декартова произведения D1 × D2 × · · · × Dn . Кортеж Элемент d1 × d2 × · · · × dn декартова произведения D1 × D2 × · · · × Dn . Пример A = {a1 , a2 , a3 } и B = {b1 , b2 } A × B = {a1 × b1 , a2 × b1 , a3 × b1 , a1 × b2 , a2 × b2 , a3 × b2 } R1 = {a1 × b1 , a1 × b2 } и R2 = {a1 × b2 , a2 × b2 , a3 × b1 } Степень отношения Число доменов в отношении (n). Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 7 / 22 Отношения Отношение Подмножество декартова произведения D1 × D2 × · · · × Dn . Кортеж Элемент d1 × d2 × · · · × dn декартова произведения D1 × D2 × · · · × Dn . Пример A = {a1 , a2 , a3 } и B = {b1 , b2 } A × B = {a1 × b1 , a2 × b1 , a3 × b1 , a1 × b2 , a2 × b2 , a3 × b2 } R1 = {a1 × b1 , a1 × b2 } и R2 = {a1 × b2 , a2 × b2 , a3 × b1 } Степень отношения Число доменов в отношении (n). Мощность отношения Количество кортежей в отношении. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 7 / 22 Табличное представление Отношения удобно представлять в виде таблиц: Строка таблицы — кортеж — сущность Таблица — отношение — набор сущностей Столбец — домен — атрибут Поле — элемент домена — значение атрибута Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 8 / 22 Табличное представление Отношения удобно представлять в виде таблиц: Строка таблицы — кортеж — сущность Таблица — отношение — набор сущностей Столбец — домен — атрибут Поле — элемент домена — значение атрибута Пример На доске. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 8 / 22 Табличное представление Отношения удобно представлять в виде таблиц: Строка таблицы — кортеж — сущность Таблица — отношение — набор сущностей Столбец — домен — атрибут Поле — элемент домена — значение атрибута Пример На доске. Схема БД Набор именованных отношений. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 8 / 22 Первичный ключ Первичный ключ сущности (Primary Key, PK) Набор атрибутов, уникально идентифицирующих сущность. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 9 / 22 Первичный ключ Первичный ключ сущности (Primary Key, PK) Набор атрибутов, уникально идентифицирующих сущность. Пример Предметная область — кафедра КСПТ Сущности: студенты, группы, специальности, предметы, преподаватели, НИР и т. д. Студент: (Имя, Фамилия, Отчество, Дата рождения, Номер паспорта, Номер аттестата, Место проживания, ...) Группа: (Номер группы, Куратор, ...) НИР: (Тема, Руководитель, Заказчик, ...) Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 9 / 22 Суррогатный первичный ключ Использование: Сущности без первичного ключа Увеличение эффективности и наглядности Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 10 / 22 Суррогатный первичный ключ Использование: Сущности без первичного ключа Увеличение эффективности и наглядности Было Студент: (Имя, Фамилия, Отчество, Дата рождения, ...) Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 10 / 22 Суррогатный первичный ключ Использование: Сущности без первичного ключа Увеличение эффективности и наглядности Было Студент: (Имя, Фамилия, Отчество, Дата рождения, ...) Стало Студент: (ID, Имя, Фамилия, Отчество, Дата рождения, ...) Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 10 / 22 Внешний ключ Внешний ключ (Foreign Key, FK) Организует связи между сущностями. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 11 / 22 Внешний ключ Внешний ключ (Foreign Key, FK) Организует связи между сущностями. Добавляется для подчинённого набора сущностей: Атрибута подчинённой сущности Главной сущности Атрибута главной сущности (обычно PK) Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 11 / 22 Внешний ключ Внешний ключ (Foreign Key, FK) Организует связи между сущностями. Добавляется для подчинённого набора сущностей: Атрибута подчинённой сущности Главной сущности Атрибута главной сущности (обычно PK) Пример На доске. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 11 / 22 Свойства отношений Отсутствие кортежей-дубликатов ⇒ наличие у каждого кортежа первичного ключа Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 12 / 22 Свойства отношений Отсутствие кортежей-дубликатов ⇒ наличие у каждого кортежа первичного ключа Отсутствие упорядоченности кортежей Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 12 / 22 Свойства отношений Отсутствие кортежей-дубликатов ⇒ наличие у каждого кортежа первичного ключа Отсутствие упорядоченности кортежей Отсутствие упорядоченности атрибутов ⇒ для идентификации всегда используется имя атрибута Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 12 / 22 Свойства отношений Отсутствие кортежей-дубликатов ⇒ наличие у каждого кортежа первичного ключа Отсутствие упорядоченности кортежей Отсутствие упорядоченности атрибутов ⇒ для идентификации всегда используется имя атрибута Атомарность значений атрибутов ⇒ в качестве значений домена не могут использоваться множества значений (отношения) Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 12 / 22 Ограничения целостности Целостность данных Механизм поддержания соответствия базы данных предметной области. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 13 / 22 Ограничения целостности Целостность данных Механизм поддержания соответствия базы данных предметной области. Для поддержания целостности используются ограничения различных типов: На допустимые значения атрибута Первичные ключи Ограничения уникальности атрибута Внешние ключи Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 13 / 22 Операции над данными Ещё раз Все операции в реляционной модели данных выполняются над отношениями, результатами операций также являются отношения. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 14 / 22 Операции над данными Ещё раз Все операции в реляционной модели данных выполняются над отношениями, результатами операций также являются отношения. Добавить Необходимо указать имя отношения, ключ и другие атрибуты кортежа. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 14 / 22 Операции над данными Ещё раз Все операции в реляционной модели данных выполняются над отношениями, результатами операций также являются отношения. Добавить Необходимо указать имя отношения, ключ и другие атрибуты кортежа. Удалить Необходимо указать имя отношения, а также кортеж или группу кортежей, подлежащих удалению. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 14 / 22 Операции над данными Ещё раз Все операции в реляционной модели данных выполняются над отношениями, результатами операций также являются отношения. Добавить Необходимо указать имя отношения, ключ и другие атрибуты кортежа. Удалить Необходимо указать имя отношения, а также кортеж или группу кортежей, подлежащих удалению. Изменить Необходимо указать имя отношения, указать кортеж или группу кортежей, подлежащих изменению, а также правила изменения для каждого изменяемого атрибута. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 14 / 22 Операции над данными Проекция Выборка Пересечение Объединение Разность Соединение ... Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 15 / 22 Проекция отношения Проекция Выборка из каждого кортежа отношения некоторых атрибутов и удаление из полученного отношения одинаковых кортежей. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 16 / 22 Проекция отношения Проекция Выборка из каждого кортежа отношения некоторых атрибутов и удаление из полученного отношения одинаковых кортежей. Пример SELECT DISTINCT id, name FROM students Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 16 / 22 Выборка из отношения Выборка Результатом является новое отношение с теми же атрибутами, содержащее подмножество кортежей исходного отношения, удовлетворяющих условию выборки. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 17 / 22 Выборка из отношения Выборка Результатом является новое отношение с теми же атрибутами, содержащее подмножество кортежей исходного отношения, удовлетворяющих условию выборки. Пример SELECT * FROM students WHERE name LIKE ’A%’ Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 17 / 22 Объединение отношений Объединение Результирующее отношение содержит все кортежи исходных отношений за исключением повторяющихся. Исходные отношения должны быть определены по одной схеме. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 18 / 22 Объединение отношений Объединение Результирующее отношение содержит все кортежи исходных отношений за исключением повторяющихся. Исходные отношения должны быть определены по одной схеме. Пример SELECT * FROM bad_students UNION SELECT * FROM good_students Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 18 / 22 Пересечение отношений Пересечение Результирующее отношение содержит все неповторяющиеся кортежи, которые присутствуют в обоих исходных отношениях. Исходные отношения должны быть определены по одной схеме. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 19 / 22 Пересечение отношений Пересечение Результирующее отношение содержит все неповторяющиеся кортежи, которые присутствуют в обоих исходных отношениях. Исходные отношения должны быть определены по одной схеме. Пример SELECT * FROM bad_students INTERSECT SELECT * FROM good_students Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 19 / 22 Разность отношений Разность Результирующее отношение содержит все кортежи первого отношения, которые отсутствуют во втором отношении. Исходные отношения должны быть определены по одной схеме. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 20 / 22 Разность отношений Разность Результирующее отношение содержит все кортежи первого отношения, которые отсутствуют во втором отношении. Исходные отношения должны быть определены по одной схеме. Пример SELECT * FROM all_students MINUS SELECT * FROM bad_students Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 20 / 22 Соединение отношений Соединение Для каждой пары кортежей из исходных отношений, удовлетворяющих условию соединения, в результирующем отношении создаётся кортеж, состоящий из всех атрибутов исходных кортежей. Повторяющиеся атрибуты исключаются. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 21 / 22 Соединение отношений Соединение Для каждой пары кортежей из исходных отношений, удовлетворяющих условию соединения, в результирующем отношении создаётся кортеж, состоящий из всех атрибутов исходных кортежей. Повторяющиеся атрибуты исключаются. Пример SELECT * FROM students, marks WHERE students.id = marks.student_id Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 21 / 22 Объединение операций Обычно над отношениями выполняются операции, являющиеся композицией нескольких исходных операций. Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 22 / 22 Объединение операций Обычно над отношениями выполняются операции, являющиеся композицией нескольких исходных операций. Пример SELECT id, name FROM students WHERE name LIKE ’A%’ Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 22 / 22 Объединение операций Обычно над отношениями выполняются операции, являющиеся композицией нескольких исходных операций. Пример SELECT id, name FROM students WHERE name LIKE ’A%’ Ещё один пример SELECT * FROM students, groups WHERE students.group_id = groups.id AND students.age > 20 Вадим Цесько (СПбГПУ) Реляционная модель данных 18 февраля 2012 г. 22 / 22