- created a new script to fill the databse with random testdata - improved the script to create the databse
146 lines
5.2 KiB
SQL
146 lines
5.2 KiB
SQL
DROP DATABASE IF EXISTS webshop;
|
|
CREATE DATABASE IF NOT EXISTS `webshop`
|
|
CHARACTER SET utf8 COLLATE utf8_general_ci;
|
|
|
|
USE `webshop`;
|
|
|
|
CREATE TABLE `user`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`lower_name` VARCHAR(255) NOT NULL,
|
|
`email` VARCHAR(255) NOT NULL DEFAULT 'NONE',
|
|
`passwd` VARCHAR(255) NOT NULL DEFAULT 'NONE',
|
|
`passwd_hash_algo` VARCHAR(255) NOT NULL DEFAULT 'NONE',
|
|
`is_admin` BOOLEAN NOT NULL DEFAULT '0'
|
|
);
|
|
ALTER TABLE
|
|
`user`
|
|
ADD UNIQUE `user_email_unique` (`email`);
|
|
CREATE TABLE `user_address`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`user_id` INT UNSIGNED NOT NULL,
|
|
`address_line1` VARCHAR(255) NOT NULL,
|
|
`address_line2` VARCHAR(255) NOT NULL,
|
|
`city` VARCHAR(255) NOT NULL,
|
|
`postal_code` INT NOT NULL,
|
|
`country` VARCHAR(2) NOT NULL,
|
|
`telephone` VARCHAR(255) NOT NULL
|
|
);
|
|
ALTER TABLE
|
|
`user_address`
|
|
ADD UNIQUE `user_address_telephone_unique` (`telephone`);
|
|
CREATE TABLE `user_payment`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`user_id` INT UNSIGNED NOT NULL,
|
|
`payment_type` VARCHAR(255) NOT NULL,
|
|
`provider` VARCHAR(255) NOT NULL,
|
|
`account_no` VARCHAR(255) NOT NULL,
|
|
`expiry` DATE NOT NULL
|
|
);
|
|
CREATE TABLE `shopping_session`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`user_id` INT UNSIGNED NOT NULL,
|
|
`total` DECIMAL(8, 2) NOT NULL
|
|
);
|
|
CREATE TABLE `cart_item`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`session_id` INT UNSIGNED NOT NULL,
|
|
`product_id` INT UNSIGNED NOT NULL,
|
|
`quantity` INT NOT NULL
|
|
);
|
|
CREATE TABLE `payment_details`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`order_id` INT NOT NULL,
|
|
`amount` INT NOT NULL,
|
|
`provider` VARCHAR(255) NOT NULL,
|
|
`status` VARCHAR(255) NOT NULL
|
|
);
|
|
CREATE TABLE `product`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`make` VARCHAR(255) NOT NULL,
|
|
`model` VARCHAR(255) NOT NULL,
|
|
`description` TEXT NOT NULL,
|
|
`category_id` INT UNSIGNED NOT NULL,
|
|
`price` DECIMAL(8, 2) NOT NULL,
|
|
`discount_id` INT UNSIGNED NOT NULL,
|
|
`created_at` DATE NOT NULL
|
|
);
|
|
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,
|
|
`active` BOOLEAN NOT NULL
|
|
);
|
|
CREATE TABLE `order_items`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`order_id` INT UNSIGNED NOT NULL,
|
|
`product_id` INT UNSIGNED NOT NULL,
|
|
`quantity` INT NOT NULL,
|
|
`user_id` BIGINT NOT NULL
|
|
);
|
|
CREATE TABLE `product_category`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL
|
|
);
|
|
CREATE TABLE `order_details`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`user_id` INT UNSIGNED NOT NULL,
|
|
`total` DECIMAL(8, 2) NOT NULL,
|
|
`payment_id` INT UNSIGNED NOT NULL
|
|
);
|
|
CREATE TABLE `product_pictures`
|
|
(
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`product_id` INT UNSIGNED NOT NULL,
|
|
`picture_base64` TEXT NOT NULL,
|
|
`is_primary` BOOLEAN NOT NULL
|
|
);
|
|
ALTER TABLE
|
|
`product_pictures`
|
|
ADD CONSTRAINT `product_pictures_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`);
|
|
ALTER TABLE
|
|
`user_payment`
|
|
ADD CONSTRAINT `user_payment_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
|
|
`order_details`
|
|
ADD CONSTRAINT `order_details_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);
|
|
ALTER TABLE
|
|
`order_items`
|
|
ADD CONSTRAINT `order_items_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`);
|
|
ALTER TABLE
|
|
`product`
|
|
ADD CONSTRAINT `product_discount_id_foreign` FOREIGN KEY (`discount_id`) REFERENCES `discount` (`id`);
|
|
ALTER TABLE
|
|
`shopping_session`
|
|
ADD CONSTRAINT `shopping_session_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);
|
|
ALTER TABLE
|
|
`product`
|
|
ADD CONSTRAINT `product_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `product_category` (`id`);
|
|
ALTER TABLE
|
|
`user_address`
|
|
ADD CONSTRAINT `user_address_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);
|
|
ALTER TABLE
|
|
`order_items`
|
|
ADD CONSTRAINT `order_items_order_id_foreign` FOREIGN KEY (`order_id`) REFERENCES `order_details` (`id`);
|
|
ALTER TABLE
|
|
`cart_item`
|
|
ADD CONSTRAINT `cart_item_session_id_foreign` FOREIGN KEY (`session_id`) REFERENCES `shopping_session` (`id`);
|
|
ALTER TABLE
|
|
`cart_item`
|
|
ADD CONSTRAINT `cart_item_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`); |