CREATE TABLE regions ( region_id NUMBER, region_name VARCHAR2( 50 ) NOT NULL ); ALTER TABLE regions ADD (CONSTRAINT pk_region PRIMARY KEY (region_id));
CREATE TABLE countries ( country_id CHAR( 2 ) PRIMARY KEY , country_name VARCHAR2( 40 ) NOT NULL, region_id NUMBER , CONSTRAINT fk_countries_regions FOREIGN KEY( region_id ) REFERENCES regions( region_id ) ON DELETE CASCADE );
CREATE TABLE locations ( location_id NUMBER, address VARCHAR2( 255 ) NOT NULL, postal_code VARCHAR2( 20 ) , city VARCHAR2( 50 ) , state VARCHAR2( 50 ) , country_id CHAR( 2 ) , CONSTRAINT fk_locations_countries FOREIGN KEY( country_id ) REFERENCES countries( country_id ) ON DELETE CASCADE ); ALTER TABLE locations ADD (CONSTRAINT pk_locations PRIMARY KEY (location_id));
CREATE TABLE warehouses ( warehouse_id NUMBER, warehouse_name VARCHAR( 255 ) , location_id NUMBER( 12, 0 ), CONSTRAINT fk_warehouses_locations FOREIGN KEY( location_id ) REFERENCES locations( location_id ) ON DELETE CASCADE ); ALTER TABLE warehouses ADD (CONSTRAINT pk_warehouses PRIMARY KEY (warehouse_id));
CREATE TABLE employees ( employee_id NUMBER, first_name VARCHAR( 255 ) NOT NULL, last_name VARCHAR( 255 ) NOT NULL, email VARCHAR( 255 ) NOT NULL, phone VARCHAR( 50 ) NOT NULL , hire_date DATE NOT NULL , manager_id NUMBER( 12, 0 ) , job_title VARCHAR( 255 ) NOT NULL ); ALTER TABLE employees ADD (CONSTRAINT pk_employees PRIMARY KEY (employee_id)); ALTER TABLE employees ADD (CONSTRAINT fk_employees_manager FOREIGN KEY( manager_id ) REFERENCES employees( employee_id ) ON DELETE CASCADE);
CREATE TABLE product_categories ( category_id NUMBER, category_name VARCHAR2( 255 ) NOT NULL ); ALTER TABLE product_categories ADD (CONSTRAINT pk_product_categories PRIMARY KEY (category_id));
CREATE TABLE products ( product_id NUMBER, product_name VARCHAR2( 255 ) NOT NULL, description VARCHAR2( 2000 ) , standard_cost NUMBER( 9, 2 ) , list_price NUMBER( 9, 2 ) , category_id NUMBER NOT NULL , CONSTRAINT fk_products_categories FOREIGN KEY( category_id ) REFERENCES product_categories( category_id ) ON DELETE CASCADE ); ALTER TABLE products ADD (CONSTRAINT pk_products PRIMARY KEY (product_id));
CREATE TABLE customers ( customer_id NUMBER , name VARCHAR2( 255 ) NOT NULL, address VARCHAR2( 255 ) , website VARCHAR2( 255 ) , credit_limit NUMBER( 8, 2 ) ); ALTER TABLE customers ADD (CONSTRAINT pk_customers PRIMARY KEY (customer_id));
CREATE TABLE contacts ( contact_id NUMBER, first_name VARCHAR2( 255 ) NOT NULL, last_name VARCHAR2( 255 ) NOT NULL, email VARCHAR2( 255 ) NOT NULL, phone VARCHAR2( 20 ) , customer_id NUMBER , CONSTRAINT fk_contacts_customers FOREIGN KEY( customer_id ) REFERENCES customers( customer_id ) ON DELETE CASCADE ); ALTER TABLE contacts ADD (CONSTRAINT pk_contacts PRIMARY KEY (contact_id));
CREATE TABLE orders ( order_id NUMBER, customer_id NUMBER( 6, 0 ) NOT NULL, status VARCHAR( 20 ) NOT NULL , salesman_id NUMBER( 6, 0 ) , order_date DATE NOT NULL , CONSTRAINT fk_orders_customers FOREIGN KEY( customer_id ) REFERENCES customers( customer_id ) ON DELETE CASCADE, CONSTRAINT fk_orders_employees FOREIGN KEY( salesman_id ) REFERENCES employees( employee_id ) ON DELETE SET NULL ); ALTER TABLE orders ADD (CONSTRAINT pk_orders PRIMARY KEY (order_id));
CREATE TABLE order_items ( order_id NUMBER( 12, 0 ) , item_id NUMBER( 12, 0 ) , product_id NUMBER( 12, 0 ) NOT NULL , quantity NUMBER( 8, 2 ) NOT NULL , unit_price NUMBER( 8, 2 ) NOT NULL , CONSTRAINT pk_order_items PRIMARY KEY( order_id, item_id ), CONSTRAINT fk_order_items_products FOREIGN KEY( product_id ) REFERENCES products( product_id ) ON DELETE CASCADE, CONSTRAINT fk_order_items_orders FOREIGN KEY( order_id ) REFERENCES orders( order_id ) ON DELETE CASCADE );
CREATE TABLE inventories ( product_id NUMBER( 12, 0 ) , warehouse_id NUMBER( 12, 0 ) , quantity NUMBER( 8, 0 ) NOT NULL, CONSTRAINT pk_inventories PRIMARY KEY( product_id, warehouse_id ), CONSTRAINT fk_inventories_products FOREIGN KEY( product_id ) REFERENCES products( product_id ) ON DELETE CASCADE, CONSTRAINT fk_inventories_warehouses FOREIGN KEY( warehouse_id ) REFERENCES warehouses( warehouse_id ) ON DELETE CASCADE );
|