《数据库重构》章节试读

当前位置:首页 > 网络编程 > 数据库 > 数据库重构章节试读

出版社:机械工业出版社发行室
出版日期:2007-1
ISBN:9787111202097
作者:安布勒
页数:217页

《数据库重构》的笔记-第6页 - 演进式数据库开发

为了使数据库重构能够进行,你需要将下列工作置于配置管理之下:
1. 创建数据库schema的数据库定义语言(DDL)脚本;
2. 数据加载/抽取/迁移的脚本;
3. 数据模型文件;
4. 对象/关系映射元数据;
5. 参考数据;
6. 存储过程和触发器定义;
7. 视图定义;
8. 参照完整性约束;
9. 其他数据库对象,如序列、索引等;
10. 测试数据;
11. 测试数据产生脚本;
12. 测试脚本;

《数据库重构》的笔记-第15页 - 数据库重构的分类

将数据库重构分为6类:
1. 结构重构:对一个或多个表或视图所作的变更;
2. 数据库质量重构:改进数据库中包含信息质量的一种变更;
3. 参照完整性重构:确保参照的行在另一个表中存在,并确保不再需要的行被相应的删除;
4. 架构重构:从总体上改变外部程序和数据库交互的方式;
5. 方法重构:改进方法(存储过程、存储函数或触发器)质量的一种变更;
6. 转换:不属于重构,变更数据库schema,改变了schema的语义;
数据库味道:
1. 多用途的列:如果一个列被用于多种用途,就有可能存在额外的代码来确保源数据以正确的方式使用,这些代码常常会检查一个列或更多其他列的值。举例:一个DataTime类型的列,如果用户是顾客的话,代表顾客的生日,如果用户是雇员,代表雇员的入职时间;
2. 多用途的表:一个表用于存放多种类型的实体。举例:使用Customer表存放用户和公司的信息;
3. 重复的数据:重复的数据对操作型(operational)数据库来说是一个严重问题,因为如果数据存放在多个地方,不一致的机会就增加了。举例:Customer表中存放了用户的手机号码Mobile,CustomerAddress表中也存放了用户的手机号码Mobile,如果这两个字段保持同步还好,如果不一致的话,在查询用户手机的时候,就不能判断到底哪个才是准确的。
4. 列太多的表:当一个表包含太多的列时,就说明这个表缺乏内聚---它试图存在来自几类实体的数据。譬如:Customer表中存在多种地址(发货地址、账单地址、季节性地址)或多种电话号码(家庭电话、工作电话、移动电话)等等,你就可能需要将这种结构进行标准化处理,加入Address和PhoneNumber表。
5. 行太多的表。大的表就说明有性能问题。如果一个表包含几百万行的数据,查询速度会很慢。你可能需要对表进行垂直分割,将一些列移到另一个表中,或者进行水平分割,将一些行移动另一个表中。这两种策略都会减小表的规模,可能改善性能。
6. “智能”列:譬如CustomerId是一串数字字符串,前4位代表客户的开户行,后面的数值代表客户ID;另一个列子是使用文本列来保存xml数据结构;
7. 害怕变化

《数据库重构》的笔记-第1页 - 演进式数据库开发

现代软件过程,也称为方法学,在本质上都是演进的,要求你以迭代和增量的方式工作。这些过程的例子包括:Rational统一过程(RUP)、极限编程(XP)、Scrum、动态系统开发方法(DSDM)、水晶方法系列、团队软件过程(TSP)、敏捷统一过程(AUP)、企业统一过程(EUP)、特征驱动开发(FDD)和快速应用开发(RAD),等等。


 数据库重构下载 更多精彩书评


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024