Ответ
Схема БД для книжного магазина
Основные таблицы:
- Books - информация о книгах
CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
author_id INTEGER REFERENCES authors(id),
publisher_id INTEGER REFERENCES publishers(id),
isbn VARCHAR(20) UNIQUE,
price DECIMAL(10,2) NOT NULL,
quantity INTEGER DEFAULT 0,
category_id INTEGER REFERENCES categories(id),
published_date DATE,
description TEXT
);
- Authors - авторы книг
CREATE TABLE authors (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
bio TEXT
);
- Publishers - издательства
CREATE TABLE publishers (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
address TEXT
);
- Categories - категории книг
CREATE TABLE categories (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
parent_id INTEGER REFERENCES categories(id)
);
- Customers - покупатели
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
address TEXT
);
- Orders - заказы
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INTEGER REFERENCES customers(id),
order_date TIMESTAMP DEFAULT NOW(),
status VARCHAR(20),
total DECIMAL(10,2)
);
- OrderItems - позиции заказа
CREATE TABLE order_items (
id SERIAL PRIMARY KEY,
order_id INTEGER REFERENCES orders(id),
book_id INTEGER REFERENCES books(id),
quantity INTEGER,
price DECIMAL(10,2)
);
Индексы стоит добавить на часто используемые поля для поиска (title, author_id, category_id).