一般的收藏夹 数据表怎么设计?

假设这么设计 id(int),user_id(int),collected_id(int)

如果有十万个用户,每个用户收藏5个东西,那么有很多冗余数据啊
我的想法是将收藏的商品id 保存成字符串 逗号分隔;

1.我设计的表: user_id int, collected_id varchar(xx) -----1,'1,2,3,4'

阅读 7.9k
6 个回答

数据库范式是曾经空间很昂贵的情况下提出的,不一定非要按数据库范式来设计,冗余也是可以的

前者好。
后者实现起来麻烦,而且有些业务逻辑很难实现,比如你要看某个商品被收藏多少次。

建议看看sql反模式 非常清楚的分析了 你这种设计数据库的不足

照你的意思,用户表也设计二三十个字段,什么地址电话简介等等都放一个表??还是用逗号分隔放在一个字段里??

我觉得没必要

1.不容易查询商品有哪些用户收藏
2.如果收藏的商品数量很大需要分页处理也很繁琐

用逗号分割开来不方便统计数据,或者用户对收藏进行增删改查。
还是每一条数据单独一条。然后如果觉得数据太多统计起来耗费时间长,可以单独新建一个统计表,一个用户一条数据。每次增删对表数据进行+1 -1.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题