yt-metadata/schema.sql
2018-07-19 16:20:07 -04:00

177 lines
3.0 KiB
SQL

-- create database "yt-meta"
-- ;
create table uploader
(
id text not null
constraint uploader_id_pk
primary key,
url text not null,
name text not null
)
;
create unique index uploader_id_uindex
on uploader (id)
;
create table category
(
id serial not null
constraint category_pkey
primary key,
name text not null
)
;
create table tag
(
id serial not null
constraint tag_pkey
primary key,
name text not null
)
;
create unique index tag_id_uindex
on tag (id)
;
create table license
(
id serial not null
constraint license_pkey
primary key,
name text not null
)
;
create table video
(
id text not null
constraint video_pkey
primary key,
uploader_id text not null
constraint video_uploader_id_fk
references uploader,
creator text,
upload_date date,
license_id integer
constraint video_license_id_fk
references license,
title text,
full_title text,
alt_title text,
file_name text,
description text,
duration integer default 0,
age_limit integer default 0,
annotation text,
webpage_url text,
view_count integer,
like_count integer,
dislike_count integer,
display_id text
)
;
create unique index video_id_uindex
on video (id)
;
create table format
(
name text,
note text,
format_id text not null,
url text,
player_url text,
extension text,
audio_codec text,
video_codec text,
audio_bitrate integer,
total_bitrate integer,
file_size bigint,
quality integer,
width integer,
height integer,
fps integer,
video_id text not null
constraint format_video_id_fk
references video,
constraint format_format_id_video_id_pk
primary key (format_id, video_id)
)
;
create table thumbnail
(
thumbnail_id text not null,
url text,
video_id text not null
constraint thumbnail_video_id_fk
references video,
data bytea,
constraint thumbnail_thumbnail_id_video_id_pk
primary key (thumbnail_id, video_id)
)
;
create table video_in_category
(
video_id text not null
constraint video_in_category_video_id_fk
references video,
category_id integer not null
constraint video_in_category_category_id_fk
references category
)
;
create table video_has_tag
(
video_id text not null
constraint video_has_tag_video_id_fk
references video,
tag_id integer not null
constraint video_has_tag_tag_id_fk
references tag
)
;
create unique index license_id_uindex
on license (id)
;
create table subtitles
(
language text not null,
url text,
data text,
video_id text not null
constraint subtitles_video_id_fk
references video,
constraint subtitles_language_video_id_pk
primary key (language, video_id)
)
;
create table chapter
(
id serial not null
constraint chapter_pkey
primary key,
start_time integer not null,
end_time integer not null,
title text,
video_id text not null
constraint chapter_video_id_fk
references video
)
;
create unique index chapter_id_uindex
on chapter (id)
;