Реляционные базы данных основаны на реляционной модели данных (РМД), в которой каждая единица данных в базе данных однозначно определена именем таблица (называемой отношением), идентификатором записи/кортежа и именем поля.
Основные сущности:
- База данных - Database (наименование, схема базы данных)
- Таблица/Отношение - Table (значение отношения (схема отношения, поле отношения), наименование, первичный/потенциальный/внешний/уникальный/суррогатный ключи)
- Атрибут/Столбец - Column (наименование, тип данных, домен, значение)
- Строка/Запись/Кортеж - Row (множество значений)
- Индекс/Указатель - Index
- Снимок/Представление/Выборка - View
- Синоним - Synonym
- Владелец - Owner
- Пользователь - User (права/привилегии/полномочия, группа, имя)
- Роль/Группа - Role/Group
- Триггеры
- Хранимые процедуры
Основные типы данных:
- Целочисленные - INT, BIGINT, SMALLINT;
- Дробные - NUMERIC, DECIMAL, FLOAT, DOUBLE;
- Строковые - CHAR, VARCHAR, STRING;
- Календарные - DATE, TIME, DATETIME, TIMESTAMP;
- Отсутствие - Null;
- Другие - XML, JSON.
Преимущества:
- Простая схема данных;
- Логическая и физическая независимость от данных;
- Методологический подход к проектированию.
Недостатки:
- Относительно низкая скорость доступа к данным;
- Меньшая гибкость для пользовательских типов данных;
- Не является универсальным решением.
Реляционная модель данных: понятия (объекты) -> операторы -> описание структуры -> доступ к данным:
Структурная часть:
- тип данных - элементы строго типизированы;
- домен - подмножество значений для определенного типа данных (возможные значения конкретного поля);
- атрибут - именованная характеристика как свойство сущности, определяемая на некотором типе данных или домене;
- кортеж - множество упорядоченных триплетов: имя атрибута, тип данных или домен, значение поля;
- схема отношения - именованное (название таблицы) множество упорядоченных пар: имя атрибута, тип данных или домен:
Схема базы данных - множество именованных схем отношений. Отношение содержит: тело отношения (множество кортежей) и значение отношения (пара множеств: схема - тело отношения):
Манипуляционная часть:
- Реляционная алгебра;
- Реляционное исчисление;
- Язык манипулирования данными - Data Manipulating Lang (DML SQL).
Ограничение целостности - набор правил, которым должна соответствовать база данных, а СУБД должна их проверять, например, один предок и несколько потомков для одного узла):
- Целостность сущности:
- Кортежи должны быть отличимы, т.е. иметь уникальный ключ. Потенциальный ключ - минимальное подмножество множества атрибутов отношения такое, что для любого кортежа отношения набор значений отличается от другого. Обладает уникальностью и минимальностью (минимальный набор значений). Ключи делятся по количеству атрибутов на простые и составные. Первичный ключ используют для доступа к кортежу. Атрибуты, входящие в состав ключа не могут содержать неопределенных (Null) значений.
- Ссылочная целостность
- Внешний ключ: специальный атрибут (набор атрибутов) отношения такой, что значения данного атрибута (набора) в некотором отношении будут соответствовать значениям атрибутов первичного ключа некоторого отношения (можно сказать, что множество значений внешнего ключа некоторого отношения R2 является нестрогим подмножеством множества значений потенциального ключа некоторого отношения R1, причем, отношение R1 называют главным/целевым/родительским (master), R2 - подчиненным (slave). Например, две таблицы - сотрудники и отделы, у каждого сотрудника есть табельный номер и он закреплен за определенным отделом, при этом поле "идентификатор отдела" в таблице "сотрудник" будет связано с полем "идентификатор" таблицы "отдел" и будет являться внешним ключом. При этом главным отношением R1 будет таблица "отдел", а таблица "сотрудник" R2 подчиненным. Внешний ключ должен быть связан с первичным ключом, т.е. по внешнему ключу должен находиться определенный кортеж, или если допускает СУБД, значения должны быть Null, т.е. в данный момент не ссылается ни на кого.
- Блокировка операции (при попытке удалить значение, на которое есть ссылка);
- Установка значений в Null (при удалении значения связанной таблицы);
- Каскадное удаление (удаление связанных кортежей из подчиненной таблицы при удалении главной).
- Внешний ключ: специальный атрибут (набор атрибутов) отношения такой, что значения данного атрибута (набора) в некотором отношении будут соответствовать значениям атрибутов первичного ключа некоторого отношения (можно сказать, что множество значений внешнего ключа некоторого отношения R2 является нестрогим подмножеством множества значений потенциального ключа некоторого отношения R1, причем, отношение R1 называют главным/целевым/родительским (master), R2 - подчиненным (slave). Например, две таблицы - сотрудники и отделы, у каждого сотрудника есть табельный номер и он закреплен за определенным отделом, при этом поле "идентификатор отдела" в таблице "сотрудник" будет связано с полем "идентификатор" таблицы "отдел" и будет являться внешним ключом. При этом главным отношением R1 будет таблица "отдел", а таблица "сотрудник" R2 подчиненным. Внешний ключ должен быть связан с первичным ключом, т.е. по внешнему ключу должен находиться определенный кортеж, или если допускает СУБД, значения должны быть Null, т.е. в данный момент не ссылается ни на кого.
- Целостность сущности:
Преимущества
- Контроль целостности данных (целостность сущности и ссылочная целостность);
- Гибкость: выборка, изменение схемы;
- Физическая и логическая независимость;
- Разработка прикладных программ;
- Основа - небольшое число интуитивно понятных абстракций;
- Теоретическим базисом реляционного подхода к организации баз данных служит простой и мощный математический аппарат теории множеств и математической логики;
- Декларативные языки определения и манипулирования данными;
- Средства разграничения доступа.
Недостатки:
- Производительность;
- Большое количество таблиц в реальных БД;
- Сложность поддержки;
- Некоторые предметные области плохо представляются в форме отношений;
- Разработка прикладных программ
- Репликация.