我有一个包含100000个产品的产品表,还有一个包含5000条记录的用户表。假设一个用户可以给我们关于这个产品的任何组合的反馈。所以假设他选择比较产品13100200400500等等。(他可以再给我们发送一些其他产品的反馈)
所以这是我的问题,我只想知道一个专业的数据库设计师会如何看待这种产品和用户数量巨大的情况。一种存储这种评级的方法是使用一个字符串,例如:1 5 3 4 100 5….x y意味着他将y stars赋给id为x的产品。例如,我可以在php脚本中加载这个vote_u字符串并提取其详细信息。
因此,评级表可能具有以下结构:
id,用户id,投票字符串
另一种方法是将此反馈存储在此结构中:
投票表:id,用户id,日期
投票详细信息表:投票ID,产品ID,投票==>(投票ID,产品ID)为主键,投票ID为外键。
(或者可以将这两个表压缩为一个表,如id、user_id、product_id、vote[id、user_id、product_id]作为主键)
所以我想在第二个设计中查询会更容易,但是每次查询都会占用更多的空间和时间,而且在删除产品的情况下,使用第二个设计会更好。你会怎么做?
任何一种想法都会被认可。

最佳答案

您几乎不想在数据库区域中连接字符串。只是让查询变得非常痛苦——而且,也不是数据库处理数据的真正方式。
认为你想要你的第二种方法。你需要考虑主键之类的问题{即同一个人可以为一个产品投两次票吗?}

关于sql - 以字符串存储数组(数据库专家的问题),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1146931/

10-11 03:21
查看更多