最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

数据库设计规范范例

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-3 10:25:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
数据库设计越来越成为现代软件设计必须的一部分内容。而我们从很多书本中得到的更多的是一些知识点。如何设计一个强大高效而又规范的数据库呢?如果工作中领导要求你制定一个数据库设计制度,你会怎么来写这个制度或流程?要想设计一个大的软件或平台,首先必须要有一个统一的设计规范。本文是一个简单的《数据库设计规范》范例,你可以做简单修改或直接拿来就用到工作中去。本文对广大刚接触数据库设计或刚工作不久的相关人员有更多指导作用。
范例共分以下几个部分:目的、适用范围、规范说明、标准词汇、命名规范、编码规范、数据字典书写格式 、E-R图的绘制模式、数据库后期维护的要求。具体范例如下:
1 目的
为了使软件开发过程有章可循,保证软件质量,加强开发管理。本规范为一套编写高效可靠的 数据库设计命名规范。它以安全可靠的软件工程原则为基础,使代码易于理解、维护和增强,提高生产效率。同时,将带来更大的一致性,使软件开发团队的效率明显提高。
2 适用范围
本适用于数据库模型的设计和ER图的创建过程,以及SQL语句,存储过程,触发器等开发,适用于相关的数据库开发管理人员、研发人员等。
3 规范说明
本规范与相关的适用范围的人员讨论最终确定,后期尽量保证少做变更,但也会根据实际应用的效果做进一步的优化与完善。
4 标准词汇
为使相关的设计文档可读性强,消除歧义,请使用标准词汇。
1. 表(Table)
2. 严格区分“表”和“库”,禁止“代码库”等不规范用法,而应使用“代码表”等词汇。例如:应命名为‘门诊信息表’,不能命名为‘门诊信息库’。
3. 字段(Field)
字段为行和列的交。严格区分“列(column)”和“字段”的用法。
4. 代码和编码
代码与编码是有区别的,编码作动词使用,由用户自己确定编码规则,例如:应称‘邮政编码’,不能称‘邮政代码’。代码是在业务中已存在的名词,不需要再确定编码规则,例如:应称‘股票代码’,不能称‘股票编码’。
5. 序号
避免使用“编号”等用法,如果是系统自动产生的值,都应称‘序号’。例如:‘流水序号’。如果是用户自已编的号,一律称‘编号’,不能称‘编码’。
6. 数据类型(Data Type)
指data type时,一律用“数据类型”,不要简称“类型”等。
7. 行(Row)
行和记录(record)含义相同,在文档中应尽量使用“行”。
8. 行数、列数
避免使用“记录数”、“字段数”等用法。
5 命名规范
5.1 基本原则
1. 所有数据库的实体命名都以字母、下划线或数字组成。
2. 有的数据库,有索引名长度18个字节限制,但考虑标准产品跨数据库的一致性,因此索引、主键、外键名统一遵循18个字节长度限制。
3. 使用可以准确说明数据表/数据列/函数/存储过程/触发器/序列/包/包体/作业的英文描述符。例如,采用类似 FIRST_NAME、PRODUCT_TYPE_ID这样的名字。虽然象 x1,y1 或 fn 这样的名字很简短,输入起来容易,但是我们难以知道它们代表什么、结果是什么含义,因而使编码难以理解、维护和改进。
4. 数据对象命名中,使用“_”连接符。如:PRODUCT_TYPE_ID、pub_user。
5. 采用该领域的术语。如果用户称他们的“客户” (clients) 为“顾客” (customers),那么就采用术语 Customer 来命名这个数据字段,而不用 Client。
6. 尽量少用缩写,但如果一定要使用,就要谨慎地使用。这意味着应该保留一个标准缩写的列表,明智地从中选取,并且在使用时保持一致。例如,想对单词“number”采用缩写,那么可从 nbr,no 或者 num 中选取一个,说明一下采用了哪一个(具体是哪个倒无所谓),并且只使用这一种形式。
7. 避免使用长名字(最好不超过 15 个字母)。虽然 PhysicalOrVirtualProductOrService 看起来似乎是个不错的类名,但是这个名字太长了,应该考虑重新给它起个短一点的名字。
8. 设计初首先对项目进行分析,设计子系统(或子模块的前缀),用于表、视图等名称的前缀。如:
aut_ 权限管理
rep_ 报表管理
pub_ 公共模块
5.2 具体数据对象命名规范
数据对象
最大长度
命名规范
视图
30
子系统前缀_标题_v如果是缩写则全部大写,否则用小写pub_user_v
30
子系统前缀_标题如果是缩写则全部大写,否则用小写pub_user用户表rep_daily_bill账单日报表

