Files
2026-10-07 15:17:53 -04:00

162 lines
4.8 KiB
SQL

-- (1) Customers --
DROP TABLE Customers CASCADE CONSTRAINTS; -- uncomment after 1st run
CREATE TABLE customers (
customerId CHAR(5),
companyName VARCHAR2(40) NOT NULL,
contactName VARCHAR2(30),
contactTitle VARCHAR2(30),
address VARCHAR2(60),
city VARCHAR2(15),
region VARCHAR2(15),
postalCode VARCHAR2(10),
country VARCHAR2(15),
phone VARCHAR2(24),
fax VARCHAR2(24),
email VARCHAR2(50),
CONSTRAINT Customers_CustomerId_pk PRIMARY KEY (customerId),
CONSTRAINT Customers_Email_uk UNIQUE(email),
);
-- (2) Employees --
DROP TABLE Employees CASCADE CONSTRAINTS; -- uncomment after 1st run
CREATE TABLE employees (
employeeId NUMBER(8,0),
lastName VARCHAR2(20) NOT NULL,
firstName VARCHAR2(10) NOT NULL,
title VARCHAR2(30),
titleOfCourtesy VARCHAR2(25),
birthDate DATE,
hireDate DATE,
address VARCHAR2(60),
city VARCHAR2(15),
region VARCHAR2(15),
postalCode VARCHAR2(10),
country VARCHAR2(15),
homePhone VARCHAR2(24),
extension VARCHAR2(4),
notes VARCHAR2(600),
reportsTo NUMBER(8,0),
photograph VARCHAR2(255),
SIN CHAR(9),
CONSTRAINT Employees_EmployeeId_pk PRIMARY KEY (employeeId),
CONSTRAINT Employees_SIN_uk UNIQUE (SIN),
CONSTRAINT Employees_ReportsTO_fk REFERENCES employees(employeeId),
);
-- (3) Shippers --
DROP TABLE Shippers CASCADE CONSTRAINTS; -- uncomment after 1st run
CREATE TABLE shippers (
shipperId NUMBER(8,0) NOT NULL,
companyName VARCHAR2(40) NOT NULL,
phone VARCHAR2(24),
CONSTRAINT Shippers_Shipper_ID_pk PRIMARY KEY (shipperId),
);
-- (4) Suppliers --
DROP TABLE Suppliers CASCADE CONSTRAINTS; -- uncomment after 1st run
CREATE TABLE suppliers (
supplierId NUMBER(8,0) NOT NULL,
companyName VARCHAR2(40) NOT NULL,
contactName VARCHAR2(30),
contactTitle VARCHAR2(30),
address VARCHAR2(60),
city VARCHAR2(15),
region VARCHAR2(15),
postalCode VARCHAR2(10),
country VARCHAR2(15),
phone VARCHAR2(24),
fax VARCHAR2(24),
homepage VARCHAR2(200),
CONSTRAINT Suppliers_SupplierId_pk PRIMARY KEY (supplierId),
);
-- (5) Categories ---
DROP TABLE Categories CASCADE CONSTRAINTS; -- uncomment after 1st run
CREATE TABLE categories (
categoryId NUMBER(8,0),
categoryName VARCHAR2(15) NOT NULL,
categoryCode NUMBER(6,0),
description VARCHAR2(300),
CONSTRAINT Categories_CategoryID_pk PRIMARY KEY (categoryId),
CONSTRAINT Categories_CategoryCode_uk UNIQUE(categoryCode),
);
-- (6) Orders --
DROP TABLE Orders CASCADE CONSTRAINTS; -- uncomment after 1st run
CREATE TABLE orders (
orderId NUMBER(8,0) NOT NULL,
customerId CHAR(5),
employeeId NUMBER(8,0),
territoryId VARCHAR2(20),
orderDate DATE,
requiredDate DATE,
shippedDate DATE,
shipVia NUMBER(8,0),
freight NUMBER(8,2),
shipName VARCHAR2(40),
shipAddress VARCHAR2(60),
shipCity VARCHAR2(15),
shipRegion VARCHAR2(15),
shipPostalCode VARCHAR2(10),
shipCountry VARCHAR2(15),
CONSTRAINT Orders_OrderId_pk PRIMARY KEY (orderId),
CONSTRAINT Orders_CustomerId_fk REFERENCES customers(customerId),
CONSTRAINT Orders_EmployeeId_fk REFERENCES employees(employeeId),
CONSTRAINT Orders_ShippedVia_fk REFERENCES shippers(shipperId),
);
-- (7) Products --
DROP TABLE Products CASCADE CONSTRAINTS; -- uncomment after 1st run
CREATE TABLE products (
productId NUMBER(8,0) NOT NULL,
productName VARCHAR2(40) NOT NULL,
supplierId NUMBER(8,0),
categoryId NUMBER(8,0),
quantityPerUnit VARCHAR2(20),
unitPrice NUMBER(8,2),
unitsInStock NUMBER(6,0),
unitsOnOrder NUMBER(6,0),
reorderLevel NUMBER(6,0),
discontinued NUMBER(1,0) NOT NULL,
CONSTRAINT Products_ProductID_pk PRIMARY KEY (productId),
CONSTRAINT Products_UnitPrice_ck CHECK (unitPrice >= 0),
CONSTRAINT Products_ReorderLevel_ck CHECK (reorderLevel >= 0),
CONSTRAINT Products_Quantity_ck CHECK (quantity >= 0),
CONSTRAINT Products_UnitsOnOrder_ck CHECK (unitsOnOrder >= 0),
CONSTRAINT Products_SupplierId_fk REFERENCES suppliers(supplierId),
CONSTRAINT Products_CategoryId_fk REFERENCES categories(categoryId),
);
-- (8) OrderDetails --
DROP TABLE OrderDetails CASCADE CONSTRAINTS; -- uncomment after 1st run
CREATE TABLE orderDetails (
orderId NUMBER(8,0) NOT NULL,
productId NUMBER(8,0) NOT NULL,
unitPrice NUMBER(8,2) NOT NULL,
quantity NUMBER(6,0) NOT NULL,
discount NUMBER(5,2) NOT NULL,
CONSTRAINT orderDetails_OID_PID_pk PRIMARY KEY (orderId, productId),
CONSTRAINT orderDetails_Discount_ck CHECK (discount >= 0 AND discount <= 1),
CONSTRAINT orderDetails_Quantity_ck CHECK (quantity > 0),
CONSTRAINT orderDetails_UnitPrice_ck CHECK (unitPrice >= 0),
CONSTRAINT orderDetails_ProductId_fk REFERENCES products(productId),
);
SELECT table_name, 'Levi McLean' FROM user_tables
WHERE table_name != 'HTMLDB_PLAN_TABLE';