最も拡張可能な解決策は、1つの「ベース」テーブル(「いいね」、タグ、コメントに接続)を持ち、そこから他のすべてのテーブルを「継承」することです。新しい種類のエンティティを追加するには、新しい「継承された」テーブルを追加するだけです。その後、like / tag/comment機構全体に自動的にプラグインされます。
このための実体関連用語は「カテゴリ」です(ERwinメソッドガイド> 、セクション:「サブタイプの関係」)。カテゴリ記号は次のとおりです。
ユーザーが複数のエンティティを高く評価できると仮定すると、同じタグを複数のエンティティに使用できますが、コメントはエンティティ固有であるため、モデルは次のようになります。
ところで、「ERカテゴリ」を実装するには、おおよそ3つの方法があります。
- 1つのテーブルにすべてのタイプ。
- 個別のテーブルにあるすべての具象タイプ。
- 個別のテーブル内のすべての具象型と抽象型。
非常に厳しいパフォーマンス要件がない限り、3番目のアプローチがおそらく最善です(つまり、物理テーブルは上の図のエンティティと1:1で一致します)。