Приведите пример структуры базы данных с двумя связанными таблицами.

«Приведите пример структуры базы данных с двумя связанными таблицами.» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Пример базы данных с двумя таблицами, реализующими связь «один-ко-многим» (один пользователь — много заказов).

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';