数据库设计-一对多的关系怎么维护
开发中经常遇到一对多的情况,比如博客系统:一个用户可以写多个博文。
那么用户和博文的关系怎么维护,换句话说怎么设计表,你大概会想到以下三种方案:
1.
共用户(user)和博文(post)两个表,用户表中有博文字段(posts),存储的是该用户拥有的每个博文的id(同下均代表主键),中间用逗号(',')分隔。
2.
共用户(user)和博文(post)两个表,博文表中有用户字段,存储的是用户(作者)的id。
3.
共用户(user)、博文(post)和写作关系(user_post)三个表,关系表中任意用户的任一篇博文是一条记录,所以每个用户有几篇博文,对应标准就有几个记录。
第一种方案路子有点野,但是我在一个一期三千万的大项目中也看到过这种设计,不知道是出于特殊考虑还是...,这个设计的缺点很明显,如查询某个博文属于哪个作者是常用的查询,此时只能将所有用户的的所有博文查出来,从中分析和匹配该文章id,费时费力,