51 lines
1.2 KiB
SQL
51 lines
1.2 KiB
SQL
-- Измерение пользователей
|
|
CREATE TABLE core.dim_user (
|
|
user_id INT PRIMARY KEY,
|
|
name TEXT,
|
|
age INT,
|
|
email TEXT,
|
|
registration_date DATE
|
|
)
|
|
DISTRIBUTED BY (user_id);
|
|
|
|
-- Измерение курсов
|
|
CREATE TABLE core.dim_course (
|
|
course_id INT PRIMARY KEY,
|
|
title TEXT,
|
|
category TEXT
|
|
)
|
|
DISTRIBUTED BY (course_id);
|
|
|
|
-- Измерение уроков
|
|
CREATE TABLE core.dim_lesson (
|
|
lesson_id INT PRIMARY KEY,
|
|
title TEXT,
|
|
duration_min INT,
|
|
course_id INT REFERENCES core.dim_course(course_id)
|
|
)
|
|
DISTRIBUTED BY (lesson_id);
|
|
|
|
-- Опционально: измерение времени
|
|
CREATE TABLE core.dim_date (
|
|
date DATE PRIMARY KEY,
|
|
year INT,
|
|
month INT,
|
|
day INT,
|
|
weekday TEXT
|
|
)
|
|
DISTRIBUTED BY (date);
|
|
|
|
CREATE TABLE core.fact_lesson_views (
|
|
user_id INT REFERENCES core.dim_user(user_id),
|
|
lesson_id INT REFERENCES core.dim_lesson(lesson_id),
|
|
course_id INT REFERENCES core.dim_course(course_id),
|
|
viewed_at TIMESTAMP
|
|
)
|
|
DISTRIBUTED BY (user_id);
|
|
|
|
CREATE TABLE core.enrollments (
|
|
user_id INT REFERENCES core.dim_user(user_id),
|
|
course_id INT REFERENCES core.dim_course(course_id),
|
|
enrolled_at TIMESTAMP
|
|
)
|
|
DISTRIBUTED BY (user_id); |