浏览 3829 次
锁定老帖子 主题:我的数据表设计
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-23
工作学习中碰到一些老表,有些不同想法。 举例说明: 用户登录系统: 传统: id, uId, uPs, uName, uDesc, uMail, uLogo, regTime, isBlocked, lastInTime一般一个表就可以。 对于并发用户多的话,那么就点问题。 每次用户登录时,都会对该表进行读操作。登录成功后,都会更新用户的lastInTime(最后登录时间),也就是写操作,中间用户还可能修改其uDesc, uMail, uLogo(用户简要描述,用户mail,用户的logo图片来个性化自己). 这是读写的差异,实际上按照我们功能定义,对表的操作也可以分为经常读,很少读,经常写,很少写。 那么如何分? 我记得sql语句使用时大家都很清楚select * 和select需要的字段这两者的差别。那么在表格设计时也可以这么做。每个表只包括需要的信息。 比如 table1: id, uId, uPs, uName, isBlocked(经常读,难得写(因为block很少用,如果用的很频繁,那就另外建表)) table2: uid, uDesc, uMail , uLogo, regTime(偶尔写,偶尔读) table3: uid, lastInTime...(经常写,除了lastInTime最后登录时间经常要写外,还有其他字段需要经常写) 这样的设计在大数据量和并发多的情况下会比较明显。小数据量和很少并发情况下,这样会增加联表操作的成本。
说的不对还请大家纠正,目前我自己是按照这个思维方式来设计表的。主要是针对爬虫表。 当然这应该适用大多数情况。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |