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

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

Изложение выстроено вокруг фундаментальных понятий реляционной модели: от элементарных ограничений на значения (домен) к структуре таблиц (атрибут, степень отношения, схема), конкретным экземплярам данных (кортеж, отношение) и, наконец, к базовым свойствам отношений. Логика идёт от абстрактного определения к физической реализации, подводя к требованиям уникальности, неупорядоченности и атомарности. Завершающая часть фокусируется на первой нормальной форме, демонстрируя, как нарушение атомарности усложняет модификацию данных и почему приведение к 1НФ критически важно.

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

В результате изучения лекции слушатель будет способен:
1. Определять понятия домена, атрибута, схемы отношения, кортежа и отношения.
2. Объяснять разницу между типом данных и доменом, а также условие сравнимости значений.
3. Описывать компоненты схемы базы данных и механизм эволюции схем.
4. Формулировать четыре фундаментальных свойства отношений.
5. Обосновывать требования минимальности и уникальности первичного ключа.
6. Анализировать структуру таблицы на соответствие первой нормальной форме.
7. Преобразовывать ненормализованные данные к первой нормальной форме.
8. Оценивать практические трудности выполнения операций вставки в таблицах, не удовлетворяющих 1НФ.
Показывать лекцию целиком
Краткое изложение
Домен
С понятием домена (domain) мы уже сталкивались. Помимо типа данных (например, строкового), на значения можно наложить дополнительное ограничение — собственно домен. Тип «строка» сам по себе допускает любой текст, но название государства — не любая строка. Домен «Название государства» сужает множество допустимых значений, вводя содержательный фильтр. Для комментария же домен совпадает с типом: любая строка разрешена. Таким образом, домен — это условие, проверяющее легитимность значения и возвращающее «истина» или «ложь». Сначала проверяется соответствие типу, затем — домену. Если оба пройдены, значение корректно, и кортеж может быть вставлен в таблицу.

Домен — во многом понятийный элемент, отражающий логику столбца. На физическом уровне реализовать такие ограничения непросто, это делается программно. Сама модель данных не во всех СУБД поддерживает домен. В ERwin на логической схеме мы можем ввести домен, например, для ИНН: тип данных — целое число (integer), но домен — ровно двенадцать цифр, возможно, с условием, что первая цифра не ноль. На уровне физического создания таблиц мы обычно задаём только тип, однако некоторые СУБД (например, Oracle) позволяют программировать домен прямо на уровне модели.

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

Атрибут и степень отношения
Атрибут (attribute) — свойство, характеризующее объект. В структуре таблицы атрибуту соответствует заголовок столбца. Количество атрибутов называется степенью отношения. Отношение на физическом уровне — это таблица, поэтому оба понятия считаются эквивалентными. Степень отношения — это число столбцов.

Схема отношения и схема базы данных
Схема отношения — это множество пар «имя атрибута, имя домена». Например, атрибут ID берётся из домена «целое число», имя — из домена «строка». Степенью (или арностью) схемы отношения называют мощность этого множества пар; она совпадает со степенью самого отношения — числом столбцов.

Если каждой схеме отношения присвоить имя, получим схему базы данных — набор именованных схем отношений (по сути, имён таблиц с перечислением столбцов и доменов, из которых берутся значения). Знание этих формальных определений полезно при чтении литературы по базам данных. Изменение состава схемы (переименование, добавление новых атрибутов) называется эволюцией схемы базы данных. На простом уровне всё сводится к таблицам, строкам, столбцам и связям между ними.

Кортеж и отношение
Кортеж (tuple), соответствующий схеме отношения, — множество пар «имя атрибута, значение». В отличие от схемы, где пара — «атрибут–домен», здесь фиксируется конкретное значение, допустимое в рамках заданного домена. Например, для схемы (ID: целое, Имя: строка) кортежами будут (ID: 1, Имя: 'Иванов'), (ID: 2, Имя: 'Петров'). То есть кортеж — это набор именованных значений заданного типа.

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

Реляционная база данных — набор отношений (таблиц), имена которых совпадают с именами схем отношений в схеме БД.

