0

我们有一个数据库,用于保存有关音乐的信息——例如,我们有艺术家、乐队、歌曲、专辑等的表格。下一步是允许用户使用 10 分评分标准对这些内容进行评分。

记住所有用户评分的最佳方式是什么?当然,我可以创建简单的表,其中包含 user_id、rating_value 和rated_thing_element,但显然我不能将它加入到每个表中。

那么是不是更好,例如,创建一个名为的表ratings和几个额外的表,如 rating_albums、ratings_songs、ratings_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 回答