Основы моделирования и базы данных

Теория реляционных БД. Часть 4

Изложение начинается с базового определения реляционной модели и представления данных в виде связанных таблиц. Последовательно разбираются фундаментальные свойства таблиц: атомарность, однородность столбцов, уникальность строк и произвольный порядок их хранения. Затем вводится различие между абстрактным математическим отношением и его физической реализацией – таблицей. Далее раскрывается роль первичных ключей, составных ключей и индексов (кластеризованных и некластеризованных) для идентификации записей и ускорения поиска. Описывается механизм связи таблиц через внешние ключи. Завершающая часть посвящена обзору типов данных – от общих до специализированных денежных, темпоральных и абстрактных типов, расширяющих возможности реляционных систем.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Описать структуру реляционной таблицы и назвать её основные элементы (кортежи, атрибуты).
2. Объяснить ключевые свойства реляционной таблицы: атомарность, однородность, уникальность строк.
3. Определить роль первичного ключа и сформулировать отличие математического отношения от таблицы.
4. Различать типы ключей и объяснять назначение индексов для оптимизации поиска.
5. Описать механизм установления связей между таблицами через внешние ключи.
6. Классифицировать типы данных в СУБД по категориям: общие, денежные, темпоральные, абстрактные.
7. Перечислить базовые понятия реляционной модели (тип данных, домен, атрибут, кортеж, первичный ключ, отношение) и понимать их значение.
Показывать лекцию целиком
Краткое изложение
Реляционная модель данных

Информация в реляционной базе данных хранится в одной или нескольких связанных таблицах. Реляционная модель данных — это способ структурирования, при котором данные представлены в форме таблиц. Таблица состоит из строк и столбцов. Каждая строка имеет одинаковую структуру и содержит значения, соответствующие определённым столбцам.

Структура таблицы и основные термины

Отдельная таблица (в терминах модели — отношение, relation) обычно представляет совокупность однотипных реальных объектов, абстрактных концепций или событий. Каждая запись (строка) идентифицирует один объект группы.

Строки называют записями или кортежами, столбцы — полями или атрибутами. Каждая ячейка таблицы содержит одно элементарное значение.

Свойства реляционной таблицы

1. Атомарность. На пересечении строки и столбца должно находиться только одно значение. Нельзя хранить в одной ячейке составную информацию (например, фамилию, имя и отчество слитно), если это не продиктовано потребностями предметной области. Атомарность определяется не столько природой данных, сколько задачами: если требуется обращаться к отдельным частям (например, к имени), их следует выносить в отдельные атрибуты.
2. Однородность столбцов. Все значения в одном столбце принадлежат к одному типу и берутся из одного домена (множества допустимых значений). Нельзя в столбце «Фамилия» хранить имена, а в столбце «Возраст» — год рождения.
3. Уникальность строк. В таблице не может быть двух полностью одинаковых строк. Каждая запись должна отличаться хотя бы по одному атрибуту. Инструментом обеспечения уникальности служит первичный ключ (primary key) — один или несколько атрибутов, чья комбинация значений уникально идентифицирует строку.
4. Произвольный порядок строк и столбцов. Порядок размещения записей и атрибутов на физическом уровне хранения не имеет значения. СУБД может показывать их в порядке ввода, но это лишь удобство для пользователя. Физически строки хранятся в произвольном порядке (например, в виде «кучи» — heap).

Отношение и таблица: абстракция и реализация

Таблица, обладающая перечисленными свойствами, служит точным прообразом математического двумерного множества — отношения. Отношение — это абстрактный математический объект, а таблица — его конкретное изображение.

Основные различия:
• В отношении строки и столбцы принципиально не упорядочены. В таблице же строки отображаются сверху вниз, столбцы — слева направо.
• В отношении не может быть повторяющихся строк. В таблице при нарушении ограничений они могли бы появиться, но первичный ключ этого не допускает.

Ключи и индексы

Первичный ключ гарантирует уникальность каждой строки. Если ключ образуется композицией нескольких атрибутов, его называют составным (composite key).

Для ускорения поиска и выполнения запросов применяются индексы:
Кластеризованный индекс (clustered index) строится на первичном ключе.
Некластеризованные индексы (non-clustered index) создаются на остальных атрибутах.

Индексы хранятся в упорядоченном виде (часто как сбалансированные деревья) и позволяют быстро находить нужные записи без полного перебора таблицы. Зная значение ключа или проиндексированного поля, СУБД ограничивает область поиска.

Связи между таблицами

