在多个元素上竖起/向下竖起

时间:2013-12-29 17:16:53

标签: mysql database postgresql database-design many-to-many

我正在构建一个音乐应用程序。在我的数据库中,我有一个“艺术家”表,与“专辑”表相关,与“跟踪”表相关。

我的应用程序的每个用户都可以“喜欢”(竖起大拇指)或“不喜欢”(竖起大拇指)艺术家/专辑/曲目。因此,我必须使用参数“vote”在用户和艺术家/专辑/曲目之间创建多对多关系,可以设置为1 / -1。

我的问题是:创建三个“喜欢/不喜欢”表(user_artist_like,user_album_like,user_track_like)或只有一个表“user_like”有三列(artist_id,album_id, track_id)?知道我经常需要获取用户的所有喜欢。

2 个答案:

答案 0 :(得分:2)

第一个选项更好,因为将数据放在一个表中意味着同一行中的数据点是相关的,这是不正确的。多个表允许您更轻松地管理数据,而不会被行混淆。例如,如何为单个表构造INSERT INTO语句?它无法有效利用空间。

答案 1 :(得分:0)

以防其他人阅读此内容,您可以设置一个包含type列的表来处理此问题。

{
  user_id: 7,
  object_id: 12,
  type: 'album',
  is_liked: 1
}

{
  user_id: 7,
  object_id: 8,
  type: 'track',
  is_liked: 0 //this as 0 means disliked
}