我现在有这两个表 一个用户 一个存储文章
现在想开发收藏文章功能,一个用户可以收藏多篇文章,但是不用考虑每篇文章都是被谁收藏的,能知道每篇文章的收藏数量就行。 请问 应该如何建表? 本人新手 能给个像我这样的表格更好 谢谢
网上查了 说不推荐这样做是吗 ?在user表里加一个字段 存储收藏文章的id用,号隔开 这样做有什么不好吗(下图)
还有一种是建一个收藏表 这样做对吗? 应该怎么设置主键呢?应该怎关联表呢?(本人新手 不懂主键和关联)
假如在用户页面 想查看收藏文章的列表,查询语句应该怎么写呢?比如想查找用户2的收藏文章的列表信息
根据user_id = 2 想得到[{article_id:10,title:"文章1"},{article_id:11,title:"文章2"}]查询语句应该怎么写呢?
你需要了解join操作
至于主键,你可以用user_id和article_id一起作为复合主键,最简单的作法如下(假定你的用户id和文章id不变。。当然一般是不变的)...
这样要知道用户2的收藏列表,可以
`select article_table.id,article_table.title,article_table.author from
article_table inner join shoucang_table
on shoucang_table.user_id=2 and shoucang_table.article_id=article_table.id`
join
把收藏表和文章表连接起来,on
后面是条件。这里指定收藏表中用户id为2,且收藏表的文章id和文章表id对应。有疑惑欢迎在评论里提出...
其他:
语句可以优化下,因为join操作其实是两张表的叉乘,会将m条数据的收藏表和n条数据的文章表合成一个
m*n
的大表。因此可以选中收藏表中用户id为2的作为子表,假设有k条(k<<m),合成的表就是k*n条记录。当然可以建立表的索引来进一步优化,这些以后再研究先了解mysql的常用操作吧