Хотите ли вы иметь комментарии к продуктам, пользователям, отзывам и т. Д.?
Или найти продукты, пользователей, отзывы и т. Д., На которые ссылается комментарий?
Для первых у меня были бы таблицы, чтобы связать вещи с их комментариями:
create table join_products_comments (
product_id int (unique, i.e., one thread of comments per product),
comment_thread_id int
);
create table join_users_comments (
user_id int (unique, i.e., one thread of comments per user),
comment_thread_id int
);
Где comment_thread - это просто ссылка на поток, на который ссылается каждый комментарий:
create table comment_threads (
thread_id int (PK),
thread_name nvarchar2(256),
created datetime
);
create table comments (
comment_id int (PK),
comment_thread_id int (FK),
parent_comment_id int (FK),
user_id int (FK), -- person who posted the comment
comment text,
created datetime
);
Таким образом, каждая комментируемая сущность в системе будет иметь таблицу соединения и один комментарий, просто ожидая, когда нетерпеливые пользователи добавят комментарии. Или вместо этого вы можете просто ссылаться на корневой комментарий и обходиться без этой косвенной ссылки.