ABFrame项目设计与开发规范(4)

2019-01-10 11:48

ABFrame系统设计开发规范

正确处理:

求职人员表: 求职人员编号 求职人员姓名 C001 C002 张三 李四 求职人员联系表:

求职人员编号 序号 联系电话 C001 C001 C002 C002 01 02 01 02 63179975 63179976 64516408 64516409

2) 范式二:要求每一列均函数性地依赖于主关键字。 违反该范式的例子: 物业分布表: 分布点编号 所在地址 所在城市 H001 H002 H003 蒲汇塘路 上海 漕宝路 汉中路 上海 上海 主要服务表: 服务编码 服务收费 P01 P02 P03 70.99 21.00 502.54 任务描述 树木修剪 上油 熔炉 日期 1997/11/15 1997/12/01 1997/12/03 服务记录表:

分布点编号 服务编码 所在地址 H002 H002 H003 P02 P03 P01 漕宝路 漕宝路 汉中路 问题:服务记录表是以“分布点编号”和“服务编码”作为主关键字。“所在地址”和“任务描述”两列不完全函数性地依赖于主关键字。显然服务期间地址通常是不变的,不管在什么地方执行任务,特定任务的描述应该是一样的。

正确处理: 主要服务表:

服务编码 服务收费 任务描述 P01 P02 P03 70.99 21.00 502.54 熔炉 树木修剪 上油 服务记录表:

分布点编号 服务编码 日期 H002 P02 1997/11/15

共61页 第16页

ABFrame系统设计开发规范

H002 H003

P03 P01 1997/12/01 1997/12/03 3) 范式三:表中记录符合第二范式且不存在传递依赖,当表中含有一定其他列的非

主列时,存在传递依赖。

违反该范式的例子: 学生考试成绩表 学号 课程 S001 CIS091 S003 CIS091 考试日期 成绩 累计平均 81 77 90 1997/10/17 84 1997/10/17 93 S002 MGT100 1997/10/17 72 问题:“学号”,“课程”和“考试日期”为主关键字。“累计平均”列代表该学生所有课程成绩的平均,这列传递依赖于“学号”列,因此不符合第三范式。 正确处理: 学生个人信息表 学号 姓名 累计平均 S001 张三 91 S002 李四 80 S003 王五 78 学生考试成绩表 学号 课程 S001 CIS091 S003 CIS091

4) 特殊情况可不用设计范式 ? 存储计算值到数据库中

存储计算值:通常,一个设计良好的关系数据库不存储任何计算数据如总和,平均值,最大值和最小值。这些数据通常在运行时利用基本数据来计算。然而,有些场合把计算值储存起来可能更简单,更快,更明智。 比如: 旅客表: 旅客编号 姓名 Z001 ... L004 ... W008 张三 李四 王五 飞行里程

共61页 第17页

考试日期 成绩 1997/10/17 84 1997/10/17 93 S002 MGT100 1997/10/17 72 飞行情况表: 旅客编号 飞行次数 飞行日期 Z001 ... L004 11 1800 1998/01/02 7832 1998/02/03 7743 ABFrame系统设计开发规范

... W008 27 1998/04/03 743 问题:“飞行情况表”会很快增加,渐渐达到几万行。旅客若打电话询问自己飞行有多少公里,希望立刻得到回答,然而查询“飞行情况表”并把所有单个里程加起来可能要花费几秒的时间。这时就需要把总和信息存储起来,以供快速查询。 正确处理: 旅客编号 姓名 旅客里程 Z001 ... L004 ... W008 张三 73873 李四 92923 王五 8727 为保持总公里数的相对实时性,可以每晚运行一个加总程序更新总和,这样做可至少带来两个好处:

其一:总公里数可快速获取。

其二:更好地平衡负载。繁重的加总工作放在晚上处理。 为了更快更新,从而得到更准确的数据,需要使用类似触发器的方法来得到最新的数据。

