Topic: 数据库设计指南

  Print this page

1.数据库设计指南 Copy to clipboard
Posted by: HenryYu
Posted on: 2003-03-04 10:31

http://henryyu.nease.net/design/dbdesign.htm

2.Re:数据库设计指南 [Re: HenryYu] Copy to clipboard
Posted by: AsFlower520
Posted on: 2003-03-04 20:17

好象打不开

3.Re:数据库设计指南 [Re: HenryYu] Copy to clipboard
Posted by: 九佰
Posted on: 2003-03-05 09:56

数据库设计指南


目标
数据库设计是信息系统设计的重要组成部分,是系统模型的最原始的表示和反映。数据库设计的好坏直接关系到开发周期和系统性能。所以,数据库设计的目标是:

1, 数据对象命名合理

2, 数据存储合理,没有冗余,要符合数据库设计的3个范式。即:表中每一个值都是原子项,只显示一次;表中每行都必须可以被唯一地区分;表中不会有多余的已存在其他表中包含的非关键字信息。

3, 数据对象的关系清晰明了,符合业务逻辑。

4, 保证数据的完整性。

5, 数据库系统改换时,原有的系统设计要便于转移,减少代码重写。

6, 维护方便。

模式
好的设计模式有于系统开发、维护和代码的重用。数据库设计也是一样。为了便于数据库以后的维护和迁迂,一个好的设计模式是必要的。

在数据库设计中可以应用结构型的Bridge模式。系统设计和程序应用到代码,将抽象部分与它实现部分分离,从而可以使它们独立地变化。例如:我们现在开发是SQLServer数据库,以后要迁移到Oracle数据库,如何才能减少这种平移带来的数据库代码重写量而客户端不用重写呢?答案就是:

在数据库设计时候,加入一层抽象的接口,数据对象和程序都引用这层接口,而此层接口由数据库开发工程师来实现。以后切换到别的数据库,只要重新实现一次这层接口就可以了。

比如:Sqlserver中字符串类型是:varchar;Oracle中是varchar2;那么我们就可以在SqlServer中定义一种新的类型指向varchar,比如叫:varstring,那么数据对象就可以这样定义:

create table t_customer(

name varstring,

….

)

以后换到Oracle,上面的create table语句就不用修改,只要重新在Oracle中也定义一个varstring类型指向varchar2就可以了。

再如:convert类型转换函数,Sqlserver编写SQL语句经常用到,但是Oracle却没有相同函数。那么我们就可以定义一个ChangType函数接口交给SQL语句使用,数据库工程师分别在SQLServer和Oracle中实现它就可以了。

规范
1,数据对象命名规范

数据对象
命名规范

数据表
表名必须用一个或多个能表示其意思的英语单词来表示,每个单词首字母为大写,其他字母为小写。同时,表名前面要加前缀(tb_);例如:

tb_Customer



表字段
子段名必须用一个或多个能表示其意思的英语单词来表示,每个单词首字母为大写,其他字母为小写。主键字段必须为后面加上后缀(No)。例如:

CustomerNo-----客户编号

CustomerName-----客户名称

存储过程
存储过程名必须用一个或多个能表示其意思的英语单词来表示,每个单词首字母为大写,其他字母为小写。同时,前面要加前缀(sp_);例如:

sp_GetAllCustomer



函数
函数名必须用一个或多个能表示其意思的英语单词来表示,每个单词首字母为大写,其他字母为小写。同时,前面要加前缀(fc_);例如:

fu_ReturnCustomer



触发器
触发器名必须用一个或多个能表示其意思的英语单词来表示,每个单词首字母为大写,其他字母为小写。同时,前面要加前缀(tr_)




2,数据对象定义注释规范

每个数据对象包括表、存储过程、函数和字段都必须作相关的注释说明。并且如何数据对象是函数或存储过程,还必须说明作者,功能和创立时间(修改时间)等信息。

例如:

某个存储过程的注释如下:

------------------------------------------------------------------------------------

-- 用途:读取一个企业枚举项下的项目评估统计年报表

-- 用于效绩评价和保值增值考核

-- 变更历史

-- 时间 人员 描述

-- 2002-12-6 yangzy 创建

-- 2002-12-6 yzy 修改

------------------------------------------------------------------------------------

3,存储过程开发规范

现在系统的数据报表等相关业务需要用存储过程还实现,为了方便开发和维护,现在对存储过程的开发和需求作如下规定。

约定如下:

1, 存储过程必须要有两个输出参数,一个是存储过程操作是否成功标记,@Flag为整型(int),其值为0时成功,为1时为失败;另一个是存储过程的操作信息,@Msg为字符串型(varchar)。

2, 以上两个输出参数的位置必须在参数的最后两位,并且Flag参数排在Msg参数的前面。

需求规定如下:

1,相关说明

存储过程名称:


功能说明:


输入参数说明:


特别说明:



2,返回参数说明说明:

@Flag


@Msg



3,返回结果集说明

字段名称
相关说明













例子:

比如:现在需要按企业名称关键字来查找企业。

相关说明:

存储过程名称:
Sp_FindEnterpriseByKeyWord

功能说明:
现在需要按企业名称关键字来查找企业。

输入参数说明:
@keyword varchar(10)

特别说明:



返回结果说明:

@Flag
如:成功返回0;如果失败,请返回-1

@Msg
如:成功返回“有数据”;失败返回“无数据“


返回结果集说明:

字段名称
相关说明

no
企业编号

name
企业名称

entHeader
法人


程序:

create procedure Sp_FindEnterpriseByKeyWord(

@keyword varchar(10),

@flag int output,

@msg varchar(100) output

)

as

select no,name,entheader from tabenterprise where name like '%'+@keyword+'%'

if @@rowcount >0

begin

select @flag=0

select @msg='有数据'

end

else

begin

select @flag=-1

select @msg='没数据'

end



关于作者:

余浩东,擅长数据集成的软件工程师。
http://henryyu.nease.net/design/dbdesign.htm

4.Re:数据库设计指南 [Re: 九佰] Copy to clipboard
Posted by: 九佰
Posted on: 2003-03-05 09:57

转载文章,不推荐只粘贴网页地址(URL)
请转贴原文,并标明[转贴]和来源

谢谢!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923