*Relation - отношение* Этот тип наиболее распространен сегодня ## Плюсы и минусы **Плюсы:** - Наличие небольшого набора абстракций, на основе которых просто моделировать наиболее распространенные предметные области - Наличие простого, но мощного математического аппарата из теории множеств и математической логики - Есть возможность манипулирования данными без необходимости знания конкретной физической организации во внешней памяти **Минусы:** - Критикуют за ограниченность реляционной СУБД в нетрадиционных областях: в системах автоматизации проектирования, машиностроении и т. д., где используются сложные структуры данных **Тип данных** - наряду с традиционными (текстовый, числовой, дата и т. д.) есть и специальные. **Домен** - сравнимо с подтипами в языках программирования. Это допустимое потенциальное множество значений данного типа. **Атрибут** - одна из характеристик объекта (столбец, колонка, поле). **Схема отношения** - именованное множество пар **(имя атрибута + имя типа данных)**. **Степень (арность) схемы отношения** - мощность этого множества. **Схема БД** - набор именованных схем отношений. **Кортеж** - это множество пар **(имя атрибута + значение)**, которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения. **Отношение** - это множество кортежей, соответствующих одной схеме отношения. Различают отношение-схему и отношение-экземпляр. Набор кортежей в отношении - **тело отношения**. **Реляционная БД** - это набор отношений, имена которых совпадают с именами схем отношений в схеме БД. ## Фундаментальные свойства отношений 1. **Значения атрибутов должны быть атомарны**. Т. к. домен - это потенциальное множество значений простого типа данных, то среди значений домена не могут содержаться множества значений. 2. **Отсутствие кортежей-дубликатов** (в таблице не должно быть повторных записей). Свойство следует из определения отношения как множества кортежей. А в классической теории множеств - "каждое множество состоит из различных элементов". Это свойство требует наличия у каждого отношения первичного ключа - атрибута или набора атрибутов, значения которых однозначно определяют кортеж отношения. Могут быть альтернативные ключи. 3. **Отсутствие упорядоченных кортежей**. Это следует из определения: "отношения - это множество кортежей" 4. **Отсутствие упорядоченных атрибутов** ## Общая характеристика реляционной модели данных Реляционная модель состоит из 3 частей: 1. **Структурная часть** - в этой части говорится, что единственной структурой данных, используемой в реляционной БД, является нормализованное $n$-арное отношение 2. **Манипуляционная часть** - в этой части утверждаются 2 фундаментальных механизма реляционной БД: - **Реляционная алгебра** - в основе классическая теория множеств - **Реляционное исчисление** - в основе классический логически аппарат исчисления предикатов первого порядка. Основная функция манипуляционной части - обеспечение меры реляционности любого конкретного языка реляционной БД. Язык называется реляционным, если он обладает не меньшей выразительностью и мощностью, чем реляционная алгебра и реляционное исчисление 3. **Целостная часть** - в этой части реляционной модели фиксируются 2 базовых требования целостности, которые поддерживаются в любой реляционной СУБД: 1. **Целостность сущностей**: любой кортеж любого отношения отличим от любого другого кортежа этого отношения. Решается этот вопрос введением первичного ключа 2. **Целостность по ссылкам**: при соблюдении нормализованности отношений сложные сущности реального мира представляются в реляционной БД в виде нескольких кортежей нескольких отношений ## Реляционная алгебра Основные алгебраические операции: 1) Теоретико-множественные: - Объединение отношений (∪) - Пересечение отношений (∩) - Разность отношений (-) - Произведение отношений (\*) 2) Специальные реляционные операции: - Ограничение отношения - Проекция отношения - Соединение отношений - Деление отношений 3) Также в состав алгебры включены: - Операция присваивания - Операция переименования атрибутов ## Термины из электронных таблиц, реляционных моделей и реляционных БД | Электронные таблицы | Реляционные модели | Реляционные БД | | -------------------------- | ------------------ | ----------------- | | Таблица | Отношение | Таблица БД | | Столбец (столбик, колонка) | Атрибут | Поле | | Строка | Кортеж | Запись | | "Шапка" | Схема отношения | Структура таблицы |