10分钟掌握数据库建模
1010 分钟掌握数据库建模分钟掌握数据库建模数据库性能问题,主要来自 3 三个部分。1. 数据库配置2. SQL 查询语句的性能3. 建模的合理性客户端性能这里不谈,硬件的影响这里也不讨论,这里只谈数据库服务器本身的问题。首先是数据库的配置,这个比较好解决,有经验的 DBA 都能搞定,无非是连接数,CPU与内存优化等等。其次是 SQL 查询性能问题,比较要命,不可能每个开发人员都能写出高性能的查询语句,查询与索引息息相关,优化索引是一种手段,通过 SQL Review 来解决索引失效的SQL。数据也可能打印出查询性能差的 SQL,也是可控的。最后是建模,很多企业忽略这块。数据库建模非常重要,数据结构一旦确认,后面变更都会影响整个项目的进行。所以对建模人员要求相当的高。目前招聘到一个合格的建模人员真的很难。目前国内企业数据建模都是由开发人员完成。随心所欲建表,加字段,我就发现过一个表有 200 多个字段的情况,还有字段中存储以逗号分隔的数据。这样的情况非常普遍。另外有些企业让 DBA 负责建模,由于 DBA 不参与开发,不了解宏观需求,根据开发人员的描述建表,也有很多不合理之处。如何建立高性能,可伸缩的数据库呢?经过多年总结与摸索,我找到一个小技巧,请阅读下面文章,当你阅读完后,你就会感觉大彻大悟。移动电玩城 http:/www.44226.net如果你能掌握这个技巧,在未来开发或数据管理方面会得心应手。如何设计 User 表用户帐号表用户帐号或通行证系统设计,下面以我的数库为例讲解。我一般使用两个表 passport,profile 完成网站会员系统。首先说说 passport 表,你也要以使用 user 或 member 等等命名,这个表设计尽可能地简单,不要使用过多字段。仅保存登录所必须用到的字段,如user,password,nickname,email. 登录帐号和密码做复合索引。然后是 profile 表,这个表与 passport 是 1:1 关系,保存用户详细信息这样设计可以保证海量用户登录时的速度。+-+| user |-|id | |id | select * from category where path like '1/4%'+-+-+-+-+-+-+| id | name | description | status | parent_id | path |+-+-+-+-+-+-+| 4 | 广东省| 广东省 | Y | 1 | 1/4 | 5 | 深圳市| NULL | Y | 4 | 1/4/5 | 6 | 宝安区| NULL | Y | 5 | 1/4/5/6 | 7 | 龙华镇| NULL | Y | 6 | 1/4/5/6/7 |+-+-+-+-+-+-+4 rows in set (0.00 sec)文章表设计看具体情况,拆分表,可按“日”,“月”,“年”等等+-+| category |-|+|id | |user_id | +-+ | +-+| |1:n +-+ +-1:n-+| | user | | |-| |+|id | |id | |user_id | +-+ | +-+| | 2007,2008,2009 | | | 2007,2008,2009 | +-+ | +-+| |1:n +-+ +-1:n-+| | user | | |-| |+|id | |id |title | | | |title |content | | | |content |datetime | | 1:n |datetime |status | | | |status |user_id |o-+ | |user_id |news_id |o-+ +-+-+记录点击率,阅读次数,及评分表+-+ +-+| article | | article_rank |-| |-|id | |id |price | |product_attribute_key_id | o-+ |name |quantity | |product_attribute_value_id| o-+ +-+|. | +-+ | +-+|category_id | 1:n |product_attribute_value|+-+ | +-+- |id |name |+-+7.2. 实现属性组管理product attribute group+-+ +-+ +-+ +-+| category | | product_attribute_group | | product_attribute | |product_attribute_key |+-+ +-+ +-+ +-+|id | +- |id | |id |title | | |name | |product_attribute_key_id | o-+ |name |description | 1:1 |status | |product_attribute_value_id| o-+ +-+|status | | +-+ +-+ | +-+|parent_id | | 1:n |product_attribute_value|default_pag | o-+ | +-+-+ +- |id |name |+-+7.3. 可编辑属表product attribute group+-+ +-+ +-+ +-+| category | | attribute_group | | group_has_attribute | |attribute_key |+-+ +-+ +-+ +-+->|id | + |id | |id | |title | | |name | |attribute_key_id | o-+ | |name