Реляционные базы данных: понятие таблиц, строк, столбцов и отношений
📊 Что такое реляционные базы данных?
Реляционные базы данных (РБД) — это основа современного хранения данных. Они упорядочивают информацию в таблицацах, которые связаны между собой. Представьте библиотеку: книги (таблицы) стоят на полках (база данных), а карточки каталога (связи) помогают быстро найти нужное.
🔥 Главные плюсы:
- Чёткая структура — данные не превращаются в "кашу"
- Надёжность — минимизация дублирования
- Гибкость — сложные запросы за секунды
🧩 Ключевые компоненты РБД
Таблицы (Сущности)
Таблица — это "лист Excel на стероидах". Например, таблица users хранит данные о пользователях:
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100) UNIQUE
);
Столбцы (Атрибуты)
Это характеристики сущности. В таблице users:
id— уникальный идентификаторname— имя пользователяemail— электронная почта
📌 Типы данных важны! VARCHAR(50) означает строку до 50 символов, INT — целое число.
Строки (Записи)
Конкретные экземпляры данных:
INSERT INTO users (id, name, email)
VALUES (1, 'Данила Бежин', 'danila@example.com');
Теперь таблица содержит одну запись — это как строка в Excel.
🔗 Отношения между таблицами
Магия реляционных баз — в связях между таблицами. Есть три основных типа:
1. Один к одному (1:1)
Пример: пользователь и его паспортные данные. У одного пользователя только один паспорт.
CREATE TABLE passports (
user_id INT PRIMARY KEY,
number VARCHAR(20),
FOREIGN KEY (user_id) REFERENCES users(id)
);
2. Один ко многим (1:M)
Самый распространённый тип! Например, пользователь и его заказы:
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
amount DECIMAL(10,2),
FOREIGN KEY (user_id) REFERENCES users(id)
);
Один пользователь может иметь много заказов — отсюда и название.
3. Многие ко многим (M:M)
Студенты и курсы: один студент посещает много курсов, один курс включает много студентов. Реализуется через промежуточную таблицу:
CREATE TABLE student_courses (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (course_id) REFERENCES courses(id)
);
🏆 Практический пример: интернет-магазин
Давайте смоделируем простую базу для магазина:
-- Таблица продуктов
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2)
);
-- Таблица заказов
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- Связь многих-ко-многим между заказами и продуктами
CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id),
FOREIGN KEY (order_id) REFERENCES orders(id),
FOREIGN KEY (product_id) REFERENCES products(id)
);
💡 Обратите внимание:
order_items— это промежуточная таблица для связи M:MFOREIGN KEYгарантирует, что нельзя добавить несуществующий продукт в заказ
🧠 Важные концепции
Первичные ключи (PRIMARY KEY)
Уникальный идентификатор записи:
CREATE TABLE students (
student_id INT PRIMARY KEY, -- Вот он!
name VARCHAR(50)
);
Внешние ключи (FOREIGN KEY)
Связывают таблицы, обеспечивая целостность данных:
CREATE TABLE enrollments (
enrollment_id INT PRIMARY KEY,
student_id INT,
course_id INT,
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
Нормализация
Процесс организации данных для минимизации дублирования. Например, вместо хранения имени клиента в каждом заказе (что приводит к дублированию), мы ссылаемся на таблицу клиентов через user_id.
🚀 Как это работает в реальности?
При запросе "показать все заказы пользователя Данила" SQL делает:
- Находит ID Данилы в
users - Ищет все заказы с этим
user_idвorders - Возможно, соединяет с другими таблицами для деталей
Вот этот запрос:
SELECT o.id, o.order_date, p.name, oi.quantity
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id
WHERE u.name = 'Данила Бежин';
Это и есть сила реляционных баз — сложные вопросы получают простые ответы!
💡 Проверь себя
Попробуй смоделировать базу данных для: 1. Библиотеки (книги, авторы, читатели) 2. Больницы (врачи, пациенты, назначения) 3. Соцсети (пользователи, посты, лайки)
Подсказка: начинай с выявления сущностей (таблиц), их атрибутов (столбцов) и отношений между ними.