Реляционные базы данных: сущности, ключи и связи
Понятие базы данных (БД) и СУБД, реляционная модель данных Кодда, поля и записи, первичный и внешний ключи, типы связей 1:1, 1:M, M:M.
В современном цифровом мире информация накапливается в колоссальных масштабах. Электронные таблицы Excel удобны для простых расчетов, но при работе с миллионами клиентов банка, онлайн-магазинами или государственными реестрами необходимы специализированные хранилища — базы данных.
База данных (БД / Database) — это организованная в соответствии с определенной структурой совокупность взаимосвязанных данных, предназначенная для длительного хранения, быстрого поиска и многопользовательской обработки информации.
Система управления базами данных (СУБД / DBMS) — это специализированный программный комплекс, обеспечивающий создание, ведение, безопасность, целостность и доступ к базам данных со стороны пользователей и прикладных программ (MySQL, PostgreSQL, SQLite, Oracle Database, Microsoft Access).
База данных (БД)
СУБД (DBMS)
В 1970 году британский ученый Эдгар Кодд (Edgar Codd) разработал реляционную модель данных (от лат. relatio — отношение), которая сегодня является стандартом №1 в мировой индустрии.
В реляционной модели все данные представляются в виде двумерных таблиц (отношений):
• Таблица состоит из строк и столбцов;
• Строка таблицы называется записью (в реляционной теории — кортеж). Каждая запись содержит информацию об одном конкретном реальном объекте (например, об одном ученике: фамилия, имя, класс, телефон);
• Столбец таблицы называется полем (в теории — атрибут). Поле характеризует определенное свойство всех объектов таблицы (например, поле «Датарождения»);
• Каждое поле имеет строго заданный тип данных: текстовый (VARCHAR), числовой (INTEGER / FLOAT), дата/время (DATE) или логический (BOOLEAN).
Реляционная структура связи таблиц БД
Запись (Кортеж)
Поле (Атрибут)
Чтобы однозначно отличать записи в таблице друг от друга, используется концепция ключей:
• Первичный ключ (Primary Key / PK) — поле (или группа полей), значение которого уникально для каждой записи в таблице. Значение первичного ключа не может повторяться и не может быть пустым (NULL). Примеры в реальной жизни: ИИН гражданина РК, номер паспорта, уникальный ID студента, VIN-номер автомобиля;
• Внешний ключ (Foreign Key / FK) — поле в дочерней таблице, которое ссылается на первичный ключ в родительской таблице. Внешние ключи создают смысловые связи между таблицами и поддерживают ссылочную целостность данных: нельзя добавить оценку несуществующему студенту.
Primary Key (PK)
Foreign Key (FK)
Почему нельзя фамилию сделать PK?
Фамилию нельзя использовать как первичный ключ, потому что в школе или университете часто встречаются полные однофамильцы и тезки.
В реляционных базах данных таблицы связываются отношениями трех типов:
1. «Один к одному» (1:1 / One-to-One) — каждой записи первой таблицы соответствует ровно одна запись во второй (например, «Человек» ↔ «ИИН» или «Гражданин» ↔ «Загранпаспорт»);
2. «Один ко многим» (1:M / One-to-Many) — самая частая связь: одной записи первой таблицы соответствует несколько записей во второй (например, один «Класс» содержит много «Учеников»; один «Покупатель» оформляет много «Заказов»);
3. «Многие ко многим» (M:M / Many-to-Many) — одной записи первой таблицы соответствует несколько записей второй, и наоборот (например, «Студенты» и «Учебные курсы»: один студент изучает много курсов, и на одном курсе учится много студентов). В реляционных БД связь M:M всегда реализуется через третью промежуточную связующую таблицу.
