CREATE DATABASE 'webshop' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci; -- example link: https://fabric.inc/blog/commerce/ecommerce-database-design-example CREATE TABLE 'user' ( id int NOT NULL AUTO_INCREMENT, lower_name varchar(255), name varchar(255) NOT NULL, full_name varchar(255), email varchar(255) NOT NULL, passwd varchar(255), passwd_hash_algo varchar(255), is_admin bool, created_at int8, modified_at int8, PRIMARY KEY (id), UNIQUE (email, passwd) ); CREATE TABLE 'user_address' ( id int, user_id int, address_line1 varchar(255), address_line2 varchar(255), city varchar(255), postal_code varchar(255), country varchar(2), telephone varchar(255), mobile varchar(255), UNIQUE (telephone, mobile, user_id) ); CREATE TABLE 'user_payment' ( id int, user_id int, payment_type varchar(255), provider varchar(255), account_no int, expiry date, UNIQUE (user_id) ); CREATE TABLE 'shopping_session' ( id int, user_id varchar(255), total decimal, created_at int8, modified_at int8, UNIQUE (user_id) ); CREATE TABLE 'cart_item' ( id int, session_id int, product_id int, quantity int, created_at int8, modified_at int8 ); CREATE TABLE 'payment_details' ( id int, order_id int, amount int, provider varchar(255), status varchar(255), created_at int8, modified_at int8 ); CREATE TABLE 'order_items' ( id int, order_id int, product_id int, quantity int, created_at int8, modified_at int8 ); CREATE TABLE 'order_details' ( id int, user_id varchar(255), total decimal, payment_id int, created_at int8, modified_at int8 ); CREATE TABLE 'product' ( id int NOT NULL, name varchar(255), color varchar(255), make varchar(255), model varchar(255) NOT NULL, engine varchar(255), description text, category_id int, inventory_id int, price decimal, discount_id int, created_at int8, modified_at int8, deleted_at int8 ); CREATE TABLE 'product_category' ( id int, name varchar(255), description text, created_at int8, modified_at int8, deleted_at int8 ); CREATE TABLE 'product_inventory' ( id int, quantity int, created_at int8, modified_at int8, deleted_at int8 ); CREATE TABLE 'discount' ( id int, name varchar(255), description text, discount_percent decimal, active bool, created_at int8, modified_at int8, deleted_at int8 )