Урок 1 из 0
В процессе

Реляционные базы данных

База данных – это место, где хранятся какие-либо данные. Базы данных служат не только для хранения информации, но ещё и для их структурирования и возможности взаимодействовать с ними.

Взаимодействие с любой базой данных основывается на принципе CRUD – Create, Read, Update, Delete.

Типы баз данных

Иерархические базы данных

Иерархические базы данных — самая ранняя модель представления сложной структуры данных. Информация в иерархической базе организована по принципу древовидной структуры, в виде отношений «предок-потомок». Каждая запись может иметь не более одной родительской записи и несколько подчиненных. Связи записей реализуются в виде физических указателей с одной записи на другую.

Основной недостаток иерархической структуры базы данных — невозможность реализовать отношения «много-ко-многим», а также ситуации, когда запись имеет несколько предков.

 

Сетевая модель базы данных.

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

Основное различие этих моделей состоит в том, что в сетевой модели у записи может быть более одного предка.

Объектные базы данных

Объектно-ориентированные базы данных – это базы данных, в которых информация представлена в виде объектов, как в объектно-ориентированных языках программирования.

Реляционная база данных

Реляционная база данных – это набор данных с предопределенными связями между ними. Эти данные организованны в виде набора таблиц, состоящих из столбцов и строк. В таблицах хранится информация об объектах, представленных в базе данных. В каждом столбце таблицы хранится определенный тип данных, в каждой ячейке – значение атрибута.

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

В реляционных базах данных каждая таблица олицетворяет набор однотипных объектов. Стоит придерживаться правила – как таблица называется, такие объекты в ней и хранятся.

Управление реляционной базой данных осуществляется с помощью языка программирования SQL. Главной особенностью SQL является автоматический контроль целостности, привязанных напрямую к таблицам и независящим от клиентских программ.

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

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

По определению, первичный ключ   –   минимальный идентификатор (одно или несколько полей), который используется для уникальной идентификации записей в таблице.

Целостность сущностей определяет, что в базовой таблице ни одно поле первичного ключа не может содержать отсутствующих значений, обозначенных NULL. Если допустить присутствие определителя NULL в любой части первичного ключа, то это равносильно утверждению, что не все его поля необходимы для уникальной идентификации записей, и противоречит определению первичного ключа.

Достоинства реляционных БД:

  • Эта модель данных отображает информацию в наиболее простой для пользователя форме.
  • Основана на развитом математическом аппарате, который позволяет достаточно лаконично описать основные операции над данными.
  • Позволяет создавать языки манипулирования данными не процедурного типа.
  • Манипулирование данными на уровне выходной БД и возможность изменения.

Недостатки реляционных БД:

  • Медленная работа с большими объемами данных.
  • Сложность разработки.

Ключи в реляционных базах данных

Существует несколько видов ключе в базах данных, но в общем случае ключ – это одна (или несколько) колонка таблицы, чье значение используются для определения строки таблицы (экземпляра).

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

Для примера возьмем таблицу “Преподаватель”:

В данной таблицу первичным ключом может быть только колонка “Таб. №”, так как только в ней значения для каждой записи уникальны. В остальных же значения могут повторяться.

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

В таблицу можно добавить искусственный ключ, который будет уникальными и служит для идентификации строк. Чаще всего такой ключ выглядит как какой либо ID, например, ID пользователя.

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

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

Основа реляционной базы данных – связи между различными таблицами. Всего существует 3 типа связей: один к одному (1:1), один ко многим (1:М) и многие ко многим (М:М). Рассмотрим их подробнее.

Связь один к одному

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

Пример: к одному сотруднику прикреплено только одно рабочее место. И пользоваться одним конкретным рабочим местом может только один сотрудник.

Связь один ко многим

Самая часто встречаемая связь. Она возникает, когда одной записи в родительской таблице может соответствовать несколько записей в дочерней.

Пример: Человек может использовать несколько номеров телефона, но один номер может принадлежать только одному человеку.

Связь многие ко многим

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

Пример: В школе каждый учитель обучает многих учеников, а каждый ученик может обучаться у нескольких учителей.

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

Рекурсивная связь

Отдельно стоит упомянуть рекурсивную связь. Она связывает таблицу саму с самой.

Пример: В таблице сотрудников магазина записаны весь персонал. Но у многих есть какой-либо начальник. Рекурсивная связь в данном случае позволит явно указать связь начальника и подчиненного.

Для примера возьмем следующую схему базы данных:

PK – первичный ключ, FK – внешний ключ, CK – комбинированный ключ.

 

Для нее предполагается, что может быть несколько магазинов, у каждого из которых свой ID. К каждому магазину прикреплены несколько сотрудников. Чтобы связать таблицу «Магазины», и «Сотрудники» используется столбец «ID магазина» и связь один ко многим, так как сотрудники одного магазина могут работать только в нем.

Для каждого сотрудника в таблице «Зарплата» существует по одной записи с данными для расчета зарплаты. Так как каждому сотруднику соответствует только одна запись в таблицу «Зарплата», то используется связь один к одному. Здесь так можно сделать вывод, что внешний ключ ID сотрудника в таблице «Зарплата» будет ещё и первичным.

Для записи покупок используется две таблицы: «Покупки» и «Информация об ассортименте» используется связь многие ко многим и в результате получается третья таблица «Проданный товар». Значения всех двух столбцов будут комбинированным ключом.

Контрольные вопросы

  • Назовите типы баз данных и опишите их суть.
  • Что такое первичный ключ и для чего он нужен?
  • Какие бывают связи в реляционных БД и как они строятся?