? 将历史信息分割到其他表中 查找历史:假设维护一个信用卡支付系统,顾客通常打电话来了解自己最近的收支情况。偶尔他们想知道几个月前的收支情况。在这个应用中最主要的表如下: 业务交易表: 交易编码 客户编码 使用日期 金额 T0001 ... T1012 C2021 ... C3000 1997/11/1 414.88 ... 1997/11/9 65.90 问题:该表会很快增长到几百万行,查找一个客户的所有记录需要几秒钟。事实上顾客和服务人员对这反应时间都有抱怨。 改进方法一:由于客户一般只查询最近月份的交易信息,可以另加两个同样的缓冲表,每月底,进行一次数据移动即可(把最近月份的数据删除)。

改进方法二:可利用其“分区”的概念,通过复制机制,将一个数据库复制到另外一个数据库中。

6.4. SQL语言开发规范 6.4.1.SQL命令的类型

一些数据库开发人员和参考书将SQL(Structured Query Language)语句分为三种类型: 1. DDL───Data Definition Language 数据定义语言。

这些命令用来定义数据的结构,比如 创建、修改或者删除数据库对象(例如CREATE TABLE、ALTER TABLE、DROP TABLE、CREATE INDEX、DROP INDEX等)。

共61页 第18页

ABFrame系统设计开发规范

2. DCL───Data Control Language 数据控制语言。

这些命令用来定义数据库用户的权限(例如GRANT、REVOKE、COMMIT、ROLLBACK、LOCK等)。

3. DML───Data Manipulation Language 数据操作语言。

这些命令用来检索与更新数据库记录(例如INSERT、UPDATE、DELETE、SELECT等)。

虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统;并且在不同的数据库系统中使用的命令也有差别。

6.4.2.SQL命令的格式

以下定义了书写SQL语句所应遵循的准则:

? SQL语句中的关键字采用大写字母书写。 ? SQL语句中的字段名采用大写字母书写。 ? SQL语句中的函数名采用大写字母书写。

? SQL语句每一句从第一列开始书写,各从句部分以两格为单位嵌套缩进。 ? 当SQL语句中存在多个表时加入简短的别名。 ? 尽量使用SQL标准语法,避免使用方言

? 尽量少使用或不使用存储过程,减少移植的工作量。

1. 例一:

SELECT DEPNO, MANAGER, DEPTNAME FROM DEPARTMENTS

WHERE DEPTBANE = ?Sales?;

2. 例二:

SELECT A.DEPTNAME, B.LNAME

FROM DEPARTMENTS A, EMPLOYEES B WHERE A.MANAGER = B.EMPNO;

6.4.3.SQL命令的语法

一条SQL语句的语法是构造该语句的方法,以下给出常用的SQL语句的语法定义: 1. INSERT:

INSERT IINTO {TABLE|VIEW} [(COLUMN_LIST)] VALUES (value_list)| selectstatement;

注:INSERT文中虽然column_list是可选项,但考虑到数据库字段有可能增减,固定不变的插入值对应的字段会不一致,所以column_list必须在程序中明记。

例:

INSERT INTO DEPARTMENTS (DEPTNO, DEPTNAME, MANAGER) VALUES (?0?, ?Headquarters?, ?1001?);

2. UPDATE

共61页 第19页

ABFrame系统设计开发规范

UPDATE {table|view} SET (newvalue_list) [wherestatement] 例:

UPDATE DEPARTMENTS SET MANAGER = ?1007?

WHERE DEPTNAME = ?Sales?;

3. DELETE DELETE

FROM table

[WHERE whereexpr] 例: DELETE

FROM DEPARTMENTS

WHERE DEPARTMENTS = ?Sales?;

4. SELECT

简单的SELECT:

SELECT [ALL|DISTINCT] column_list FROM table_list [WHERE whereexpr] [ORDER BY ordkey_list] [GROUP BY group_list] [HAVING having_list]

复杂的SELECT: simpleselect UNION [ALL] simpleselect 例:

SELECT *

FROM DEPARTMENTS;

ORDER BY DEPTNAME DESC;

SELECT A.DEPTNAME, B.LNAME

FROM DEPARTMENTS A, EMPLOYEES B WHERE A.MANAGER = B.EMPNO;

SELECT B.DEPTNAME, count(B.EMPNO) AS EMPTNOCOUNT FROM EMPLOYEES A, DEPARTMENTS B

共61页 第20页


ABFrame项目设计与开发规范(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高中数学:椭圆知识点归纳总结及经典例题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: