SQL

Как создать схему данных для БД

Схема данных для БД — это план будущей базы: таблицы, поля, типы данных, первичные ключи, внешние ключи и связи между сущностями. Ее лучше создать до написания SQL, потому что исправлять плохую структуру после загрузки данных сложнее

Если совсем коротко: сначала выпишите сущности, затем поля, затем связи, затем ограничения, и только после этого переходите к CREATE TABLE

Что входит в схему данных

Хорошая схема показывает:

  • таблицы
  • поля таблиц
  • типы данных
  • первичные ключи
  • внешние ключи
  • уникальные ограничения
  • связи один-ко-многим и многие-ко-многим
  • правила удаления и обновления связанных данных

Для учебного проекта схема может быть простой. Для рабочей базы важно заранее продумать, где появятся дубли, какие данные обязательны и как будут строиться запросы

Пример на базе интернет-магазина

Возьмем маленький магазин. В нем есть клиенты, заказы и товары

Сущности:

  • clients
  • orders
  • products
  • order_items

Почему нужна order_items: один заказ может содержать несколько товаров, а один товар может встречаться в разных заказах

Как определить связи

Клиент и заказ:

clients 1 -> many orders

Один клиент может иметь много заказов, но каждый заказ относится к одному клиенту

Заказ и товар:

orders many -> many products

Для такой связи нужна промежуточная таблица order_items

Как это выглядит в SQL

CREATE TABLE clients (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE orders (
    id INT PRIMARY KEY,
    client_id INT NOT NULL,
    created_at DATE NOT NULL,
    FOREIGN KEY (client_id) REFERENCES clients(id)
);

CREATE TABLE products (
    id INT PRIMARY KEY,
    title VARCHAR(150) NOT NULL
);

CREATE TABLE order_items (
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT NOT NULL,
    PRIMARY KEY (order_id, product_id),
    FOREIGN KEY (order_id) REFERENCES orders(id),
    FOREIGN KEY (product_id) REFERENCES products(id)
);

Это уже не просто набор таблиц, а связанная схема

В каких инструментах рисовать схему

Можно начать с бумаги или доски. Для первых проектов этого достаточно

Для более аккуратной схемы подойдут:

  • MySQL Workbench
  • SQL Server Management Studio Database Diagrams
  • pgAdmin и внешние ER-инструменты
  • draw.io
  • dbdiagram.io
  • DBeaver

Инструмент не так важен, как правильная логика связей

Мини-практика

Возьмите предметную область «курсы и студенты» и выпишите:

  • какие таблицы нужны
  • какие поля обязательны
  • где первичный ключ
  • где внешний ключ
  • нужна ли таблица-связка

Затем нарисуйте схему и только после этого напишите SQL-команды создания таблиц

Частые ошибки

  • Сразу писать CREATE TABLE, не понимая предметную область
  • Хранить список id в одной текстовой колонке
  • Не добавлять первичные ключи
  • Не фиксировать связи внешними ключами
  • Делать одну огромную таблицу вместо нескольких связанных
  • Не думать о дублях и уникальности
  • Путать схему как diagram и schema как namespace или database

Что почитать дальше по SQL

Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x