SQL & DDL: DDL FINAL SKRIPTA.txt

File DDL FINAL SKRIPTA.txt, 4.2 KB (added by 213231, 3 weeks ago)
Line 
1-- Drop tables and views if exist
2DROP TABLE IF EXISTS aktivniprodukti CASCADE;
3DROP VIEW IF EXISTS aktivniprodukti CASCADE;
4
5-- Customer
6CREATE TABLE customer (
7 CustomerID INT PRIMARY KEY,
8 CustomerName VARCHAR(100),
9 CustomerSurName VARCHAR(100),
10 Email VARCHAR(100),
11 Address VARCHAR(255),
12 CustomerContact VARCHAR(20),
13 Password VARCHAR(255) NOT NULL
14);
15
16-- CustomerFeedback
17CREATE TABLE customerfeedback (
18 FeedbackID INT PRIMARY KEY,
19 CustomerID INT,
20 ProductID INT,
21 Rating INT CHECK (Rating BETWEEN 1 AND 5),
22 Comment TEXT,
23 FeedbackDate DATE,
24 TransactionID INT,
25 CONSTRAINT customerfeedback_customer_fk FOREIGN KEY (CustomerID) REFERENCES customer(CustomerID),
26 CONSTRAINT customerfeedback_product_fk FOREIGN KEY (ProductID) REFERENCES product(ProductID),
27 CONSTRAINT customerfeedback_transaction_fk FOREIGN KEY (TransactionID) REFERENCES procurement(TransactionID)
28);
29
30-- Employee
31CREATE TABLE employee (
32 EmployeeID INT PRIMARY KEY,
33 EmployeeName VARCHAR(100),
34 EmployeeSurName VARCHAR(100),
35 Position VARCHAR(100),
36 Department VARCHAR(100),
37 Email VARCHAR(100),
38 Password VARCHAR(100)
39);
40
41-- Maintenance
42CREATE TABLE maintenance (
43 MainID INT PRIMARY KEY,
44 EmployeeID INT,
45 ProductID INT,
46 MainDate DATE,
47 Description TEXT,
48 Cost NUMERIC(10,2),
49 Status VARCHAR(10) DEFAULT 'Pending',
50 StartTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
51 EndTime TIMESTAMP,
52 CONSTRAINT maintenance_status_check CHECK (Status IN ('Pending', 'Completed')),
53 CONSTRAINT maintenance_employee_fk FOREIGN KEY (EmployeeID) REFERENCES employee(EmployeeID),
54 CONSTRAINT maintenance_product_fk FOREIGN KEY (ProductID) REFERENCES product(ProductID)
55);
56
57-- Procurement
58CREATE TABLE procurement (
59 TransactionID INT PRIMARY KEY,
60 EmployeeID INT,
61 CustomerID INT,
62 ProductID INT,
63 ProcurementDate DATE,
64 Quantity INT,
65 Status VARCHAR(10) DEFAULT 'Pending',
66 Notified BOOLEAN DEFAULT FALSE,
67 GroupID VARCHAR(255),
68 CONSTRAINT procurement_employee_fk FOREIGN KEY (EmployeeID) REFERENCES employee(EmployeeID),
69 CONSTRAINT procurement_customer_fk FOREIGN KEY (CustomerID) REFERENCES customer(CustomerID),
70 CONSTRAINT procurement_product_fk FOREIGN KEY (ProductID) REFERENCES product(ProductID),
71 CONSTRAINT procurement_status_check CHECK (Status IN ('Pending', 'Approved', 'Rejected'))
72);
73
74-- Product
75CREATE TABLE product (
76 ProductID INT PRIMARY KEY,
77 Model VARCHAR(100),
78 Price NUMERIC(10,2),
79 LicensePlate VARCHAR(50),
80 Status VARCHAR(15) NOT NULL,
81 CONSTRAINT product_status_check CHECK (Status IN ('available', 'sold', 'rented', 'maintenance'))
82);
83
84-- T_Type
85CREATE TABLE t_type (
86 TransactionID INT PRIMARY KEY,
87 Type VARCHAR(10) NOT NULL,
88 Duration INT,
89 MonthlyPay NUMERIC(10,2),
90 TotalPrice NUMERIC(10,2),
91 CONSTRAINT t_type_type_check CHECK (Type IN ('Rent', 'Buy')),
92 CONSTRAINT t_type_transaction_fk FOREIGN KEY (TransactionID) REFERENCES procurement(TransactionID)
93);
94
95-- Trailer
96CREATE TABLE trailer (
97 ProductID INT PRIMARY KEY,
98 Capacity NUMERIC(10,2),
99 CONSTRAINT trailer_product_fk FOREIGN KEY (ProductID) REFERENCES product(ProductID)
100);
101
102-- Truck
103CREATE TABLE truck (
104 ProductID INT PRIMARY KEY,
105 HP INT,
106 CONSTRAINT truck_product_fk FOREIGN KEY (ProductID) REFERENCES product(ProductID)
107);
108
109-- Views (Customer views product)
110CREATE TABLE views (
111 CustomerID INT NOT NULL,
112 ProductID INT NOT NULL,
113 PRIMARY KEY (CustomerID, ProductID),
114 CONSTRAINT views_customer_fk FOREIGN KEY (CustomerID) REFERENCES customer(CustomerID),
115 CONSTRAINT views_product_fk FOREIGN KEY (ProductID) REFERENCES product(ProductID)
116);
117
118-- Wallet
119CREATE TABLE wallet (
120 WalletID SERIAL PRIMARY KEY,
121 CustomerID INT NOT NULL,
122 Balance NUMERIC(10,2) NOT NULL DEFAULT 0.00,
123 CardNumber VARCHAR(16),
124 ExpiryDate DATE,
125 CVV VARCHAR(4),
126 CardHolderName VARCHAR(100),
127 CONSTRAINT wallet_customer_fk FOREIGN KEY (CustomerID) REFERENCES customer(CustomerID)
128);
129
130-- View aktivniprodukti (PostgreSQL syntax)
131CREATE OR REPLACE VIEW aktivniprodukti AS
132SELECT product.ProductID,
133 product.Model,
134 product.Price,
135 product.LicensePlate
136FROM product
137WHERE product.Status = 'available';