gadasin/init.sql

83 lines
2.3 KiB
SQL

SET lc_monetary TO 'ru_RU.UTF-8';
CREATE TABLE IF NOT EXISTS clients (
client_id SERIAL PRIMARY KEY,
surname VARCHAR(50) NOT NULL,
forename VARCHAR(50) NOT NULL,
patronymic VARCHAR(50),
age SMALLINT,
phone_number VARCHAR(15) NOT NULL,
email VARCHAR(50) NOT NULL
);
CREATE TABLE IF NOT EXISTS auth (
client_id INT PRIMARY KEY REFERENCES clients(client_id),
password VARCHAR(50) NOT NULL
);
CREATE TABLE IF NOT EXISTS board_games (
board_game_id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
genre VARCHAR(30),
publisher VARCHAR(50),
price MONEY NOT NULL
);
CREATE TABLE IF NOT EXISTS sections (
section_id SERIAL PRIMARY KEY,
name VARCHAR(20) NOT NULL
);
CREATE TABLE IF NOT EXISTS sections_board_games (
section_id INT REFERENCES sections(section_id),
board_game_id INT REFERENCES board_games(board_game_id)
);
CREATE TABLE IF NOT EXISTS bags (
bag_id SERIAL PRIMARY KEY,
client_id INT REFERENCES clients(client_id)
);
CREATE TABLE IF NOT EXISTS bags_board_games (
bag_id INT REFERENCES bags(bag_id),
board_game_id INT REFERENCES board_games(board_game_id),
count INT NOT NULL
);
CREATE TABLE IF NOT EXISTS discounts (
discount_id SERIAL PRIMARY KEY,
board_game_id INT REFERENCES board_games(board_game_id),
amount SMALLINT NOT NULL,
valid_until TIMESTAMP NOT NULL
);
CREATE TABLE IF NOT EXISTS clients_discounts (
discount INT REFERENCES discounts(discount_id),
client_id INT REFERENCES clients(client_id)
);
CREATE TABLE IF NOT EXISTS wishlists (
wishlist_id SERIAL PRIMARY KEY,
client_id INT REFERENCES clients(client_id)
);
CREATE TABLE IF NOT EXISTS wishlists_games (
wishlist_id INT REFERENCES wishlists(wishlist_id),
board_game_id INT REFERENCES board_games(board_game_id)
);
CREATE TABLE IF NOT EXISTS orders (
order_id SERIAL PRIMARY KEY,
client_id INT REFERENCES clients(client_id),
pick_up VARCHAR(50) NOT NULL,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
cost MONEY NOT NULL
);
CREATE TABLE IF NOT EXISTS orders_games (
order_id INT REFERENCES orders(order_id),
board_game_id INT REFERENCES board_games(board_game_id),
discount_id INT REFERENCES discounts(discount_id),
count INT NOT NULL
);