2017-02-19 15 views
0

カテゴリというテーブルがあります。カテゴリテーブルに関するいくつかのテーブルがあります。たとえば、カテゴリ、ポストカテゴリなどがあります。それぞれ、カテゴリテーブルに関連する独自の中間テーブルが必要です。 (例:ポストはカテゴリがたくさんある):Mysql複数の類似テーブル用の1つの中間テーブル

まず:(ユーザー、ポスト...のような)各テーブルにはcategoryに関連真ん中のテーブルを所有している

は今2つの異なるアプローチがあります表。

:(:などユーザポスト、これらの値を持つことができるタイプ)typeと呼ばれるカラムによって分離されたすべてのテーブルの1つの中間テーブルが、存在します。 (ここでは外部キーがないので、外部キーは仮想です)

どれが良いですか?何か案が?

答えて

1

より高いタイプのサブタイプではない別個のエンティティセット(UserおよびPostなど)がある場合は、まず別の関係テーブルを作成することをお勧めします。この理由は、各コンポーネント/役割が単一のドメインを持つことを必要とする論理的な関係の基本概念に密接に従うことです。

これにより、クエリと一貫性が大幅に簡素化されます。 ID値の異なるセットを同じ列に混在させると、一意の制約と外部キー制約を使用して整合性が保たれなくなり、異なるケースを処理するための条件付き論理が必要になります。

あなたが高いタイプのサブセットがある場合 - CustomerEmployeeのような、Personの両方のサブセットです、理想的にはスーパータイプのテーブルを作成し、スーパータイプに関係を作成することです。これは、データベースにデータが移入された後の設計フェーズではるかに簡単です。

関連する問題