0

音楽に関する情報を保持するデータベースがあります。たとえば、アーティスト、バンド、曲、アルバムなどのテーブルがあります。次のステップは、ユーザーが 10 段階評価スケールを使用してそれらを評価できるようにすることです。

すべてのユーザーの評価を記憶する最善の方法は何ですか? 確かに、user_id、rating_value、rated_thing_element を含む単純なテーブルを作成できますが、明らかにそれをすべてのテーブルに結合することはできません。

たとえば、1 つのテーブルを作成し、ratingsratings_albums、ratings_songs、rating_bands などの追加のテーブルをいくつか作成してバインドするか、ratingsXXX上記の要素ごとにいくつかのテーブルを作成する方がよいでしょうか?

どちらに行けばいいのかわかりません...それとも本当に問題なのでしょうか?=?

4

1 に答える 1

0

私の個人的な好みは、正規化されたテーブルと厳密な外国の参照を使用することです。したがって、artist_ratings、album_ratings、およびsong_ratingsテーブルを使用します。クエリを簡単にするために、最も頻繁に結合されるテーブルを表すビューを作成します。

外部キーなしで評価テーブルを使用できますが(ユーザー参照を除く)、参照整合性の強制は失われます。このテーブルは

ratings {
  id integer,
  userId integer, -- FK to users table
  referenceId integer, -- This is not a FK, but will contain the ID of the artist/album/song
  type char, -- a = album, A = artist, s = song
  rating int
}
于 2013-01-22T01:11:17.293 に答える