-- 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);