ASP.Net Web サイトのドキュメントに取り組んでいます。ウェブサイトは c-sharpcorner.com のように見え、ユーザーは記事、質問、仕事の機会、仕事の依頼を投稿できます。Web サイトの ER ダイアグラムを設計しているときに、すべてのユーザーの投稿の種類 (記事、クエスト、ホブなど) を 1 つのテーブルに入れ、それらを区別するために type 属性を作成する必要があるのか、それともそれぞれを分離する必要があるのか 混乱します。分離されたエンティティの投稿タイプ..何が良いですか? それは私にとっても同じですが、その問題を処理する最善の方法を教えてくれる専門家が必要です。ありがとう
2 に答える
ER 図が概念的なデータ モデルを表すことを意図している場合は、一般化/専門化を使用して、投稿がいくつかの異なる種類の投稿の 1 つであるという事実を示すことができます。
ダイアグラムが、データのリレーショナル モデルを使用して論理データ モデルを表すことを意図している場合、設計上の決定を下す必要があります。
このタグの下に 1 つの代替案が示されています: single-table-inheritance。
class-table-inheritanceというタグの下に、別の代替手段が示されています。
2 番目の選択肢を選択し、一般的な posts テーブルと各特殊テーブルの間に 1 対 1 の関係を強制したい場合は、このタグをチェックしてください: shared-primary-key .
3 つのタグすべてで、情報タブに詳細が表示されます。
ソリューション固有であるため、質問に対するすぐに使える回答はありません。
次の質問を自問してください。答えは自分で得られます。
テーブルに存在するヌル フィールドの数は? 投稿のみに使用される列がある場合、その列は他のすべての回答タイプでは null になります。データベースに多くの null 値がある場合、それは本当に良い設計ではありません。
その要件は時間の経過とともに変化し、カスタマイズする必要があるか、投稿の種類を増やす必要がある可能性はどのくらいありますか? 後でカスタマイズする必要が生じる可能性が高いほど、投稿の種類ごとに別の表を使用する方が適切です。
各タイプの相対的な投稿数は? 1 つのタイプの回答が 90% で、他のすべてのタイプの回答が 10% しかない場合は、テーブルを分けて、10% で作業するときにパフォーマンスの問題を回避することをお勧めします...
繰り返しますが、ここには正解も不正解もありません。具体的に何が最適かを考え出すには、特定のソリューションをさらに分析する必要があります。