Специфика дизайна будет зависеть от ваших требований, от того, чего вы хотите достичь, и от того, насколько большой будет ваша база данных.
Подход с 1 столом:
Вы можете использовать одну таблицу в том случае, если вы предоставляете / разрешаете только один ответ на вопрос (как часто задаваемые вопросы), где у вас будет только id,question,answer
полей и вопросы не будут добавлены в БД, пока не будет дан ответ, или обновить строку, когда ответ будет доступен.
2 таблицы:
Как только может быть более одного ответа / комментария на вопрос. Я мог бы выбрать модель, немного отличающуюся от модели @ Spredzy, поскольку я просто включил бы все, например, «электронные письма»: message_id, in_reply_to, timestamp, text
для простоты. Эта простота не позволит вам помечать конкретные (отвечает на комментарии VS, если только один ответ и ответ in_reply_to не станут комментариями, как на SO). Вопросы с in_reply_to IS NULL
.
3 / более настольный подход:
Если вы действительно хотите добиться производительности, имея длину FIXED-ROW в основной таблице, и вам не нужно отображать отрывок из вопросов и ответов, а только знать цифры. Вы должны отделить текст, любые вложения и т. Д. Или просто потому, что вы хотите избегать самостоятельных объединений, как предлагает @orangepips: " Наконец, самостоятельные объединения - это отстой и отличный способ снизить производительность. ") и есть отдельные таблицы для всего.