76 lines
3.5 KiB
SQL
76 lines
3.5 KiB
SQL
CREATE TABLE IF NOT EXISTS admin_users (
|
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
username VARCHAR(80) NOT NULL,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uq_admin_username (username)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS authors (
|
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
name VARCHAR(255) NOT NULL,
|
|
address VARCHAR(255) NOT NULL DEFAULT '',
|
|
postal_code VARCHAR(20) NOT NULL DEFAULT '',
|
|
city VARCHAR(120) NOT NULL DEFAULT '',
|
|
bank_account VARCHAR(255) NOT NULL DEFAULT '',
|
|
bic VARCHAR(20) NOT NULL DEFAULT '',
|
|
bank_name VARCHAR(255) NOT NULL DEFAULT '',
|
|
paypal_address VARCHAR(255) NOT NULL DEFAULT '',
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
KEY idx_authors_name (name)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS books (
|
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
title VARCHAR(255) NOT NULL,
|
|
printing_costs DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
selling_price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
ebook_price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
isbn_print VARCHAR(20) NULL,
|
|
isbn_ebook VARCHAR(20) NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
KEY idx_books_title (title),
|
|
UNIQUE KEY uq_books_isbn_print (isbn_print),
|
|
UNIQUE KEY uq_books_isbn_ebook (isbn_ebook)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS book_authors (
|
|
book_id INT UNSIGNED NOT NULL,
|
|
author_id INT UNSIGNED NOT NULL,
|
|
margin_percent DECIMAL(5,2) NOT NULL,
|
|
PRIMARY KEY (book_id, author_id),
|
|
CONSTRAINT fk_book_authors_book FOREIGN KEY (book_id) REFERENCES books (id) ON DELETE CASCADE,
|
|
CONSTRAINT fk_book_authors_author FOREIGN KEY (author_id) REFERENCES authors (id) ON DELETE RESTRICT,
|
|
CONSTRAINT chk_book_authors_margin CHECK (margin_percent >= 0 AND margin_percent <= 100)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS book_sales (
|
|
book_id INT UNSIGNED NOT NULL,
|
|
wholesale_quantity INT UNSIGNED NOT NULL DEFAULT 0,
|
|
bookseller_quantity INT UNSIGNED NOT NULL DEFAULT 0,
|
|
direct_quantity INT UNSIGNED NOT NULL DEFAULT 0,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (book_id),
|
|
CONSTRAINT fk_book_sales_book FOREIGN KEY (book_id) REFERENCES books (id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS ebook_sales (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
book_id INT UNSIGNED NOT NULL,
|
|
sale_date DATE NOT NULL,
|
|
sales_channel VARCHAR(255) NOT NULL,
|
|
revenue DECIMAL(12,2) NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uq_ebook_sales_book_date_channel (book_id, sale_date, sales_channel),
|
|
KEY idx_ebook_sales_date (sale_date),
|
|
CONSTRAINT fk_ebook_sales_book FOREIGN KEY (book_id) REFERENCES books (id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|