我们有一个数据库,它保存有关音乐的信息 - 我们有例如艺术家,乐队,歌曲,专辑等的表格。下一步是允许用户使用10分评分等级对这些内容进行评分。
记住所有用户评分的最佳方法是什么?当然我可以创建包含user_id,rating_value和rated_thing_element的简单表,但显然我无法将它加入到每个表中。
最好是创建一个名为ratings
的表和几个额外的表,例如ratings_albums,ratings_songs,ratings_bands等来绑定,或者每个表只有几个ratingsXXX
表。我上面提到的元素?
我不确定我应该走哪条路......或者它真的很重要。=?
答案 0 :(得分: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
}