84 lines
2.7 KiB
SQL
84 lines
2.7 KiB
SQL
-- MySQL schema for warehouse manager
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(64) NOT NULL UNIQUE,
|
|
password_hash VARCHAR(255) NULL,
|
|
name VARCHAR(128) NOT NULL,
|
|
email VARCHAR(128) NOT NULL,
|
|
department VARCHAR(128) DEFAULT NULL,
|
|
position VARCHAR(128) DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS roles (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(32) NOT NULL UNIQUE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS permissions (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(32) NOT NULL UNIQUE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS user_roles (
|
|
user_id INT NOT NULL,
|
|
role_id INT NOT NULL,
|
|
PRIMARY KEY(user_id, role_id),
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(role_id) REFERENCES roles(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS role_permissions (
|
|
role_id INT NOT NULL,
|
|
permission_id INT NOT NULL,
|
|
PRIMARY KEY(role_id, permission_id),
|
|
FOREIGN KEY(role_id) REFERENCES roles(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(permission_id) REFERENCES permissions(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS categories (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(128) NOT NULL,
|
|
description TEXT,
|
|
icon VARCHAR(64) DEFAULT 'fas fa-tag',
|
|
color VARCHAR(16) DEFAULT '#2c5aa0',
|
|
active TINYINT(1) DEFAULT 1,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS items (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
category_id INT NULL,
|
|
price DECIMAL(12,2) NOT NULL DEFAULT 0,
|
|
quantity INT NOT NULL DEFAULT 0,
|
|
description TEXT,
|
|
barcode VARCHAR(128),
|
|
min_quantity INT NOT NULL DEFAULT 0,
|
|
location VARCHAR(255),
|
|
supplier VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(category_id) REFERENCES categories(id) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS operations (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
type ENUM('incoming','outgoing') NOT NULL,
|
|
item_id INT NOT NULL,
|
|
quantity INT NOT NULL,
|
|
employee_id INT NOT NULL,
|
|
status ENUM('completed','pending','cancelled') DEFAULT 'completed',
|
|
notes TEXT,
|
|
supplier VARCHAR(255),
|
|
recipient VARCHAR(255),
|
|
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(item_id) REFERENCES items(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(employee_id) REFERENCES users(id) ON DELETE RESTRICT
|
|
);
|
|
|
|
|