私が開発した 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テーブルを作成しないようにすることができます。それぞれに多対多のマッピング テーブルを用意することもできますが、思いもよらなかった解決策が他にもあるかもしれません。
ベストは何ですか?データベースの設計についてはよくわかりません。最も柔軟で使いやすいのはどれですか?