论坛首页 综合技术论坛

我的数据表设计

浏览 3828 次
精华帖 (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最后登录时间经常要写外,还有其他字段需要经常写)

这样的设计在大数据量和并发多的情况下会比较明显。小数据量和很少并发情况下,这样会增加联表操作的成本。

 

说的不对还请大家纠正,目前我自己是按照这个思维方式来设计表的。主要是针对爬虫表。

当然这应该适用大多数情况。

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics