私が開発した Web サイトは、stackoverflow のような構造になっています。データベースにPosts
テーブルとPostImages
テーブルがあります。テーブルは次のPostImages
ようになります。
PostImageId PK
PostId FK
Uri
MimeType
そのため、投稿には多くの画像が関連付けられている可能性があります。
私は現在、サイトの他の場所に画像を含める必要があるという要件があります。Users
プロファイルに画像をCategories
含めることができ、画像を含めることができ、画像をAddresses
含めることができる必要があります。
Images
データベースにはテーブルを1 つだけ持つのが最善のようです。これをどのようにモデル化すればよいですか?次のような単一のテーブルを作成できます。
ImageId PK
PostId FK
CategoryId FK
AddressId FK
UserId FK
Uri
MimeType
1 つのimages
テーブルを作成してから、オブジェクトの種類ごとに追加のテーブルを作成できます。
PostImageId PK FK
PostId FK
CategoryImageId PK FK
CategoryId FK
(各アイテムの PK は、テーブルからのイメージへの FK でもありImages
ます)
他にもいくつかの戦略があります。たとえば、___Images
タイプごとにテーブルを作成し、共有Images
テーブルを作成しないようにすることができます。それぞれに多対多のマッピング テーブルを用意することもできますが、思いもよらなかった解決策が他にもあるかもしれません。
ベストは何ですか?データベースの設計についてはよくわかりません。最も柔軟で使いやすいのはどれですか?