Фундаментальные свойства отношений
Реляционная модель предъявляет к отношениям четыре обязательных свойства:
• Отсутствие кортежей-дубликатов (нет повторяющихся строк).
• Отсутствие упорядоченности кортежей (порядок строк неважен).
• Отсутствие упорядоченности атрибутов (порядок столбцов неважен).
• Атомарность значений атрибутов (в каждой ячейке — ровно одно неделимое значение).

Первичный ключ и уникальность строк
Отсутствие дубликатов достигается введением первичного ключа (primary key) — уникального подмножества атрибутов, однозначно определяющего весь кортеж. Важнейший критерий — минимальность длины ключа. Вместо набора из семи полей (фамилия, имя, отчество, дата, место рождения, пол, имя матери) предпочтительнее одно поле — например, номер СНИЛС. Первичный ключ стремится быть простым, то есть состоять из одного атрибута.

Упорядоченность и SQL
В SQL-запросах можно указать порядок вывода строк и столбцов, однако это исключительно визуализация для человека. Физически строки и столбцы не упорядочены. При необходимости порядок атрибутов в выдаче можно изменить, по умолчанию он соответствует схеме отношения.

Атомарность и первая нормальная форма
Значения всех атрибутов должны быть атомарными. Нельзя в одной ячейке хранить ещё одну таблицу или список. Требование атомарности всех полей отношения составляет первую нормальную форму (1НФ).

Рассмотрим пример. Таблица «Отдел» в каждой ячейке «Сотрудники» перечисляет нескольких человек. Это нарушение атомарности. Приведение к 1НФ даёт новую структуру, где для каждого сотрудника заводится отдельная строка с атрибутами «Номер сотрудника», «Имя», «Зарплата» и «Номер отдела». Теперь в каждой ячейке ровно одно значение, соответствующее домену столбца.

Практическая значимость 1НФ проявляется при операциях вставки. Чтобы добавить сотрудника в новый отдел №320, в ненормализованной таблице потребовалось бы создавать новую строку с этим отделом, что неестественно. А при зачислении сотрудника в уже существующий отдел №310 пришлось бы расширять список внутри ячейки — сложная и ненадёжная операция. В нормализованной таблице достаточно добавить одну строку с номером отдела. То есть ненормализованная структура серьёзно усложняет модификацию данных.

Существует тенденция доводить схему до третьей нормальной формы. Всего нормальных форм восемь: с первой по шестую, плюс нормальная форма Бойса–Кодда (BCNF) между третьей и четвёртой, а также доменно-ключевая нормальная форма (DKNF) между четвёртой и пятой. Пока мы рассмотрели только первую, остальные будут изучены позже.

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

Представленный материал формирует системное понимание реляционной модели, двигаясь от атомарных ограничений к целостной структуре данных и требованиям их корректной организации. Исходной точкой служит домен — не просто тип, а семантический фильтр, который наделяет значение смыслом и задаёт границы сравнимости. Без доменного контроля невозможно гарантировать, что в атрибут «ИНН» попадёт именно двенадцатизначное число, а в «Название государства» — осмысленная строка. Это первая линия защиты качества данных, которая на практике часто реализуется программно или средствами развитых СУБД.

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

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

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

Атомарность, будучи условием первой нормальной формы, напрямую влияет на удобство манипуляции данными. Нарушение 1НФ порождает вложенные структуры, в которых простейшая операция добавления записи превращается в разбор и модификацию сложных ячеек. Пример с ненормализованной таблицей отделов демонстрирует, что попытка добавить нового сотрудника ломает логику хранения, создавая избыточные строки или требуя расширения списка внутри ячейки. Нормализованное представление, напротив, сводит любые изменения к единообразным атомарным вставкам, удалениям и обновлениям.

Таким образом, последовательное освоение от домена до 1НФ даёт целостный инструментарий для проектирования устойчивых, непротиворечивых и удобных в эксплуатации реляционных структур, закладывая базу для дальнейшего изучения более высоких нормальных форм.
Домен — это ограничение, сужающее тип данных для столбца. Например, тип «строка» сам по себе допускает любой текст, но домен «Название государства» разрешает лишь строки, действительно являющиеся названиями. Для атрибута «Комментарий» домен совпадает с типом (любая строка). Фактически домен — это условие, проверяющее легитимность значения (истина/ложь). Сначала проверяется тип, затем домен.

