ER-SQL.md 4.9 KB

Entity-Relationship и SQL

Реляционные СУБД: Что это и Зачем?

Реляционные СУБД - строго структурированные СУБД в форме связанных таблиц. Каждая таблица отражает ту или иную сущность (Entity), которая связана (относится, Relation) с другими таблицами. Считается, что таблицы имеют строгую структуру полей, но неограниченное количество строк.

Примеры

  • Школа-Классы-Ученики-Учителя
  • Автомобиль-Детали
  • Люди-Домашние питомцы
  • Библиотека-Читатели-Книги
  • Человек-Номера телефонов
  • etc...

Плюсы и минусы

Плюсы

  • Скорость работы
  • Структурированность
  • Легкость в проектировании на начальном этапе при хорошо описанной предметной области
  • Хорошая теоретическая и практическая базы

Минусы

  • Сложности с расширением и изменением
  • Масштабируемость

Сущности и Связи

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

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

Поля

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

Типы связей

Один к одному

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

Один ко многим

Самый частый случай. Класс и ученики, Город и его жители, Ребенок и его родители и так далее. Связь устанавливается с помощью сохранения значения автоинкремента одного в каждом экземпляре многих.

Многие ко многим

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

ER-Диаграммы

https://www.draw.io/