Skip to content

Commit c3d917e

Browse files
committed
add: 2.4 init
1 parent d32e7fb commit c3d917e

File tree

1 file changed

+205
-0
lines changed

1 file changed

+205
-0
lines changed
Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
/*Создаем схему*/
2+
DROP SCHEMA IF EXISTS stepik CASCADE;
3+
CREATE SCHEMA IF NOT EXISTS stepik;
4+
5+
---AUTHOR
6+
DROP TABLE IF EXISTS stepik.author CASCADE;
7+
CREATE TABLE IF NOT EXISTS stepik.author (
8+
author_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
9+
name_author TEXT
10+
);
11+
12+
INSERT INTO stepik.author(name_author)
13+
VALUES ('Булгаков М.А.'),
14+
('Достоевский Ф.М.'),
15+
('Есенин С.А.'),
16+
('Пастернак Б.Л.'),
17+
('Лермонтов М.Ю.');
18+
19+
---GENRE
20+
DROP TABLE IF EXISTS stepik.genre CASCADE;
21+
CREATE TABLE IF NOT EXISTS stepik.genre (
22+
genre_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
23+
name_genre TEXT
24+
);
25+
26+
INSERT INTO stepik.genre(name_genre)
27+
VALUES ('Роман'),
28+
('Поэзия'),
29+
('Приключения');
30+
31+
---BOOK
32+
DROP TABLE IF EXISTS stepik.book CASCADE;
33+
CREATE TABLE IF NOT EXISTS stepik.book (
34+
book_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
35+
title TEXT,
36+
author_id BIGINT NOT NULL,
37+
genre_id BIGINT,
38+
price DECIMAL(8, 2),
39+
amount INT,
40+
CONSTRAINT "FK_book_author"
41+
FOREIGN KEY (author_id) REFERENCES stepik.author (author_id) ON DELETE CASCADE,
42+
CONSTRAINT "FK_book_genre"
43+
FOREIGN KEY (genre_id) REFERENCES stepik.genre (genre_id) ON DELETE SET NULL
44+
);
45+
46+
INSERT INTO stepik.book(title, author_id, genre_id, price, amount)
47+
VALUES ('Мастер и Маргарита', 1, 1, 670.99, 3),
48+
('Белая гвардия', 1, 1, 540.50, 5),
49+
('Идиот', 2, 1, 460.00, 10),
50+
('Братья Карамазовы', 2, 1, 799.01, 2),
51+
('Игрок', 2, 1, 480.50, 10),
52+
('Стихотворения и поэмы', 3, 2, 650.00, 15),
53+
('Черный человек', 3, 2, 570.20, 6),
54+
('Лирика', 4, 2, 518.99, 2);
55+
56+
---CITY
57+
DROP TABLE IF EXISTS stepik.city CASCADE;
58+
CREATE TABLE IF NOT EXISTS stepik.city (
59+
city_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
60+
name_city TEXT,
61+
days_delivery INT
62+
);
63+
64+
INSERT INTO stepik.city(name_city, days_delivery)
65+
VALUES ('Москва', 5),
66+
('Санкт-Петербург', 3),
67+
('Владивосток', 12);
68+
69+
---CLIENT
70+
CREATE EXTENSION IF NOT EXISTS citext;
71+
DROP DOMAIN IF EXISTS email;
72+
CREATE DOMAIN email AS citext
73+
CHECK ( value ~
74+
'^[a-zA-Z0-9.!#$%&''*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$' );
75+
76+
DROP TABLE IF EXISTS stepik.client CASCADE;
77+
CREATE TABLE IF NOT EXISTS stepik.client
78+
(
79+
client_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
80+
name_client TEXT,
81+
city_id BIGINT,
82+
email email,
83+
CONSTRAINT "FK_client_city"
84+
FOREIGN KEY (city_id) REFERENCES stepik.city (city_id)
85+
);
86+
87+
INSERT INTO stepik.client(name_client, city_id, email)
88+
VALUES ('Баранов Павел', 3, 'baranov@test'),
89+
('Абрамова Катя', 1, 'abramova@test'),
90+
('Семенонов Иван', 2, 'semenov@test'),
91+
('Яковлева Галина', 1, 'yakovleva@test');
92+
93+
---BUY
94+
DROP TABLE IF EXISTS stepik.buy CASCADE;
95+
CREATE TABLE IF NOT EXISTS stepik.buy
96+
(
97+
buy_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
98+
buy_description TEXT,
99+
client_id BIGINT DEFAULT (NULL),
100+
CONSTRAINT "FK_buy_client"
101+
FOREIGN KEY (client_id) REFERENCES stepik.client (client_id)
102+
);
103+
104+
INSERT INTO stepik.buy (buy_description, client_id)
105+
VALUES ('Доставка только вечером', 1),
106+
(NULL, 3),
107+
('Упаковать каждую книгу по отдельности', 2),
108+
(NULL, 1);
109+
110+
111+
---BUY_BOOK
112+
DROP TABLE IF EXISTS stepik.buy_book CASCADE;
113+
CREATE TABLE IF NOT EXISTS stepik.buy_book (
114+
buy_book_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
115+
buy_id BIGINT,
116+
book_id BIGINT,
117+
amount INT,
118+
CONSTRAINT "FK_buy_book_buy"
119+
FOREIGN KEY (buy_id) REFERENCES stepik.buy (buy_id),
120+
CONSTRAINT "FK_buy_book_book"
121+
FOREIGN KEY (book_id) REFERENCES stepik.book (book_id)
122+
);
123+
124+
INSERT INTO stepik.buy_book(buy_id, book_id, amount)
125+
VALUES (1, 1, 1),
126+
(1, 7, 2),
127+
(2, 8, 2),
128+
(3, 3, 2),
129+
(3, 2, 1),
130+
(3, 1, 1),
131+
(4, 5, 1);
132+
133+
134+
---STEP
135+
DROP TABLE IF EXISTS stepik.step CASCADE;
136+
CREATE TABLE IF NOT EXISTS stepik.step (
137+
step_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
138+
name_step TEXT
139+
);
140+
141+
INSERT INTO stepik.step(name_step)
142+
VALUES ('Оплата'),
143+
('Упаковка'),
144+
('Транспортировка'),
145+
('Доставка');
146+
147+
---BUY_STEP
148+
DROP TABLE IF EXISTS stepik.buy_step CASCADE;
149+
CREATE TABLE IF NOT EXISTS stepik.buy_step (
150+
buy_step_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
151+
buy_id INT,
152+
step_id INT,
153+
date_step_beg DATE,
154+
date_step_end DATE,
155+
CONSTRAINT "FK_buy_step_buy"
156+
FOREIGN KEY (buy_id) REFERENCES stepik.buy (buy_id),
157+
CONSTRAINT "FK_buy_step_step"
158+
FOREIGN KEY (step_id) REFERENCES stepik.step (step_id)
159+
);
160+
161+
INSERT INTO stepik.buy_step(buy_id, step_id, date_step_beg, date_step_end)
162+
VALUES (1, 1, '2020-02-20', '2020-02-20'),
163+
(1, 2, '2020-02-20', '2020-02-21'),
164+
(1, 3, '2020-02-22', '2020-03-07'),
165+
(1, 4, '2020-03-08', '2020-03-08'),
166+
(2, 1, '2020-02-28', '2020-02-28'),
167+
(2, 2, '2020-02-29', '2020-03-01'),
168+
(2, 3, '2020-03-02', NULL),
169+
(2, 4, NULL, NULL),
170+
(3, 1, '2020-03-05', '2020-03-05'),
171+
(3, 2, '2020-03-05', '2020-03-06'),
172+
(3, 3, '2020-03-06', '2020-03-10'),
173+
(3, 4, '2020-03-11', NULL),
174+
(4, 1, '2020-03-20', NULL),
175+
(4, 2, NULL, NULL),
176+
(4, 3, NULL, NULL),
177+
(4, 4, NULL, NULL);
178+
179+
---BUY_ARCHIVE
180+
DROP TABLE IF EXISTS stepik.buy_archive CASCADE;
181+
CREATE TABLE IF NOT EXISTS stepik.buy_archive (
182+
buy_archive_id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
183+
buy_id INT,
184+
client_id INT,
185+
book_id INT,
186+
date_payment DATE,
187+
price DECIMAL,
188+
amount INT,
189+
CONSTRAINT "FK_buy_archive_client"
190+
FOREIGN KEY (client_id) REFERENCES stepik.client (client_id),
191+
CONSTRAINT "FK_buy_archive_book"
192+
FOREIGN KEY (book_id) REFERENCES stepik.book (book_id)
193+
);
194+
195+
INSERT INTO stepik.buy_archive(buy_id, client_id, book_id, date_payment, price, amount)
196+
VALUES (2, 1, 1, '2019-02-21', 670.60, 2),
197+
(2, 1, 3, '2019-02-21', 450.90, 1),
198+
(1, 2, 2, '2019-02-10', 520.30, 2),
199+
(1, 2, 4, '2019-02-10', 780.90, 3),
200+
(1, 2, 3, '2019-02-10', 450.90, 1),
201+
(3, 4, 4, '2019-03-05', 780.90, 4),
202+
(3, 4, 5, '2019-03-05', 480.90, 2),
203+
(4, 1, 6, '2019-03-12', 650.00, 1),
204+
(5, 2, 1, '2020-03-18', 670.60, 2),
205+
(5, 2, 4, '2020-03-18', 780.90, 1);

0 commit comments

Comments
 (0)