表列
30
1.列名必须用一个或多个能表示其意思的英语单词来表示其中列名中不可包括“_X_”字符串。2.用户自定义定段N_X_00  (number)C_X_01  (char)
D_X_02  (date)
主键
18
PK_表名
外键
18
FK_表名_列名+被参照 (referenced) 表名(缩写)
索引
18
ID_表名_列名(缩写)
唯一索引
18
UI_表名_列名(缩写)
check约束
18
CK_表名_列名(缩写)
序列
30
SEQ_表名_列名(缩写)
存储过程
30
PRO_子系统前缀_标题存储过程名必须用一个或多个能表示其意思的英语单词来表示,每个单词首字母为大写,其他字母为小写。同时,前面要加前缀(PRO_);例如:PRO_pub_GetAllCustomer
函数
30
_子系统前缀_标题函数名必须用一个或多个能表示其意思的英语单词来表示,每个单词首字母为大写,其他字母为小写。同时,前面要加前缀(fun _);例如:FUN_pub_ReturnCustomer
30
PCK_标题
包体
30
PCK_BODY_标题
触发器
30
TRIG_规则1_规则2_表名触发器名将在后边有进一步的说明
JOB
30
JOB_名称
5.3 触发器(Trigger)命名规范
1. Insert触发器命名规则
BEFORE型:’TRIG_BE_IN_’ + 表名
AFTER 型:’TRIG_AF_IN_’ + 表名
2. Update触发器命名规则
BEFORE型:’TRIG_BE_UP_’ + 表名
AFTER 型:’TRIG_AF_UP_’ + 表名
3. Delete触发器命名规则
BEFORE型:’TRIG_BF_DE_’ + 表名
AFTER 型:’TRIG_AF_DE_’ + 表名
6 编码规范
6.1 代码缩进约定
列之间存在上下关系时,必须缩进4个空格(一个TAB)的间距;
一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进;
where 子句书写时,换行时将and、or等写在换行首列,语句另起一行时,以保留字或者连接符开始,连接符右对齐;
例:
select /*+ ORDERED USE_NL(i p) */
u.name pnd_index_owner,
idx_name pnd_index_name,
ixp_name pnd_partition_name,
pnd_rowid,
pnd_timestamp
from dr$pending, dr$index i, dr$index_partition p, sys.user$ u
where idx_owner# = u.user#
and idx_id = ixp_idx_id
and pnd_pid = ixp_id
and pnd_pid != 0
and pnd_cid = idx_id
6.2 函数(存储过程)头头注释
编写函数文本–如视图、函数、触发器、存储过程以及其他数据对象时,必须为每个函数增加适当注释。该注释以多行注释为主,主要结构如下:
/************************************************************
*name : –函数名
*function : –函数功能
*input : –输入参数
*output : –输出参数
*author : –作者
*CreatedDate : –创建时间
*UpdateDate : –函数更改信息(包括作者、时间、更改内容等)–(更改记录多行,以最新记录在最前面)(基本成型时写更改信息)
************************************************************/
6.3 函数(存储过程)体内编写规范
当在函数体内有条件判断语法、循环判断语法、异常判断语法时,必须被BEGIN和END语法包含,例如:
IF <条件表达式>
BEGIN
<命令行或程序块>
END
ELSIF <条件表达式>
BEGIN
<命令行或程序块>
END
7 数据字典书写格式
例:
表名:sms_CP_info
字段名称
数据类型
空值
缺省值
规则
说明
CP_ID
Number(4,0)
N
CP标识
CP_NAME
Varchar2(200)
N
CP名称
CP_CODE
Varchar2(40)
N
企业编码
8 E-R图的绘制模式
例:
一个部门可能有0或多个雇员
一个雇员必须且仅属于一个部门
[size=0.8em]E-R图



9 数据库后期维护的要求
1. 当数据库表或程序需要改动的时候,请务必做好文档的相关修改工作;
2. 当数据库表或程序需要改动的时候,请通知数据库管理人员完善数据库文档;
3. 数据变更要做好备份工作;
4. 要充分发挥好测试数据库的作用。


楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-26 01:28

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表