45 lines
994 B
PL/PgSQL
45 lines
994 B
PL/PgSQL
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; |