-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsample-model.sql
More file actions
166 lines (144 loc) · 7.73 KB
/
Copy pathsample-model.sql
File metadata and controls
166 lines (144 loc) · 7.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
ALTER TABLE IF EXISTS "ORDER" DROP CONSTRAINT IF EXISTS FK_ORDER_REFERENCE_CUSTOMER;
ALTER TABLE IF EXISTS "ORDER_ITEM" DROP CONSTRAINT IF EXISTS FK_ORDERITE_REFERENCE_ORDER;
ALTER TABLE IF EXISTS "ORDER_ITEM" DROP CONSTRAINT IF EXISTS FK_ORDERITE_REFERENCE_PRODUCT;
ALTER TABLE IF EXISTS "PRODUCT" DROP CONSTRAINT IF EXISTS FK_PRODUCT_REFERENCE_SUPPLIER;
DROP TABLE IF EXISTS CUSTOMER;
DROP TABLE IF EXISTS "ORDER";
DROP TABLE IF EXISTS "ORDER_ITEM";
DROP TABLE IF EXISTS "PRODUCT";
DROP TABLE IF EXISTS "SUPPLIER";
/*==============================================================*/
/* Table: CUSTOMER */
/*==============================================================*/
CREATE TABLE CUSTOMER (
ID INT IDENTITY,
FIRST_NAME NVARCHAR(40) NOT NULL,
LAST_NAME NVARCHAR(40) NOT NULL,
CITY NVARCHAR(40) NULL,
COUNTRY NVARCHAR(40) NULL,
PHONE NVARCHAR(20) NULL,
CONSTRAINT PK_CUSTOMER PRIMARY KEY (ID)
);
/*==============================================================*/
/* Index: IndexCustomerName */
/*==============================================================*/
CREATE INDEX IndexCustomerName
ON CUSTOMER (
LAST_NAME ASC,
FIRST_NAME ASC
);
/*==============================================================*/
/* Table: "Order" */
/*==============================================================*/
CREATE TABLE "ORDER" (
Id INT IDENTITY,
ORDER_DATE DATETIME NOT NULL DEFAULT getdate(),
ORDER_NUMBER NVARCHAR(10) NULL,
CUSTOMER_ID INT NOT NULL,
TOTAL_AMOUNT DECIMAL(12, 2) NULL DEFAULT 0,
CONSTRAINT PK_ORDER PRIMARY KEY (Id)
);
/*==============================================================*/
/* Index: IndexOrderCustomerId */
/*==============================================================*/
CREATE INDEX IndexOrderCustomerId
ON "ORDER" (
CUSTOMER_ID ASC
);
/*==============================================================*/
/* Index: IndexOrderOrderDate */
/*==============================================================*/
CREATE INDEX IndexOrderOrderDate
ON "ORDER" (
ORDER_DATE ASC
);
/*==============================================================*/
/* Table: OrderItem */
/*==============================================================*/
CREATE TABLE ORDER_ITEM (
ID INT IDENTITY,
ORDER_ID INT NOT NULL,
PRODUCT_ID INT NOT NULL,
UNIT_PRICE DECIMAL(12, 2) NOT NULL DEFAULT 0,
QUANTITY INT NOT NULL DEFAULT 1,
CONSTRAINT PK_ORDERITEM PRIMARY KEY (ID)
);
/*==============================================================*/
/* Index: IndexOrderItemOrderId */
/*==============================================================*/
CREATE INDEX IndexOrderItemOrderId
ON ORDER_ITEM (
ORDER_ID ASC
);
/*==============================================================*/
/* Index: IndexOrderItemProductId */
/*==============================================================*/
CREATE INDEX IndexOrderItemProductId
ON ORDER_ITEM (
PRODUCT_ID ASC
);
/*==============================================================*/
/* Table: Product */
/*==============================================================*/
CREATE TABLE PRODUCT (
ID INT IDENTITY,
PRODUCT_NAME NVARCHAR(50) NOT NULL,
SUPPLIER_ID INT NOT NULL,
UNIT_PRICE DECIMAL(12, 2) NULL DEFAULT 0,
PACKAGE NVARCHAR(30) NULL,
IS_DISCONTINUED BIT NOT NULL DEFAULT 0,
CONSTRAINT PK_PRODUCT PRIMARY KEY (ID)
);
/*==============================================================*/
/* Index: IndexProductSupplierId */
/*==============================================================*/
CREATE INDEX IndexProductSupplierId
ON PRODUCT (
SUPPLIER_ID ASC
);
/*==============================================================*/
/* Index: IndexProductName */
/*==============================================================*/
CREATE INDEX IndexProductName
ON PRODUCT (
PRODUCT_NAME ASC
);
/*==============================================================*/
/* Table: Supplier */
/*==============================================================*/
CREATE TABLE SUPPLIER (
ID INT IDENTITY,
COMPANY_NAME NVARCHAR(40) NOT NULL,
CONTACT_NAME NVARCHAR(50) NULL,
CITY NVARCHAR(40) NULL,
COUNTRY NVARCHAR(40) NULL,
PHONE NVARCHAR(30) NULL,
FAX NVARCHAR(30) NULL,
CONSTRAINT PK_SUPPLIER PRIMARY KEY (ID)
);
/*==============================================================*/
/* Index: IndexSupplierName */
/*==============================================================*/
CREATE INDEX IndexSupplierName
ON SUPPLIER (
COMPANY_NAME ASC
);
/*==============================================================*/
/* Index: IndexSupplierCountry */
/*==============================================================*/
CREATE INDEX IndexSupplierCountry
ON SUPPLIER (
COUNTRY ASC
);
ALTER TABLE "ORDER"
ADD CONSTRAINT FK_ORDER_REFERENCE_CUSTOMER FOREIGN KEY (CUSTOMER_ID)
REFERENCES CUSTOMER (ID);
ALTER TABLE ORDER_ITEM
ADD CONSTRAINT FK_ORDERITE_REFERENCE_ORDER FOREIGN KEY (ORDER_ID)
REFERENCES "ORDER" (ID);
ALTER TABLE ORDER_ITEM
ADD CONSTRAINT FK_ORDERITE_REFERENCE_PRODUCT FOREIGN KEY (PRODUCT_ID)
REFERENCES PRODUCT (ID);
ALTER TABLE PRODUCT
ADD CONSTRAINT FK_PRODUCT_REFERENCE_SUPPLIER FOREIGN KEY (SUPPLIER_ID)
REFERENCES SUPPLIER (ID);