Вы можете создать это так:
|Topic| -1----*- |SubTopic| -1----*- |Comments|
(РЕДАКТИРОВАТЬ: звездочка, кажется, для курсива. Поэтому, пожалуйста, игнорируйте разницу в цвете)
т.е. отношение 1-ко-многим от темы к подтеме и еще 1-много от подтемы к комментариям
Вы можете иметь суррогатные первичные ключи для таблицы:
Create Table Topic (topic_id int auto_increment, primary key(topic_id),...)
аналогично subtopic_id для подтемы и внешний ключ к теме и т. Д. Для комментариев.
Получение всех комментариев для определенной темы может выглядеть следующим образом: (предполагается, что текстовый атрибут для таблицы комментариев (вероятно, тип данных TEXT?))
select comment.text from comments
join suptopic using(subtopic_id)
join topic using (topic_id)
where topic_id = 1;
( объединение аналогично внутреннее объединение , и ' с использованием ' применимо ТОЛЬКО в том случае, если «объединяющий столбец» имеет то же имя, иначе синтаксис отличается).