ddl: DDL.sql

File DDL.sql, 5.9 KB (added by 221046, 8 days ago)
Line 
1CREATE TABLE album
2(
3 album_id INT NOT NULL,
4 album_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 artist_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 genre_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_id INT NOT NULL,
66 track_id INT NOT NULL,
67 quantity INT NOT NULL,
68 unit_price NUMERIC(10, 2) NOT NULL,
69 CONSTRAINT invoice_line_pkey PRIMARY KEY (invoice_id, track_id)
70);
71
72CREATE TABLE media_type
73(
74 media_type_id INT NOT NULL,
75 name VARCHAR(120),
76 CONSTRAINT media_type_pkey PRIMARY KEY (media_type_id)
77);
78
79CREATE TABLE playlist
80(
81 playlist_id INT NOT NULL,
82 name VARCHAR(120),
83 CONSTRAINT playlist_pkey PRIMARY KEY (playlist_id)
84);
85
86CREATE TABLE playlist_track
87(
88 playlist_id INT NOT NULL,
89 track_id INT NOT NULL,
90 CONSTRAINT playlist_track_pkey PRIMARY KEY (playlist_id, track_id)
91);
92
93CREATE TABLE track
94(
95 track_id INT NOT NULL,
96 name VARCHAR(200) NOT NULL,
97 album_id INT NOT NULL,
98 media_type_id INT NOT NULL,
99 genre_id INT,
100 composer VARCHAR(220),
101 milliseconds INT NOT NULL,
102 bytes INT,
103 unit_price NUMERIC(10, 2) NOT NULL,
104 CONSTRAINT track_pkey PRIMARY KEY (track_id)
105);
106
107CREATE TABLE price
108(
109 price_id SERIAL PRIMARY KEY,
110 value NUMERIC(10, 2) NOT NULL,
111 price_date TIMESTAMP NOT NULL,
112 track_id INT NOT NULL
113);
114
115CREATE TABLE Contact
116(
117 contact_id INT,
118 phone VARCHAR(50),
119 fax VARCHAR(50),
120 email VARCHAR(100),
121 CONSTRAINT contact_pkey PRIMARY KEY (contact_id)
122);
123
124CREATE TABLE address_info
125(
126 address_info_id SERIAL,
127 address TEXT,
128 city TEXT,
129 state TEXT,
130 country TEXT,
131 postal_code TEXT,
132 CONSTRAINT address_info_pkey PRIMARY KEY (address_info_id)
133);
134
135ALTER TABLE album
136 ADD CONSTRAINT fk_album_artist FOREIGN KEY (artist_id)
137 REFERENCES artist(artist_id)
138 ON DELETE CASCADE;
139
140ALTER TABLE customer
141 ADD CONSTRAINT fk_customer_employee FOREIGN KEY (support_rep_id)
142 REFERENCES employee(employee_id)
143 ON DELETE SET NULL;
144
145ALTER TABLE customer
146 ADD CONSTRAINT fk_customer_contact FOREIGN KEY (contact_id)
147 REFERENCES contact(contact_id)
148 ON DELETE SET NULL;
149
150ALTER TABLE customer
151 ADD CONSTRAINT fk_customer_address FOREIGN KEY (address_info_id)
152 REFERENCES address_info(address_info_id)
153 ON DELETE SET NULL;
154
155ALTER TABLE employee
156 ADD CONSTRAINT fk_employee_manager FOREIGN KEY (reports_to)
157 REFERENCES employee(employee_id)
158 ON DELETE SET NULL;
159
160ALTER TABLE employee
161 ADD CONSTRAINT fk_employee_contact FOREIGN KEY (contact_id)
162 REFERENCES contact(contact_id)
163 ON DELETE SET NULL;
164
165ALTER TABLE employee
166 ADD CONSTRAINT fk_employee_address FOREIGN KEY (address_info_id)
167 REFERENCES address_info(address_info_id)
168 ON DELETE SET NULL;
169
170ALTER TABLE invoice
171 ADD CONSTRAINT fk_invoice_customer FOREIGN KEY (customer_id)
172 REFERENCES customer(customer_id)
173 ON DELETE CASCADE;
174
175ALTER TABLE invoice_line
176 ADD CONSTRAINT fk_invoice_line_invoice FOREIGN KEY (invoice_id)
177 REFERENCES invoice(invoice_id)
178 ON DELETE CASCADE;
179
180ALTER TABLE invoice_line
181 ADD CONSTRAINT fk_invoice_line_track FOREIGN KEY (track_id)
182 REFERENCES track(track_id)
183 ON DELETE CASCADE;
184
185ALTER TABLE track
186 ADD CONSTRAINT fk_track_album FOREIGN KEY (album_id)
187 REFERENCES album(album_id)
188 ON DELETE SET NULL;
189
190ALTER TABLE track
191 ADD CONSTRAINT fk_track_media FOREIGN KEY (media_type_id)
192 REFERENCES media_type(media_type_id)
193 ON DELETE RESTRICT;
194
195ALTER TABLE track
196 ADD CONSTRAINT fk_track_genre FOREIGN KEY (genre_id)
197 REFERENCES genre(genre_id)
198 ON DELETE SET NULL;
199
200ALTER TABLE playlist_track
201 ADD CONSTRAINT fk_playlist_track_playlist FOREIGN KEY (playlist_id)
202 REFERENCES playlist(playlist_id)
203 ON DELETE CASCADE;
204
205ALTER TABLE playlist_track
206 ADD CONSTRAINT fk_playlist_track_track FOREIGN KEY (track_id)
207 REFERENCES track(track_id)
208 ON DELETE CASCADE;
209
210ALTER TABLE price
211 ADD CONSTRAINT fk_price_track FOREIGN KEY (track_id)
212 REFERENCES track(track_id)
213 ON DELETE CASCADE;