Связь устанавливается через совпадающие значения полей. Обычно связь идёт от первичного ключа родительской таблицы к соответствующему полю дочерней. Это поле в дочерней таблице называется внешним ключом (foreign key, FK). Значения внешнего ключа могут быть только из множества значений первичного ключа родительской таблицы (или NULL, если допустимо). Так обеспечивается ссылочная целостность.

Типы данных в реляционных базах данных

Тип данных определяет, какие значения могут храниться в столбце и какие операции над ними допустимы, аналогично типам в языках программирования.

Выделяют несколько категорий:
Общие типы — целые и вещественные числа, строки, дата/время.
Денежные типы (money, currency) — специализированные для работы с финансами, учитывают особенности округления и точности.
Темпоральные типы — позволяют хранить информацию, изменяющуюся во времени, отслеживать историю и восстанавливать состояние на определённую дату.
Абстрактные типы данных (abstract data types) — могут принимать значения разной природы (число, строка, изображение), когда заранее неизвестно, что будет записано. Активно развиваются для повышения гибкости реляционных систем.

Основные понятия реляционной модели

Ключевыми понятиями являются: тип данных, домен, атрибут, кортеж, первичный ключ и отношение.

Краткие итоги

В основе реляционных баз данных лежит табличное представление информации, где строки моделируют отдельные сущности, а столбцы — их характеристики. Это представление не произвольно, а подчинено строгой системе правил, обеспечивающих целостность и однозначность данных. Первым таким правилом выступает атомарность: каждая ячейка должна содержать элементарное, с точки зрения решаемой задачи, значение. Если предметная область требует оперировать отдельными частями составного атрибута (например, именем и фамилией), они обязаны быть выделены в самостоятельные столбцы; в противном случае допустимо хранение слитной строки. Так принцип атомарности становится не догмой, а проектным решением, производным от функциональных потребностей. Однородность столбцов требует, чтобы все значения атрибута черпались из одного домена — множества допустимых значений, имеющего определённый тип. Это исключает смешение разнородных данных в одной колонке и закладывает основу для корректных операций сравнения и вычислений. Уникальность строк, гарантированная первичным ключом, не позволяет появиться дубликатам, благодаря чему каждая запись получает однозначный идентификатор. Уже на этом этапе формируется фундаментальное различие между абстрактным математическим отношением и его физической реализацией — таблицей. В отношении атрибуты и кортежи не имеют порядка, тогда как таблица, ориентированная на человека, отображает их упорядоченно. Это разграничение позволяет отделить логический дизайн базы от деталей хранения.

Когда определена структура и введены идентификаторы, возникает задача эффективного доступа. Первичные ключи, будучи уникальными, сами по себе не гарантируют быстрого поиска среди миллионов записей. Именно для этого служат индексы — вспомогательные структуры, организованные преимущественно в виде сбалансированных деревьев. Кластеризованный индекс на первичном ключе физически упорядочивает данные, а некластеризованные индексы на других атрибутах создают отдельные объекты со ссылками на строки, радикально сокращая пространство перебора при выполнении запросов. Так практическая производительность встраивается в логику модели.

Следующий логический шаг — переход от изолированных таблиц к связанным наборам. Связывание реализуется через механизм внешних ключей: столбец дочерней таблицы принимает только те значения, которые присутствуют в первичном ключе родительской. Это не просто технический приём, а декларативное правило, поддерживающее ссылочную целостность всей совокупности данных. Без него распадаются любые многомерные аналитические конструкции.

Наконец, все рассмотренные элементы — домены, атрибуты, ключи — обретают конкретное наполнение благодаря типам данных. Выбор типа диктует не только формат хранения, но и семантику операций. Специализированные денежные типы корректно обрабатывают округления, неприемлемые для обычных чисел с плавающей точкой; темпоральные позволяют восстанавливать состояние на любой момент времени, что критично для аудита и версионности; абстрактные типы размыкают жёсткую статическую типизацию, позволяя реляционной системе работать с данными, структура которых не полностью предопределена. Именно типы данных цементируют мост между математической строгостью модели и хаосом реальных бизнес-требований, делая реляционный подход одновременно надёжным и гибким.
Реляционная модель структурирует информацию в виде связанных таблиц. Таблица состоит из строк и столбцов: каждая строка — это запись (кортеж), описывающая один объект, а столбец — атрибут, хранящий характеристику определённого типа. Совокупность таблиц представляет множество однотипных сущностей или событий.

