Geronimo!第 4 部分: 模式
2009-11-11 00:00:00 来源:WEB开发网在第二阶段,应专注于要设计的表以及表中要包含的字段。例如,需要一个带基本学生信息的学生表,一个带学生及其工作的详细时间信息的工作表,及其他包含爱好、兴趣的表,等等。与保持程序定义简明扼要相同,表也应该保持简短。信息分解是标准化过程的一部分,其设计目的是为了防止各原子信息单元出现重复,并且,也必需要有清晰的方式来构建查询,从而获取每一点信息。
弄清概念
在概念模式后出现的是逻辑模式 —— 用更多的细节定义概念,并显示实体之间的关系的数据模型。在第三阶段,用更具体的关系来修改这些将存在于不同表的实体间的概念。学生 ID 是一个关键字段,它用以连接学生个人信息与他或她从事过的工作、该学生从属的俱乐部及该学生上过的学校。
弄清这些概念也意味着将对应用于数据库的查询类型有所了解。绝大部分搜索都是在搜索关键字段吗?还是大量的搜索都不包含这些关键字段?设计数据库引擎是为了基于指定关键字段构建表中记录的索引。在许多例子中,这些索引是自动生成的,且极大地提升了查找的速度,即基于指定关键字段提供查找。
技巧 5:确保选定的关键字段真实地反映要做的查询。
因而,每个概念,即每张表,使用一个有逻辑的主键并使将要应用于该概念中的查询有意义是很重要的。工作表将包含学生曾经从事过的工作的简短信息,其目的不是成为一份可供搜索的公司清单。每个工作实体将以学生 ID 作为主键,这样在自动构建了学生简历时,数据库只需用最少的努力即可列出与每个学生相关的工作。
当不使用关键字段而构建记录清单时,计算机的处理速度会大大降低。Job 表用于汇集学生们曾经从事过的工作的清单,将这张表用于任何其他目的是无效的。
标准化
数据库标准化是一个重要课题,完全可以就其写出许多著作,而且已经有了许多相关著作。标准化消除了数据冗余,并对数据进行有效的组织。标准化过程试图确保所有数据库属性只存储一个值,任何有多个值的属性应该表示在不同的表中。例如,请看下列学生记录:
Student: John Smith, College GPA: 3.20
学生和他或她的 GPA 之间存在着一个一对一的关系。这个关系有时被称为 1NF,或第一范式,根据标准化规则,这就是您要实现的目标。每个学生都有且只有一个相关联的大学 GPA。
但相同的学生在其大学生涯中却有多份不同的工作。结果是,他可能具有这样一条学生记录:
Student: John Smith, Job: Smith Brothers, Campus Coffee Shop, Bob's Burgers
由于一个属性(job)代表了许多不同的值,标准化的规则要求将这些值转移到一个不同的表中,即 Job 表中,从而满足这些规则。随后可以通过学生 ID 对 Job 表建立索引,且检索每份从事过的工作将会以一种有序且高效的方式进行。
技巧 6:标准化规则很重要。了解并应用这些规则。
涵盖所有标准化规则或提供这些规则所依据的数学背景知识已超出了本文的范围。任何想要创建数据库系统的人们必需熟悉标准化的概念,只要说明这个就够了。
结束语
许多工具都能帮助您创建良好的数据库模式,就好像许多工具都能协助设计面向对象的系统一样。值得花些时间来探究这些工具和技术,并通过实践提高您的技术水平。现代的业务运营在数据库和 Web 站点之上,Geronimo 是将这两者整合到一起的一种强大工具。
- ››模式作用域:初级读本和最佳实践
- ››Geronimo V2.1.5 中的安全提升
- ››Geronimo 叛逆者: Apache Geronimo 的 JMS 实现:...
- ››Geronimo 叛逆者: Geronimo 与 Apache 许可带来的...
- ››Geronimo 叛逆者: 加入集群功能
- ››Geronimo 叛逆者: 摒弃 JBoss,使用 Apache Geron...
- ››Geronimo 叛逆者: 使用集成软件包:Codehaus 的 W...
- ››Geronimo 叛逆者: 直面 JSF
- ››部分 WM6.5 手机有望升级到 Windows Phone 7
- ››Geronimo!第 2 部分: 构建 Geronimo
- ››Geronimo!第 3 部分: 状态问题
- ››Geronimo!第 4 部分: 模式
更多精彩
赞助商链接