-- Initial schema for rusty-petroleum -- Run this against your MariaDB database before importing data CREATE DATABASE IF NOT EXISTS rusty_petroleum; USE rusty_petroleum; CREATE TABLE IF NOT EXISTS customers ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, customer_number VARCHAR(50) NOT NULL UNIQUE, card_report_group TINYINT UNSIGNED NOT NULL DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_customer_number (customer_number) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS cards ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, card_number VARCHAR(50) NOT NULL UNIQUE, card_type VARCHAR(50), customer_id INT UNSIGNED NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_card_number (card_number), INDEX idx_customer_id (customer_id), FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS transactions ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, transaction_date DATETIME NOT NULL, batch_number VARCHAR(20) NOT NULL, amount DECIMAL(10,2) NOT NULL, volume DECIMAL(10,3) NOT NULL, price DECIMAL(8,4) NOT NULL, quality_code INT NOT NULL, quality_name VARCHAR(50) NOT NULL, station VARCHAR(20) NOT NULL, terminal VARCHAR(10) NOT NULL, pump VARCHAR(10) NOT NULL, receipt VARCHAR(20) NOT NULL, control_number VARCHAR(20), card_id INT UNSIGNED NOT NULL, customer_id INT UNSIGNED NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_transaction_date (transaction_date), INDEX idx_batch_number (batch_number), INDEX idx_card_id (card_id), INDEX idx_customer_id (customer_id), INDEX idx_station (station), FOREIGN KEY (card_id) REFERENCES cards(id), FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;