Логика работы в реляционных СУБД строится на реляционной алгебре. Поэтому в подобных системах добавляют приставку «реляционная». Прикладному программисту необязательно разбираться в этой области алгебры, но знать основы полезно.
В этом уроке мы разберем способы представления данных и расскажем, почему реляционная модель подходит для этого лучше всего.
Способы представления данных
Данные и как они хранятся на диске — две большие разницы. Физическое размещение данных на носителях — возможность конкретных СУБД. И в этом случае они соревнуются, кто быстрее и эффективнее.
Внешнее представление — это то, что видит пользователь. Оно влияет на способ взаимодействия с данными. Поэтому разные способы представления данных называются моделями.
Эти модели не отражают то, что происходит на физическом уровне. Они описывают, как данные структурированы, и как с ними взаимодействовать. Модели данных очень похожи на абстрактные типы данных, которые определяют интерфейс взаимодействия с типом и не определяют его внутреннюю реализацию.
Существует много разных способов представить одни и те же данные. В этом уроке мы разберем три самых популярных:
- Иерархическая модель
- Сетевая модель
- Реляционная модель
Разберем каждый способ подробнее.
Иерархическая модель
В иерархической модели данные представлены в виде дерева, где дочерние элементы находятся в зависимости от родительских:
С помощью иерархической модели можно представить не только университет, но и составляющие бизнеса. К примеру, у сервиса такси есть такие понятия, как пользователь и заказ. У одного пользователя может быть множество заказов. Это сразу определяет структуру дерева:
- Родительский элемент — пользователь
- Дочерние элементы — заказы
Подобным образом структурируются и все остальные части.
Проблемы начинаются, когда у одного дочернего элемента может быть несколько родительских. Представим, что сервис такси добавил такую функцию — можно оплачивать счет совместно. Это значит, что у одного заказа сразу несколько клиентов.
В этом случае иерархическая модель не может предложить хорошего решения данной задачи. Придется создавать параллельные деревья, в которых появится дублирование данных. Эта проблема решается в сетевой модели данных, которую мы разберем далее.
Сетевая модель
Сетевая модель данных расширяет иерархическую и позволяет иметь множество предков. Сетевая модель — это граф, у которого много вершин и соединений между ними:
В сетевой структуре каждый элемент может быть связан с любым другим элементом.
Недостаток сетевой модели данных — высокая сложность и жесткость схемы БД, которая построена на ее основе. Поскольку логика процедуры выборки данных зависит от физической организации этих данных, то эта модель не является полностью независимой от приложения. Если необходимо изменить структуру данных, то нужно изменить и приложение.
Чтобы не столкнуться с еще одной проблемой, программисты используют реляционную модель.
Реляционная модель
Наибольшее распространение получила реляционная модель данных. На ее основе построены реляционные СУБД. В реляционной модели данные — это набор отношений. В алгебре понятие отношение звучит так:
Пусть дана совокупность типов данных T1, T2, ..., Tn, называемых также доменами, необязательно различных. Тогда n-арным отношением R, или отношением R степени n называют подмножество декартовa произведения множеств T1, T2, ..., Tn.
Разберем это определение, чтобы лучше его понять.
Что такое отношение в реляционной модели
У отношения нет физического представления. Реляционная база данных — это попытка отразить реляционную модель, а не ее точная копия.
Реляционная модель опирается на раздел математики теорию множеств, которую нужно знать хотя бы немного. Множество — это совокупность произвольных элементов, которые объединены по некоторому признаку. Например, множество натуральных чисел или множество учеников одного класса. Изучить этот раздел подробнее вы можете в нашем курсе «Теория множеств».
Из любого множества можно выделить подмножество — множество элементов, все элементы которого входят в исходное множество. Подмножество — это часть множества. Например, множество натуральных чисел — это подмножество по отношению к множеству целых чисел, которое в свою очередь — подмножество рациональных чисел. Из этого следует, что натуральные числа — это подмножество рациональных чисел.
Еще одно важное понятие — кортеж. Это упорядоченный набор данных фиксированной длины. Элементами кортежа может быть все что угодно. Это математический способ представить некоторый набор связанных данных.
На основе этих понятий можно сформулировать более понятное определение отношения. Отношение — это множество кортежей, которые называются телом отношения. В нем каждый кортеж соответствует схеме.
Схема — это заголовок отношения. Она описывает общую структуру кортежей, количество элементов внутри них и их типы. Каждый такой элемент называется атрибутом:
Отношение визуально похоже на таблицу, но у него есть существенные отличия:
- Нет двух одинаковых элементов (кортежей)
- Порядок кортежей не определен
- Порядок атрибутов в заголовке не определен
По этой причине таблица непригодна для точного описания отношения. В любой таблице порядок столбцов (атрибуты схемы) и строк (кортеж) строго определен. При этом на практике мы оперируем таблицами и не можем игнорировать их.
Во всех реляционных базах данных столбцы расположены в определенном порядке, и данные тоже добавляются строго определенным образом. Но этот порядок зависит от реализации самой базы данных и не может быть задан, а задается только при выборке.
Реляционная модель — удачный выбор в большинстве ситуаций. У нее нет недостатков, которые есть у других моделей. Но чтобы ее освоить, нужно время, так как придется научиться раскладывать данные по таблицам правильным способом. Чтобы взаимодействовать с данными, которые описаны реляционной моделью, используется реляционная алгебра. Ее элементы мы рассмотрим позже.
Данные, представленные в реляционной модели, нужно привести к нормальной форме — это требования, которым должно удовлетворять отношение для минимизации избыточности данных, потенциально приводящих к логическим ошибкам.
Выводы
В следующих уроках мы познакомимся с тремя нормальными формами, так как они наиболее часто используются в реальной разработке. Причем программисты, которые часто работают с базами данных, даже не помнят теорию, связанную с формами.
Понимая, как структурируются данные в реляционной модели, мозг самостоятельно предлагает правильные решения по тому, как разложить данные.
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»