CREATE TABLE customer ( customer_id INTEGER NOT NULL AUTO_INCREMENT, email VARCHAR(60) NOT NULL, pass CHAR(40) NOT NULL, first_name VARCHAR(20) NOT NULL, last_name VARCHAR(20) NOT NULL, mailing_join ENUM ('Y', 'N') NOT NULL, PRIMARY KEY ( customer_id ) ); CREATE TABLE delivery_address ( delivery_address_id INTEGER NOT NULL AUTO_INCREMENT, address1 VARCHAR(100) NOT NULL, address2 VARCHAR(100), city VARCHAR(20) NOT NULL, postcode VARCHAR(20) NOT NULL, phone VARCHAR(20) NOT NULL, customerHasAddress INTEGER REFERENCES customer ( customer_id) , PRIMARY KEY ( delivery_address_id ) ); CREATE TABLE mailing_list ( mailing_id INTEGER NOT NULL AUTO_INCREMENT, email VARCHAR(60) NOT NULL, contact_name VARCHAR(20) NOT NULL, join_date TIMESTAMP NOT NULL, PRIMARY KEY ( mailing_id ) ); CREATE TABLE orders ( order_id INTEGER NOT NULL AUTO_INCREMENT, total_order DECIMAL(10,2) NOT NULL, order_date TIMESTAMP NOT NULL, currency VARCHAR(4) NOT NULL, credit_card_number VARCHAR(4) NOT NULL, customerMakesOrder INTEGER REFERENCES customer ( customer_id) , PRIMARY KEY ( order_id ) ); CREATE TABLE order_content ( oc_id INTEGER NOT NULL AUTO_INCREMENT, quantity ENUM ('1', '2', '3', '4', '5'), orderHasContents INTEGER REFERENCES orders ( order_id) , PrintInOrderContents INTEGER REFERENCES specific_print ( sprint_id) , PRIMARY KEY ( oc_id ) ); CREATE TABLE specific_print ( sprint_id INTEGER NOT NULL AUTO_INCREMENT, specific_price DECIMAL(6,2), specificPrintHasSize INTEGER REFERENCES size ( size_id) , general_printHasManyspecific_print INTEGER REFERENCES general_print ( gprint_id) , PRIMARY KEY ( sprint_id ) ); CREATE TABLE general_print ( gprint_id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(120) NOT NULL, description TEXT NOT NULL, default_price DECIMAL(6,2) NOT NULL, image_name VARCHAR(80) NOT NULL, artistCreates INTEGER REFERENCES artist ( artist_id) , printInCategories INTEGER REFERENCES category ( category_id) , PRIMARY KEY ( gprint_id ) ); CREATE TABLE review ( review_id INTEGER NOT NULL AUTO_INCREMENT, customer_review TEXT NOT NULL, stars ENUM ('1', '2', '3', '4', '5') NOT NULL, customerReviews INTEGER REFERENCES customer ( customer_id) , printHasReviews INTEGER REFERENCES general_print ( gprint_id) , PRIMARY KEY ( review_id ) ); CREATE TABLE artist ( artist_id INTEGER NOT NULL AUTO_INCREMENT, first_name VARCHAR(20) NOT NULL, middle_name VARCHAR(20), last_name VARCHAR(20) NOT NULL, PRIMARY KEY ( artist_id ) ); CREATE TABLE category ( category_id INTEGER NOT NULL AUTO_INCREMENT, category VARCHAR(20) NOT NULL, PRIMARY KEY ( category_id ) ); CREATE TABLE size ( size_id INTEGER NOT NULL AUTO_INCREMENT, width INTEGER NOT NULL, height INTEGER NOT NULL, PRIMARY KEY ( size_id ) );