私は現在、大規模なアプリケーション用のフォーラム コンポーネントを構築しており、データベース スキーマの特定の部分に対するさまざまなアプローチを検討しています。特に、トピックと投稿を 1 つのテーブルで表すことを検討しています。トピックと投稿は実質的に同じと考えていますが、これにより将来的に柔軟性が失われる可能性があるため、少し不安を感じています.
特定のフォーラムのトピックがクエリされると、タイトルと最初の投稿、およびユーザー情報の一部 (基本的には名前とアバター) が表示されます。このアプリケーションには、ビューと返信を除くトピックと投稿の両方で使用されるさまざまな属性があります。おそらく、title、および forum_id(forum_id は、トピック リレーションの forum_id 属性を変更するのではなく、トピックが別のフォーラムに変更された場合、潜在的に数百のレコードが影響を受ける必要があることを意味するためです)。
テーブルは、私が以下に持っているもののように見えます:
TOPIC POST
topic_id poster_id
forum_id topic_id
poster_id content
title upvote
views dnvote
replies closed
post_id deleted
last_edited
last_editor
parent_id
content
post_id
テーブルの継承を使用してこのように行うと、トピックで投稿を生成するには、TOPIC、POST、USER、および TOPIC_TYPE を介した 4 つのテーブルの結合が必要になります。
一方、単一テーブル アプローチを採用することに決めた場合、topic_type が通常の投稿の場合、views、replys、title、および forum_id 属性を null のままにしておく必要がありますか? (topic_type は、表示されるトピックのタイプに適したアイコンを参照し、統計などに使用されます。)