Webshop/database/db_scripts/create_db.sql

174 lines
6.5 KiB
SQL

CREATE DATABASE IF NOT EXISTS `webshop`
CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `webshop`;
CREATE TABLE `discount`
(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`description` TEXT NOT NULL,
`discount_percent` DECIMAL(8, 2) NOT NULL,
`deleted_at` INT(8) NOT NULL,
`modified_at` INT(8) NOT NULL,
`created_at` INT(8) NOT NULL,
`active` BOOLEAN NOT NULL
);
CREATE TABLE `user_address`
(
`address_line1` VARCHAR(255) NOT NULL,
`city` VARCHAR(255) NOT NULL,
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`country` VARCHAR(2) NOT NULL,
`user_id` INT UNSIGNED NOT NULL,
`mobile` VARCHAR(255) NOT NULL,
`postal_code` INT NOT NULL,
`address_line2` VARCHAR(255) NOT NULL,
`telephone` VARCHAR(255) NOT NULL
);
ALTER TABLE
`user_address`
ADD UNIQUE `user_address_mobile_unique` (`mobile`);
ALTER TABLE
`user_address`
ADD UNIQUE `user_address_telephone_unique` (`telephone`);
CREATE TABLE `product_inventory`
(
`created_at` INT(8) NOT NULL,
`modified_at` INT(8) NOT NULL,
`quantity` INT NOT NULL,
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`deleted_at` INT(8) NOT NULL
);
CREATE TABLE `payment_details`
(
`order_id` INT NOT NULL,
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`status` VARCHAR(255) NOT NULL,
`provider` VARCHAR(255) NOT NULL,
`modified_at` INT(8) NOT NULL,
`amount` INT NOT NULL,
`created_at` INT(8) NOT NULL
);
CREATE TABLE `order_details`
(
`payment_id` INT UNSIGNED NOT NULL,
`total` DECIMAL(8, 2) NOT NULL,
`modified_at` INT(8) NOT NULL,
`created_at` INT(8) NOT NULL,
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`user_id` INT UNSIGNED NOT NULL
);
CREATE TABLE `order_items`
(
`modified_at` INT(8) NOT NULL,
`user_id` BIGINT NOT NULL,
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`quantity` INT NOT NULL,
`order_id` INT UNSIGNED NOT NULL,
`created_at` INT(8) NOT NULL,
`product_id` INT UNSIGNED NOT NULL
);
CREATE TABLE `user_payment`
(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`provider` VARCHAR(255) NOT NULL,
`account_no` VARCHAR(255) NOT NULL,
`expiry` DATE NOT NULL,
`payment_type` VARCHAR(255) NOT NULL,
`user_id` INT UNSIGNED NOT NULL
);
CREATE TABLE `product`
(
`category_id` INT UNSIGNED NOT NULL,
`model` VARCHAR(255) NOT NULL,
`color` VARCHAR(255) NOT NULL,
`engine` VARCHAR(255) NOT NULL,
`description` TEXT NOT NULL,
`make` VARCHAR(255) NOT NULL,
`inventory_id` INT UNSIGNED NOT NULL,
`discount_id` INT UNSIGNED NOT NULL,
`created_at` INT(8) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`deleted_at` INT(8) NOT NULL,
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`modified_at` INT(8) NOT NULL,
`price` DECIMAL(8, 2) NOT NULL
);
CREATE TABLE `product_category`
(
`created_at` INT(8) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`modified_at` INT(8) NOT NULL,
`desc` TEXT NOT NULL,
`deleted_at` INT(8) NOT NULL
);
CREATE TABLE `user`
(
`is_active` BOOLEAN NOT NULL DEFAULT '1',
`lower_name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL DEFAULT 'NONE',
`passwd_hash_algo` VARCHAR(255) NOT NULL DEFAULT 'NONE',
`modified_at` INT(8) NOT NULL DEFAULT '0',
`is_admin` BOOLEAN NOT NULL DEFAULT '0',
`name` VARCHAR(255) NOT NULL,
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`created_at` INT(8) NOT NULL DEFAULT '0',
`passwd` VARCHAR(255) NOT NULL DEFAULT 'NONE'
);
ALTER TABLE
`user`
ADD UNIQUE `user_email_unique` (`email`);
CREATE TABLE `shopping_session`
(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`created_at` INT(8) NOT NULL,
`user_id` INT UNSIGNED NOT NULL,
`modified_at` INT(8) NOT NULL,
`total` DECIMAL(8, 2) NOT NULL
);
CREATE TABLE `cart_item`
(
`product_id` INT UNSIGNED NOT NULL,
`session_id` INT UNSIGNED NOT NULL,
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`created_at` INT(8) NOT NULL,
`modified_at` INT(8) NOT NULL,
`quantity` INT NOT NULL
);
ALTER TABLE
`product`
ADD CONSTRAINT `product_inventory_id_foreign` FOREIGN KEY (`inventory_id`) REFERENCES `product_inventory` (`id`);
ALTER TABLE
`order_items`
ADD CONSTRAINT `order_items_order_id_foreign` FOREIGN KEY (`order_id`) REFERENCES `order_details` (`id`);
ALTER TABLE
`product`
ADD CONSTRAINT `product_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `product_category` (`id`);
ALTER TABLE
`order_details`
ADD CONSTRAINT `order_details_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);
ALTER TABLE
`cart_item`
ADD CONSTRAINT `cart_item_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`);
ALTER TABLE
`order_items`
ADD CONSTRAINT `order_items_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`);
ALTER TABLE
`user_address`
ADD CONSTRAINT `user_address_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);
ALTER TABLE
`order_details`
ADD CONSTRAINT `order_details_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payment_details` (`id`);
ALTER TABLE
`product`
ADD CONSTRAINT `product_discount_id_foreign` FOREIGN KEY (`discount_id`) REFERENCES `discount` (`id`);
ALTER TABLE
`user_payment`
ADD CONSTRAINT `user_payment_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);
ALTER TABLE
`shopping_session`
ADD CONSTRAINT `shopping_session_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);
ALTER TABLE
`cart_item`
ADD CONSTRAINT `cart_item_session_id_foreign` FOREIGN KEY (`session_id`) REFERENCES `shopping_session` (`id`);