这是一个关于如何处理这个问题的一般性问题。
我有一个音频播放器。没有关于歌曲的数据存储在数据库中。我想用数据库计算每首歌的喜好。我的问题是如何组织这个?
1。 如果我事先在数据库中列出我的所有歌曲并添加一个类似的列,那么我会在哪里跟踪用户的IP地址? (不确定是否有比使用IP地址更好的方法?)所以我阻止了多次相同的用户投票。
2。 每当用户喜欢一首歌时,我都会在数据库中存储{歌曲标题,如计数,用户ip}(可能还有别的东西)。但是后来我会得到多行同一首歌用不同的用户ip地址,所以在这种情况下如何跟踪每首歌的喜欢?
答案 0 :(得分:0)
没有关于歌曲的数据存储在数据库中
如果您想存储有关每首歌曲的数据,您应该为歌曲添加一个表格。
不确定是否有比使用IP地址更好的方法?
如果您有一个包含用户ID的表,请使用该表,因为同一用户可以从不同的IP登录,不同的用户可以从同一IP登录。
至于数据库结构,你提出的建议可能是正确的答案。一旦你为歌曲设置了一个表格,就有一个专门用于喜欢的专栏,你可以轻松找回它。
如果你想知道哪个用户喜欢哪首歌(以及何时),那么你需要像你在第二点中建议的那样制作一个新表。这称为联结表,用于许多:许多关系(m:m)。没有唯一的ID。它连接两个表,其中包含许多键(用户:歌曲),并存储两者之间的任何关系。
- 每当用户喜欢一首歌时,我会在数据库中存储{歌曲标题,如计数,用户ip}(可能还有别的东西)。但后来我最终得到了多行不同用户ip地址的同一首歌,所以在这种情况下如何跟踪每首歌的喜欢?
醇>
即使你最后有同一首歌的很多行,它们都是独特的,因为每个人都有不同的用户喜欢它(反之亦然,你可以获得特定用户喜欢的所有歌曲)。您不需要在此处存储like-count,因为您只需计算数据库中的记录数。 {歌名,用户ID,日期戳}没问题。