Files
homework/APolikanov/2 - GreenPlum-Pet-project/1 DDL_CREATE_SCHEMA_AND_TABLE.sql
T
2025-12-07 17:01:30 +04:00

64 lines
2.0 KiB
SQL

-- 0. Создаём БД
CREATE DATABASE dwh_db
WITH OWNER = tester
TEMPLATE = template0
ENCODING = 'UTF8';
-- 1. Создём схемы
CREATE SCHEMA raw; -- сырые данные
CREATE SCHEMA core; -- или core. Тут хранилище: факты и измерения
CREATE SCHEMA dm; -- BI-витрины
-- 2. Создаём raw-таблицы:
CREATE TABLE raw.users (
id serial4 NOT NULL,
"name" varchar(100) NOT NULL,
age int4 NOT NULL,
email varchar(100) NOT NULL,
registration_date date NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (id)
)
DISTRIBUTED BY (id);
CREATE TABLE raw.courses (
id serial4 NOT NULL,
title varchar(100) NOT NULL,
category varchar(100) NOT NULL,
created_at date NOT NULL,
CONSTRAINT courses_pkey PRIMARY KEY (id)
)
DISTRIBUTED BY (id);
CREATE TABLE raw.lessons (
id serial4 NOT NULL,
course_id int4 NOT NULL,
title varchar(100) NOT NULL,
duration_min int4 NOT NULL,
CONSTRAINT lessons_pkey PRIMARY KEY (id)
)
DISTRIBUTED BY (id);
ALTER TABLE raw.lessons ADD CONSTRAINT lessons_course_id_fkey FOREIGN KEY (course_id) REFERENCES raw.courses(id);
CREATE TABLE raw.enrollments (
id serial4 NOT NULL,
user_id int4 NOT NULL,
course_id int4 NOT NULL,
enrolled_at date NOT NULL,
CONSTRAINT enrollments_pkey PRIMARY KEY (id)
)
DISTRIBUTED BY (id);
ALTER TABLE raw.enrollments ADD CONSTRAINT enrollments_course_id_fkey FOREIGN KEY (course_id) REFERENCES raw.courses(id);
ALTER TABLE raw.enrollments ADD CONSTRAINT enrollments_user_id_fkey FOREIGN KEY (user_id) REFERENCES raw.users(id);
CREATE TABLE raw.lesson_views (
id serial4 NOT NULL,
user_id int4 NOT NULL,
lesson_id int4 NOT NULL,
viewed_at timestamp NOT NULL,
CONSTRAINT lesson_views_pkey PRIMARY KEY (id)
)
DISTRIBUTED BY (id);
ALTER TABLE raw.lesson_views ADD CONSTRAINT lesson_views_lesson_id_fkey FOREIGN KEY (lesson_id) REFERENCES raw.lessons(id);
ALTER TABLE raw.lesson_views ADD CONSTRAINT lesson_views_user_id_fkey FOREIGN KEY (user_id) REFERENCES raw.users(id);