Фундаментальные свойства реляционной таблицы:
Атомарность — на пересечении строки и столбца находится только одно значение. Допустимость хранения составных данных (например, ФИО целиком) зависит от задач: если не требуется раздельное обращение к частям, объединение возможно.
Однородность столбцов — все значения в одном столбце принадлежат одному типу и берутся из общего домена (множества допустимых значений).
Уникальность строк — в таблице не может быть двух одинаковых записей. Уникальность обеспечивается первичным ключом.
Порядок строк и столбцов несущественен на физическом уровне. Интерфейс СУБД может показывать их упорядоченно для удобства, но хранение произвольно.

Отношение и таблица. Таблица — физическая реализация абстрактного математического объекта отношение. В отношении атрибуты и строки не имеют порядка; таблица же визуально упорядочена. Кроме того, в отношении невозможны дубликаты строк, что на практике гарантируется первичным ключом.

Ключи и индексы. Первичный ключ однозначно идентифицирует запись. Может быть простым (один атрибут) или составным (комбинация атрибутов). Для ускорения поиска и запросов используются индексы — специальные структуры, часто в виде сбалансированных деревьев. Кластеризованный индекс строится на первичном ключе и упорядочивает данные физически. Некластеризованные индексы создаются на других столбцах и хранятся отдельно, указывая на расположение строк. Индексы позволяют избегать полного сканирования таблицы, ограничивая область поиска по известным значениям.

Связи между таблицами. Связь устанавливается через совпадение полей: первичный ключ родительской таблицы связывается с внешним ключом (FK) дочерней. Значения внешнего ключа могут быть только из множества значений родительского первичного ключа (или NULL). Это обеспечивает ссылочную целостность.

Типы данных. Тип столбца определяет допустимые значения и операции. Основные категории:
Общие типы — целые, вещественные числа, строки, дата/время.
Денежные типы — корректно работают с округлением, избегая артефактов чисел с плавающей точкой.
Темпоральные типы — поддерживают хранение истории и восстановление состояния на любой момент времени.
Абстрактные типы — могут принимать значения разной природы (число, строка, изображение), когда тип заранее неизвестен; повышают гибкость реляционных систем.

Ключевые понятия реляционной модели: тип данных, домен, атрибут, кортеж, первичный ключ, отношение.

Выводы

1. Реляционная модель организует данные в виде таблиц, где строки — записи (кортежи), а столбцы — атрибуты.
2. Каждая таблица описывает совокупность однотипных сущностей или событий.
3. Атомарность ячеек требует неделимости значений, но трактуется исходя из задач предметной области.
4. Однородность столбца означает, что все значения принадлежат одному типу и берутся из общего домена.
5. Уникальность строк гарантируется первичным ключом, исключающим дублирование записей.
6. Порядок строк и столбцов при хранении произволен; упорядоченный вид в интерфейсе — лишь удобство для пользователя.
7. Таблица есть физическая реализация математического отношения, в котором отсутствует упорядоченность и дубликаты.
8. Первичный ключ может быть простым или составным, однозначно идентифицирует кортеж и служит основой для индексов.
9. Кластеризованные индексы строятся на первичных ключах, некластеризованные — на других атрибутах; оба ускоряют выполнение запросов.
10. Связь таблиц реализуется внешними ключами, значения которых ограничены множеством значений первичного ключа родительской таблицы.
11. Типы данных включают общие, денежные, темпоральные и абстрактные, каждая категория решает специфические задачи хранения и обработки.
12. Ключевые понятия модели — отношение, кортеж, атрибут, домен, первичный ключ и тип данных — образуют фундамент проектирования реляционных баз.

Вопросы для самопроверки

1. Что такое реляционная модель данных и в какой форме в ней хранится информация?
2. Какие структурные элементы составляют реляционную таблицу и как они соотносятся с терминами «кортеж» и «атрибут»?
3. Что означает свойство атомарности и как его применение зависит от потребностей предметной области?
4. Почему все значения в одном столбце должны быть однородными и принадлежать одному домену?
5. Зачем нужен первичный ключ и чем простое поле отличается от составного ключа?
6. В чём заключается различие между математическим отношением и таблицей как его реализацией?
7. Каким образом порядок строк и столбцов в интерфейсе СУБД соотносится с физическим хранением данных?
8. Какую задачу решают индексы и чем кластеризованный индекс отличается от некластеризованного?
9. Каким образом устанавливается связь между двумя таблицами в реляционной базе данных?
10. Что такое внешний ключ и какие ограничения накладываются на его значения?
11. Какие категории типов данных выделяются в современных СУБД и для чего предназначены денежные и темпоральные типы?
12. Перечислите основные понятия реляционной модели, необходимые для понимания её устройства.
Вернуться к учебному плану