64 lines
2.0 KiB
SQL
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); |