ddl: primary_ddl.sql

File primary_ddl.sql, 6.0 KB (added by 221046, 4 weeks ago)
Line 
1CREATE TABLE album
2(
3 album_id INT NOT NULL,
4 title VARCHAR(160) NOT NULL,
5 artist_id INT NOT NULL,
6 CONSTRAINT album_pkey PRIMARY KEY (album_id)
7);
8
9CREATE TABLE artist
10(
11 artist_id INT NOT NULL,
12 name VARCHAR(120),
13 CONSTRAINT artist_pkey PRIMARY KEY (artist_id)
14);
15
16CREATE TABLE customer
17(
18 customer_id INT NOT NULL,
19 first_name VARCHAR(40) NOT NULL,
20 last_name VARCHAR(20) NOT NULL,
21 company VARCHAR(80),
22 support_rep_id INT,
23 contact_id INT,
24 address_info_id INT,
25 CONSTRAINT customer_pkey PRIMARY KEY (customer_id)
26);
27
28CREATE TABLE employee
29(
30 employee_id INT NOT NULL,
31 last_name VARCHAR(20) NOT NULL,
32 first_name VARCHAR(20) NOT NULL,
33 title VARCHAR(30),
34 reports_to INT,
35 birth_date TIMESTAMP,
36 hire_date TIMESTAMP,
37 contact_id INT,
38 address_info_id INT,
39 CONSTRAINT employee_pkey PRIMARY KEY (employee_id)
40);
41
42CREATE TABLE genre
43(
44 genre_id INT NOT NULL,
45 name VARCHAR(120),
46 CONSTRAINT genre_pkey PRIMARY KEY (genre_id)
47);
48
49CREATE TABLE invoice
50(
51 invoice_id INT NOT NULL,
52 customer_id INT NOT NULL,
53 invoice_date TIMESTAMP NOT NULL,
54 billing_address VARCHAR(70),
55 billing_city VARCHAR(40),
56 billing_state VARCHAR(40),
57 billing_country VARCHAR(40),
58 billing_postal_code VARCHAR(10),
59 total NUMERIC(10, 2) NOT NULL,
60 CONSTRAINT invoice_pkey PRIMARY KEY (invoice_id)
61);
62
63CREATE TABLE invoice_line
64(
65 invoice_line_id INT NOT NULL,
66 invoice_id INT NOT NULL,
67 track_id INT NOT NULL,
68 unit_price NUMERIC(10, 2) NOT NULL,
69 quantity INT NOT NULL,
70 CONSTRAINT invoice_line_pkey PRIMARY KEY (invoice_line_id)
71);
72
73CREATE TABLE media_type
74(
75 media_type_id INT NOT NULL,
76 name VARCHAR(120),
77 CONSTRAINT media_type_pkey PRIMARY KEY (media_type_id)
78);
79
80CREATE TABLE playlist
81(
82 playlist_id INT NOT NULL,
83 name VARCHAR(120),
84 CONSTRAINT playlist_pkey PRIMARY KEY (playlist_id)
85);
86
87CREATE TABLE playlist_track
88(
89 playlist_id INT NOT NULL,
90 track_id INT NOT NULL,
91 CONSTRAINT playlist_track_pkey PRIMARY KEY (playlist_id, track_id)
92);
93
94CREATE TABLE track
95(
96 track_id INT NOT NULL,
97 name VARCHAR(200) NOT NULL,
98 album_id INT,
99 media_type_id INT NOT NULL,
100 genre_id INT,
101 composer VARCHAR(220),
102 milliseconds INT NOT NULL,
103 bytes INT,
104 unit_price NUMERIC(10, 2) NOT NULL,
105 CONSTRAINT track_pkey PRIMARY KEY (track_id)
106);
107
108CREATE TABLE price
109(
110 price_id SERIAL PRIMARY KEY,
111 value NUMERIC(10, 2) NOT NULL,
112 date TIMESTAMP NOT NULL,
113 track_id INT NOT NULL
114);
115
116CREATE TABLE Contact
117(
118 contact_id INT,
119 phone VARCHAR(50),
120 fax VARCHAR(50),
121 email VARCHAR(100),
122 CONSTRAINT contact_pkey PRIMARY KEY (contact_id)
123);
124
125CREATE TABLE address_info
126(
127 address_info_id SERIAL,
128 address TEXT,
129 city TEXT,
130 state TEXT,
131 country TEXT,
132 postalcode TEXT,
133 phone TEXT,
134 fax TEXT,
135 email TEXT,
136 CONSTRAINT address_info_pkey PRIMARY KEY (address_info_id)
137);
138
139ALTER TABLE album
140 ADD CONSTRAINT fk_album_artist FOREIGN KEY (artist_id)
141 REFERENCES artist(artist_id)
142 ON DELETE CASCADE;
143
144ALTER TABLE customer
145 ADD CONSTRAINT fk_customer_employee FOREIGN KEY (support_rep_id)
146 REFERENCES employee(employee_id)
147 ON DELETE SET NULL;
148
149ALTER TABLE customer
150 ADD CONSTRAINT fk_customer_contact FOREIGN KEY (contact_id)
151 REFERENCES contact(contact_id)
152 ON DELETE SET NULL;
153
154ALTER TABLE customer
155 ADD CONSTRAINT fk_customer_address FOREIGN KEY (address_info_id)
156 REFERENCES address_info(address_info_id)
157 ON DELETE SET NULL;
158
159ALTER TABLE employee
160 ADD CONSTRAINT fk_employee_manager FOREIGN KEY (reports_to)
161 REFERENCES employee(employee_id)
162 ON DELETE SET NULL;
163
164ALTER TABLE employee
165 ADD CONSTRAINT fk_employee_contact FOREIGN KEY (contact_id)
166 REFERENCES contact(contact_id)
167 ON DELETE SET NULL;
168
169ALTER TABLE employee
170 ADD CONSTRAINT fk_employee_address FOREIGN KEY (address_info_id)
171 REFERENCES address_info(address_info_id)
172 ON DELETE SET NULL;
173
174ALTER TABLE invoice
175 ADD CONSTRAINT fk_invoice_customer FOREIGN KEY (customer_id)
176 REFERENCES customer(customer_id)
177 ON DELETE CASCADE;
178
179ALTER TABLE invoice_line
180 ADD CONSTRAINT fk_invoice_line_invoice FOREIGN KEY (invoice_id)
181 REFERENCES invoice(invoice_id)
182 ON DELETE CASCADE;
183
184ALTER TABLE invoice_line
185 ADD CONSTRAINT fk_invoice_line_track FOREIGN KEY (track_id)
186 REFERENCES track(track_id)
187 ON DELETE CASCADE;
188
189ALTER TABLE track
190 ADD CONSTRAINT fk_track_album FOREIGN KEY (album_id)
191 REFERENCES album(album_id)
192 ON DELETE SET NULL;
193
194ALTER TABLE track
195 ADD CONSTRAINT fk_track_media FOREIGN KEY (media_type_id)
196 REFERENCES media_type(media_type_id)
197 ON DELETE RESTRICT;
198
199ALTER TABLE track
200 ADD CONSTRAINT fk_track_genre FOREIGN KEY (genre_id)
201 REFERENCES genre(genre_id)
202 ON DELETE SET NULL;
203
204ALTER TABLE playlist_track
205 ADD CONSTRAINT fk_playlist_track_playlist FOREIGN KEY (playlist_id)
206 REFERENCES playlist(playlist_id)
207 ON DELETE CASCADE;
208
209ALTER TABLE playlist_track
210 ADD CONSTRAINT fk_playlist_track_track FOREIGN KEY (track_id)
211 REFERENCES track(track_id)
212 ON DELETE CASCADE;
213
214ALTER TABLE price
215 ADD CONSTRAINT fk_price_track FOREIGN KEY (track_id)
216 REFERENCES track(track_id)
217 ON DELETE CASCADE;