Я бы предложил изменить это с точки зрения сущностей и, возможно, функциональности, а не классов. Причина в том, что базы данных не выполняют «классы» и «наследование», и приведение их таким образом может привести к неэффективному проектированию.
Звучит так: «... на верхнем уровне есть обсуждение». Означает, что это ваша верхняя таблица, предположительно имеющая идентификатор, заголовок и, возможно, некоторый текст, описывающий содержание сообщения.
Исходя из этого, ваша таблица сообщений является дочерней для обсуждений, с идентификатором обсуждения в качестве внешнего ключа, идентификатором сообщения, заголовком, текстом и т. Похоже, вы создаете форум, пока все хорошо.
Комментарии немного сложнее. Предположительно комментарии добавляются в сообщения? Это означает, что ваша таблица комментариев имеет внешний ключ к сообщениям, а также собственный комментарий и некоторый текст.
Но из вопроса я не могу понять, куда приходят файлы. Они прикреплены к дискуссии в целом? Сообщение? Или комментарий? Каким бы ни был ответ на этот вопрос, сделайте таблицу файлов дочерней по отношению к соответствующей таблице.
Итак, ваша иерархия не из классов, а из таблиц и выглядит следующим образом:
Discussions ----> Messages ---> Commnts