私は3つのデータ型を持っています-a)共通の列b)階層-そしてデータベースを設計する方法を知りたいです。
トップレベルで、ディスカッションがあるとしましょう。その中には、DiscussionMessages、Files、Commentsがあります。それらはすべて共通のフィールド(UserID、CreateDate、Text)を持っていますが、一意の列(FileName、ContentTypeなど)も持っています。コメントは任意のタイプ(他のコメントも含む)に関連付けることができ、ファイルと同じです。
ここでいくつかの質問を調べた後、クラステーブル継承が必要だと思います。1つのベーステーブル(DiscussionParts)に共通の要素を格納し、次に各データ型に固有のテーブルを格納します。
DiscussionParts:PartID、DiscussionID、ParentID、PartType(M、F、C)、UserID、Text、CreateDate
メッセージ:MessageID、PartID、Title
ファイル:FileID、PartID、FileName、ContentType
コメント:CommentID、PartID、ソース
ParentID列は、階層を追跡するためのものです。DiscussionIDは、ユーザーが1つの簡単なクエリですべてのディスカッションでテキストを検索できるようにするためのものです。
これは、階層を持つクラステーブル継承の推奨設計ですか?