Домен — логическая концепция. На уровне физического проектирования мы обычно задаём только тип, но домен реализуется программно (например, CHECK-ограничения). Некоторые СУБД (Oracle) поддерживают домен на уровне модели. Важнейшее следствие: сравнивать можно только значения из одного домена. Номер паспорта и номер студенческого билета могут быть целыми числами, но принадлежат разным доменам и потому несравнимы.

Атрибут — свойство объекта, в таблице ему соответствует столбец. Число атрибутов — степень отношения. Поскольку отношение на физическом уровне — это таблица, понятия эквивалентны.

Схема отношения — множество пар «имя атрибута, имя домена». Например: (ID, целое), (Имя, строка). Количество таких пар — степень (арность) схемы отношения, совпадающая со степенью самого отношения.

Схема базы данных — набор именованных схем отношений (имена таблиц с описанием столбцов и их доменов). Изменения схемы (переименование, добавление атрибутов) называют эволюцией схемы.

Кортеж — множество пар «имя атрибута, значение», где значение берётся из домена, указанного в схеме. Для схемы (ID: целое, Имя: строка) кортежами будут (ID:1, Имя:'Анна'), (ID:2, Имя:'Борис'). Кортеж — это конкретный набор именованных значений заданного типа.

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

Реляционная база данных — набор отношений (таблиц), чьи имена соответствуют именам схем в схеме БД.

Фундаментальные свойства отношений:
1. Отсутствие кортежей-дубликатов.
2. Неупорядоченность кортежей (порядок строк неважен).
3. Неупорядоченность атрибутов (порядок столбцов неважен).
4. Атомарность значений (одна ячейка — одно неделимое значение).

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

Упорядоченность в SQL-запросах (ORDER BY, порядок столбцов в SELECT) — это лишь визуализация. На физическом уровне строки и столбцы не упорядочены.

Атомарность и первая нормальная форма (1НФ) требуют, чтобы каждое поле содержало ровно одно значение. Нельзя хранить в ячейке список или вложенную таблицу. Пример нарушения: таблица «Отдел», где в столбце «Сотрудники» перечисляются несколько человек.

Приведение к 1НФ: для каждого сотрудника создаётся отдельная строка с атрибутами «Номер сотрудника», «Имя», «Зарплата» и «Номер отдела». Теперь все значения атомарны.

Практическая выгода 1НФ проявляется при вставке. В ненормализованной таблице, чтобы добавить сотрудника в новый отдел №320, нужно создавать для него строку с искусственным отделом; при добавлении в существующий отдел №310 — модифицировать ячейку, расширяя список. Нормализованная структура позволяет просто добавить новую строку. Таким образом, 1НФ радикально упрощает операции модификации данных.

Существует стремление довести схему до третьей нормальной формы. Всего нормальных форм восемь: с 1 по 6, между 3 и 4 — нормальная форма Бойса–Кодда, между 4 и 5 — доменно-ключевая. Дальнейшие нормальные формы будут рассмотрены позже.

Выводы

1. Домен накладывает на тип данных дополнительные логические ограничения, обеспечивая семантическую целостность значений.
2. Сравнение двух значений допустимо только при их принадлежности к одному домену, даже если типы данных совпадают.
3. Атрибут соответствует столбцу таблицы; число атрибутов определяет степень отношения.
4. Схема отношения формализует структуру как множество пар «имя атрибута – имя домена».
5. Схема базы данных объединяет именованные схемы отношений, а их модификации образуют эволюцию схемы.
6. Кортеж — конкретная реализация схемы: множество пар «имя атрибута – допустимое значение из домена».
7. Отношение есть множество кортежей одной схемы; реляционная база данных — набор таких отношений.
8. Четыре фундаментальных свойства: отсутствие дубликатов, неупорядоченность строк и столбцов, атомарность значений.
9. Первичный ключ гарантирует уникальность кортежей и должен быть минимальным — в идеале состоять из одного атрибута.
10. Порядок строк и столбцов в SQL является лишь средством визуализации, физически он не определён.
11. Первая нормальная форма требует атомарности каждого значения и достигается вынесением повторяющихся групп в отдельные строки.
12. Ненормализованные структуры резко усложняют операции вставки, заставляя модифицировать содержимое ячеек вместо добавления строк.

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

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