diff --git a/skonev/postgresql/create_tables.sql b/skonev/postgresql/create_tables.sql new file mode 100644 index 0000000..cbd18fb --- /dev/null +++ b/skonev/postgresql/create_tables.sql @@ -0,0 +1,45 @@ +BEGIN; + +CREATE TABLE SKONEV.users( + id INT PRIMARY KEY, + name VARCHAR(100), + age INT, + email VARCHAR(255) UNIQUE, + registration_date DATE NOT NULL + ); + +CREATE TABLE SKONEV.courses( + id INT PRIMARY KEY, + title TEXT NOT NULL, + category VARCHAR(255) CHECK (category IN ('data', 'programming', 'business')), + created_at DATE NOT NULL + ); + +CREATE TABLE SKONEV.lessons( + id INT PRIMARY KEY, + course_id INT NOT NULL, + FOREIGN KEY (course_id) REFERENCES courses(id), + title TEXT NOT NULL, + duration_min INT NOT NULL + ); + + +CREATE TABLE SKONEV.enrollments( + id INT PRIMARY KEY, + user_id INT NOT NULL, + FOREIGN KEY (user_id) REFERENCES users(id), + course_id INT NOT NULL, + FOREIGN KEY (course_id) REFERENCES courses(id), + enrolled_at DATE NOT NULL + ); + +CREATE TABLE SKONEV.lesson_views( + id INT PRIMARY KEY, + user_id INT NOT NULL, + FOREIGN KEY (user_id) REFERENCES users(id), + lesson_id INT NOT NULL, + FOREIGN KEY (lesson_id) REFERENCES lessons(id), + viewed_at TIMESTAMP NOT NULL + ); + +COMMIT; \ No newline at end of file diff --git a/skonev/postgresql/insert_data.sql b/skonev/postgresql/insert_data.sql new file mode 100644 index 0000000..2e99bc4 --- /dev/null +++ b/skonev/postgresql/insert_data.sql @@ -0,0 +1,42 @@ +BEGIN; + +INSERT INTO SKONEV.users (id, name, age, email, registration_date) +VALUES +(1, 'Alice', 25, 'alice@mail.com', '2023-01-10'), +(2, 'Bob', 30, 'bob@gmail.com', '2023-02-05'), +(3, 'Charlie', 22, 'charlie@mail.com', '2023-02-20'), +(4, 'Diana', 28, 'diana@mail.com', '2023-03-01'), +(5, 'Ethan', 35, 'ethan@gmail.com', '2023-03-10'); + +INSERT INTO SKONEV.courses (id, title, category, created_at) +VALUES +(1, 'SQL для начинающих', 'data', '2023-01-01'), +(2, 'Python для анализа данных', 'programming', '2023-01-15'), +(3, 'BI с нуля', 'business', '2023-03-01'); + +INSERT INTO SKONEV.lessons (id, course_id, title, duration_min) +VALUES +(1, 1, 'SELECT и FROM', 10), +(2, 1, 'JOIN', 15), +(3, 2, 'Pandas', 20), +(4, 3, 'Основы BI', 12), +(5, 3, 'Метрики и дашборды', 18); + +INSERT INTO SKONEV.enrollments (id, user_id, course_id, enrolled_at) +VALUES +(1, 1, 1, '2023-01-15'), +(2, 1, 2, '2023-02-01'), +(3, 2, 1, '2023-01-20'), +(4, 3, 2, '2023-03-05'), +(5, 4, 3, '2023-04-01'); + +INSERT INTO SKONEV.lesson_views (id, user_id, lesson_id, viewed_at) +VALUES +(1, 1, 1, '2023-01-16 10:00:00'), +(2, 1, 2, '2023-01-16 10:15:00'), +(3, 2, 1, '2023-01-21 09:00:00'), +(4, 3, 3, '2023-03-06 12:00:00'), +(5, 4, 4, '2023-04-02 10:00:00'), +(6, 4, 5, '2023-04-03 10:00:00'); + +COMMIT; \ No newline at end of file