Ответ
Пример базы данных с двумя таблицами, реализующими связь «один-ко-многим» (один пользователь — много заказов).
1. Таблица users (Пользователи):
CREATE TABLE users (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. Таблица orders (Заказы):
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
product_name VARCHAR(100) NOT NULL,
amount DECIMAL(10,2) NOT NULL,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE
);
Ключевые элементы:
- Первичный ключ (PRIMARY KEY):
user_id,order_id— уникально идентифицируют запись. - Внешний ключ (FOREIGN KEY): Поле
user_idв таблицеordersссылается наuser_idв таблицеusers. Это обеспечивает целостность данных: нельзя создать заказ для несуществующего пользователя. - Связь «один-ко-многим»: Одна запись в
usersможет быть связана с несколькими записями вorders.
Практический пример запроса:
-- Выборка всех заказов пользователя 'alice'
SELECT o.order_id, o.product_name, o.amount
FROM users u
JOIN orders o ON u.user_id = o.user_id
WHERE u.username = 'alice';