create table comment ( id serial primary key, creator_id int references user_ on update cascade on delete cascade not null, post_id int references post on update cascade on delete cascade not null, parent_id int references comment on update cascade on delete cascade, content text not null, published timestamp not null default now(), updated timestamp ); create table comment_like ( id serial primary key, user_id int references user_ on update cascade on delete cascade not null, comment_id int references comment on update cascade on delete cascade not null, post_id int references post on update cascade on delete cascade not null, score smallint not null, -- -1, or 1 for dislike, like, no row for no opinion published timestamp not null default now(), unique(comment_id, user_id) );