テーブルの関連付けの問題

WBOY
WBOYオリジナル
2016-06-23 14:20:431005ブラウズ

以下に、アルバム テーブル、製品テーブル、写真テーブルの 3 つのテーブルがあります。
要件: アルバムには商品と写真を同時に保存できます。
この3人の関係をどう表現したらいいでしょうか?

分析したところ、アルバムと商品の間には多対多の関係があり、アルバムと写真の間にも多対多の関係があることがわかりました。
2 つの中間テーブルを設計する必要がありますか?


ディスカッションへの返信 (解決策)

アルバム テーブルと製品テーブルの間に、製品 ID とアルバム ID (カンマ区切り) を保存する別のテーブルを作成できます

写真とアルバムについても同様です

上で述べたように、プロダクト ID アルバム ID は、相互に関連付けられるように、すべてのテーブルに存在することが最善です。

アルバム テーブルと製品テーブルの間に、製品 ID とアルバム ID (カンマ区切り) を保存する別のテーブルを作成できます

写真とアルバムにも同じことが当てはまります
必要に応じて、この方法も考えました同じアルバムをクエリするには 商品と写真を別々にクエリする必要がありますか?

プロダクトIDとピクチャーIDをカンマでつないで保存しておけば、別途テーブルを作成する必要はありません
遷移テーブルを作成する目的は高速アクセスのためです 対象のIDを文字列でつなぐと、インデックスは使用できません

プロダクトIDとピクチャIDをカンマでつないで保存すれば、別途テーブルを作成する必要はありません
遷移テーブルを作成する目的は、高速アクセスのためです。ターゲット ID を文字列にすると、インデックスを使用できなくなります
私の当初の目的は、3 番目の遷移テーブルを作成することでした。この 3 つの関係だけで、この遷移表をどのように設計するかです。

トピック ID 製品 ID 画像 ID

通常の状況では、製品と写真は 1 対 1 に対応します
したがって、テーブルの疎さはそれほど大きくなりません

トピック ID 製品 ID 画像 ID

通常の状況では、製品と写真は 1 対 1 に対応します
したがって、テーブルのまばらさはそれほど大きくなりません

私のシステムでは、製品と写真は 2 つのエンティティから取得されます。 2 つのテーブルを分離します。この写真は商品写真ではありません。

次に、それらを分離します
トピック ID 製品 ID
トピック ID 画像 ID

これらは 2 つのエンティティであるのに、なぜそれらを強制的に結合したいのですか? 2 つの中間テーブルを設計する必要がありますか?

次に、それらを分離します
トピック ID 製品 ID
トピック ID 画像 ID

これらは 2 つのエンティティであるのに、なぜそれらを強制的に結合したいのですか? 2 つの中間テーブルを設計する必要がありますか?

これら 2 つのエンティティはアルバムに保存できるためです。両方のエンティティが同じアルバムに表示される場合。クエリ方法

select * from A left join A_B on A.id=A_B.aid left join A_C on A.id=A_C.aid

select * from A left join A_B on A.id=A_B.aid left join A.id=A_C.aid 上の A_C

ここで、アルバム テーブルと 2 つの中間テーブル A_B および A_C の間の結合クエリについて話しています。ただし、グラフィックステーブルと製品テーブルの情報など、特定の情報を確認したい場合は、中間テーブルには 2 つのテーブルの主キーのみが格納されます。引き続きグラフ表の左結合と積表の左結合を続けますか?

もちろんです!
ただし、必要なのは INNER JOIN だけです

もちろんです!
ただし、必要なのは INNER JOIN だけです
OK、モデレーター、ご協力ありがとうございました!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。