《数据库设计文档模板.doc》由会员分享,可在线阅读,更多相关《数据库设计文档模板.doc(24页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、DR-RD-020(V1.1)数据库设计说明书数据库设计说明书(内部资料 请勿外传)编编 写:写:日日 期:期:检检 查:查:日日 期:期:审审 核:核:日日 期:期:批批 准:准:日日 期:期:* 版权所有版权所有 不得复制不得复制文档编号文档编号2011-6-14版本版本A1密级密级商密 A项目名称项目名称时代集团产品跟踪平台*中心开发部中心开发部项目来源项目来源时代集团时代集团产品跟踪平台时代集团产品跟踪平台 .1数据库设计说明书数据库设计说明书 .11引言引言.21.1编写目的.21.2术语表.21.3参考资料.32数据库环境说明数据库环境说明.33数据库的命名规则数据库的命名规则.3
2、4逻辑设计逻辑设计.35物理设计物理设计.45.1表汇总.45.2表X:XXX 表.45.3视图的设计.65.4存储过程、函数及触发器的设计.66安全性设计安全性设计.66.1防止用户直接操作数据库的方法.66.2用户帐号密码的加密方法.76.3角色与权限.77优化优化.78数据库管理与维护说明数据库管理与维护说明.71引言引言1.1编写目的编写目的本文档是时代集团产品跟踪平台 概要设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段 名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循SQL 数据库设计和开发 规范 。本文档的读者对象是需求人员、系统设计人员、开发人员、
3、测试人员。1.2术语表术语表序号术语或缩略语说明性定义1ESIDEnterStorageId 入库编号2ProIdProductId 产品编号3PMIDProductManagerId 产品管理员编号1.3参考资料参考资料资料名称作者文件编号、版本资料存放地点2数据库环境说明数据库环境说明数据库 实例数据库系统数据库部 署环境数据库设 计工具数据库存放 位置说明3数据库的命名规则数据库的命名规则数据库名称:时代集团的英文名称time-group表名:英文(表的用途)+下划线+英文字段名:相关属性的英文名4逻辑设计逻辑设计提示:数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ER
4、D) 。 如果采用面向对象方法(OOAD) ,这里实体相当于类(class) 。inhr_partner_spinhr_partner_cppartner_sett_relscoop_relssettle_order_relspartner_sett_ordercoop_settl_ordersp_coop_relscp_coop_rels伙 伙 伙 伙伙 伙 伙 伙 伙伙 伙 伙 伙 伙伙 伙 伙 1伙 伙 伙 伙伙 伙 伙伙 伙 伙 伙伙 伙 伙 伙伙 伙 伙 25物理设计物理设计提示: (1)主要是设计表结构。一般地,实体对应于表,实体的属性对应于表的列,实体之 间的关系成为表的约束。逻
5、辑设计中的实体大部分可以转换成物理设计中的表,但是它们 并不一定是一一对应的。 (2)对表结构进行规范化处理(第三范式) 。5.1表汇总表汇总表名功能说明Enter_storage产品入库(新产品的登记、修改、查询)Exit_storage产品出库(登记产品出库信息)Seller_info销售商信息维护表(对销售商信息的添加、修改和查询)Product_info产品信息表(对新产品的发布,修改,查询等维护)Repair_info维修表(对已出售产品的维修进行登记,修改)L管理员表(包含五种身份,销售人员,库存管理人员,售后服务人员,产品信息管理人员,系统管理员)5.2表:表的索引: 索引是否建
6、立要根据具体的业务需求来确定。 允许为空:不填的表示为“是” 。 唯一:不填的表示为“是” 。 表的记录数和增长量:根据具体的业务需求确定。增长量应确定单位时间如果量大可 以按每天,如果不大可以按每月。 表字段的区别度:主要是考虑到将来在此字段上建立索引类型选择时作为参考,当字段 值唯一时可以不考虑,当字段值不唯一时,估算一个区别度,近似即 可。例如:如果一个表的 NAME 字段有共 2000 个值,其中有 1999 个 不同值,1999/2000=0.99 越接近 1 区别度越高,反之区别度越低。 表的并发:根据具体的业务需求预测表的并发。 1表名Enter_storage数据库用户库存管理
7、人员主键ESID 入库产品编号其他排序字段Product,date,num,storageManagerId索引字段序号字段名称数据类型(精度范围)允许为空 Y/N唯一Y/N区别度默认值约束条件/说明1ESIDintNY2ProductVarchar(50)NN3dateSmallDateTimeNN4numVarchar(50)NN5storageManagerIdVarchar(50)NYMysql 脚本CREATE TABLE dbo.Enter_storage(ESID int IDENTITY(1,1) NOT NULL,product varchar(50) NOT NULL,da
8、te smalldatetime NOT NULL,num varchar(6) NOT NULL,storageManagerId nvarchar(50) NOT NULL,CONSTRAINT PK_addStorage PRIMARY KEY CLUSTERED (ESID ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARYGOSET ANSI_P
9、ADDING OFFGO记录数增长量表的并发补充说明2.2.表名Exit_storage数据库用户库存管理人员主键ExitStorageId 出库产品编号其他排序字段Product,date,num,storageManagerId索引字段序号字段名称数据类型(精度范围)允许为空 Y/N唯一Y/N区别度默认值约束条件/说明1ExitStorageIdintNY2ProductVarchar(50)NN3dateSmallDateTimeNN4numVarchar(50)NN5storageManagerIdVarchar(50)NYMysql 脚本CREATE TABLE dbo.Exit_s
10、torage( ExitStorageId int IDENTITY(1,1) NOT NULL, product varchar(50) NOT NULL, date smalldatetime NOT NULL, num varchar(6) NOT NULL,CONSTRAINT PK_subStorage PRIMARY KEY CLUSTERED ( ExitStorageId ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, AL
11、LOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY GO SET ANSI_PADDING OFF GO /* Object: Table dbo.Enter_storage Script Date: 01/17/2011 16:00:59 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO记录数增长量表的并发补充说明3.3.表名Seller_info数据库用户销售商管理员主键name 其他排序字段telephone,address,product, stoc
12、kNum,stockDate,stockPrice索引字段序号字段名称数据类型(精度范围)允许为空 Y/N唯一Y/N区别度默认值约束条件/说明1nameVarchar(50)NY2telephoneVarchar(50)NN3addressSmallDateTimeNN4productVarchar(50)NN5stockNumVarchar(50)NN6stockDateSmallDateTimeNN7stockPriceVarchar(50)NNMysql 脚本CREATE TABLE dbo.Seller_info( name varchar(50) NOT NULL, telephon
13、e varchar(20) NOT NULL, address varchar(50) NOT NULL, product varchar(50) NOT NULL, stockNum varchar(6) NOT NULL, stockDate smalldatetime NOT NULL, stockPrice varchar(10) NOT NULL,CONSTRAINT PK_maketer_Info PRIMARY KEY CLUSTERED ( name ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE
14、_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY GO SET ANSI_PADDING OFF GO /* Object: Table dbo.Repair_info Script Date: 12/16/2010 09:59:13 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO记录数增长量表的并发补充说明4.4. 表名Product_info数据库用户产品信息管理人员主键
15、proId其他排序字段name,price,proDate, storage索引字段序号字段名称数据类型(精度范围)允许为空 Y/N唯一Y/N区别度默认值约束条件/说明1proIdintNY2nameVarchar(50)NN3priceVarchar(50)NN4proDateSmallDateTime NN5storageVarchar(50)NYMysql 脚本CREATE TABLE dbo.Product_info( proId int IDENTITY(1,1) NOT NULL, name varchar(50) NOT NULL, price varchar(6) NOT NU
16、LL, proDate smalldatetime NOT NULL, storage varchar(4) NOT NULL,CONSTRAINT PK_product_Info PRIMARY KEY CLUSTERED ( proId ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY GO SET ANSI_PADDING OFF GO /*
17、Object: Table dbo.Login Script Date: 01/17/2011 16:00:59 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO记录数增长量表的并发补充说明5.5.表名Repair_info数据库用户售后服务人员主键repairId 产品维修编号其他排序字段repairName,repairtel,product, customer,date,customertel索引字段序号字段名称数据类型(精度范围)允许为空 Y/N唯一Y/N区别度默认值约束条件/说明1re
18、pairIdintNY2repairNameVarchar(50)NN3repairtelSmallDateTimeNN4productVarchar(50)NN5customerVarchar(50)NNdateSmallDateTimeNNcustomertelVarchar(50)NNMysql 脚本CREATE TABLE dbo.Repair_info( repairId int IDENTITY(1,1) NOT NULL, repairName nchar(10) NULL, repairtel nchar(10) NULL, product varchar(50) NOT NU
19、LL, customer varchar(20) NOT NULL, date smalldatetime NOT NULL, customertel nchar(10) NULL,CONSTRAINT PK_Table_1 PRIMARY KEY CLUSTERED ( repairId ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY GO SE
20、T ANSI_PADDING OFF GO /* Object: Table dbo.Product_info Script Date: 01/17/2011 16:00:59 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO记录数增长量表的并发补充说明6.6.表名Login数据库用户管理人员主键userId 用户编号其他排序字段password,userName,tel, birthday,registerTime,type索引字段序号字段名称数据类型(精度范围)允许为空 Y/N唯一Y/N区别
21、度默认值约束条件/说明1userIdintNY2passwordVarchar(50)NN3userNameSmallDateTimeNN4telVarchar(50)NN5birthdayVarchar(50)NN6registerTimeSmallDateTimeNN7typeVarchar(50)NNMysql 脚本CREATE TABLE dbo.Login(userId varchar(10) NOT NULL,password varchar(16) NOT NULL,userName varchar(20) NOT NULL,tel varchar(20) NOT NULL,bi
22、rthday smalldatetime NOT NULL,registerTime smalldatetime NOT NULL,type nvarchar(50) NOT NULL,CONSTRAINT PK_manager_Info PRIMARY KEY CLUSTERED (userId ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARYGOSE
23、T ANSI_PADDING OFFGO记录数增长量表的并发补充说明5.35.3视图的设计视图的设计根据 XXX 产品的概要设计文档来确定。 视图的命名按照xx 数据库设计规范中关于视图的命名规范命名。 视图的设计应注意以下几点:1 尽量减少列中使用的公式。 2 去掉所有不必要的列。 3 不要使同一个文档属于多个分类。 4 避免使用表单公式。5.45.4存储过程、函数及触发器的设计存储过程、函数及触发器的设计存储过程及触发器的命名按照xx 数据库设计规范中关于存储过程及触发器的命 名规范命名。存储过程:根据具体得业务逻辑确定输入参数个数,类型,确定对哪几个表进行何种作。在定义存储过程时,要使用
24、其完成单一、相对集中的任务,不要定义已由其 他提供功能的过程。例如:不要定义强制数据完整性的过程(使用完整性约 束) 。 函数 :函数与存储过程非常相似,它也是存储在数据库中的对象。但是可以在 SQL 命令中使用函数。就好像建立自己的 substr 函数一样 触发器 :触发器是存储在数据库中的程序,它在某一特定事件发生时执行。这些程 序可以用 PL/SQL 和 java 语言编写,也可以用作 c 语言的调用,数据库允许 用户定义这些程序,然后在相关的表,视图或者数据库动作执行 insert,update 或 delete 语句时执行。 1.存储过程: CREATE PROCEDURE Ente
25、r_storage_GetMaxIdASDECLARE TempID intSELECT TempID = max(ESID)+1 FROM Enter_storageIF TempID IS NULLRETURN 1ELSERETURN TempIDCREATE PROCEDURE Enter_storage_ExistsESID intASDECLARE TempID intSELECT TempID = count(1) FROM Enter_storage WHERE ESID=ESID IF TempID = 0RETURN 0ELSERETURN 1CREATE PROCEDURE
26、 Enter_storage_ADDESID int output,product varchar(50),date smalldatetime,num varchar(6),storageManagerId nvarchar(50)AS INSERT INTO Enter_storage(product,date,num,storageManagerId)VALUES(product,date,num,storageManagerId)SET ESID = IDENTITYCREATE PROCEDURE Enter_storage_UpdateESID int,product varcha
27、r(50),date smalldatetime,num varchar(6),storageManagerId nvarchar(50)AS UPDATE Enter_storage SET product = product,date = date,num = num,storageManagerId = storageManagerIdWHERE ESID=ESID CREATE PROCEDURE Enter_storage_DeleteESID intAS DELETE Enter_storageWHERE ESID=ESID CREATE PROCEDURE Enter_stora
28、ge_GetModelESID intAS SELECT ESID,product,date,num,storageManagerIdFROM Enter_storageWHERE ESID=ESID CREATE PROCEDURE Enter_storage_GetListAS SELECT ESID,product,date,num,storageManagerIdFROM Enter_storageCREATE PROCEDURE Exit_storage_GetMaxIdASDECLARE TempID intSELECT TempID = max(ExitStorageId)+1
29、FROM Exit_storageIF TempID IS NULLRETURN 1ELSERETURN TempIDCREATE PROCEDURE Exit_storage_ExistsExitStorageId intASDECLARE TempID intSELECT TempID = count(1) FROM Exit_storage WHERE ExitStorageId=ExitStorageId IF TempID = 0RETURN 0ELSERETURN 1CREATE PROCEDURE Exit_storage_ADDExitStorageId int output,
30、product varchar(50),date smalldatetime,num varchar(6),storageManagerId nvarchar(50)AS INSERT INTO Exit_storage(product,date,num,storageManagerId)VALUES(product,date,num,storageManagerId)SET ExitStorageId = IDENTITYCREATE PROCEDURE Exit_storage_UpdateExitStorageId int,product varchar(50),date smallda
31、tetime,num varchar(6),storageManagerId nvarchar(50)AS UPDATE Exit_storage SET product = product,date = date,num = num,storageManagerId = storageManagerIdWHERE ExitStorageId=ExitStorageId CREATE PROCEDURE Exit_storage_DeleteExitStorageId intAS DELETE Exit_storageWHERE ExitStorageId=ExitStorageId CREA
32、TE PROCEDURE Exit_storage_GetModelExitStorageId intAS SELECT ExitStorageId,product,date,num,storageManagerIdFROM Exit_storageWHERE ExitStorageId=ExitStorageId CREATE PROCEDURE Exit_storage_GetListAS SELECT ExitStorageId,product,date,num,storageManagerIdFROM Exit_storageCREATE PROCEDURE Login_Existsu
33、serId varchar(10)ASDECLARE TempID intSELECT TempID = count(1) FROM Login WHERE userId=userId IF TempID = 0RETURN 0ELSERETURN 1CREATE PROCEDURE Login_ADDuserId varchar(10),password varchar(16),userName varchar(20),tel varchar(20),birthday smalldatetime,registerTime smalldatetime,type nvarchar(50)AS I
34、NSERT INTO Login(userId,password,userName,tel,birthday,registerTime,type)VALUES(userId,password,userName,tel,birthday,registerTime,type)CREATE PROCEDURE Login_UpdateuserId varchar(10),password varchar(16),userName varchar(20),tel varchar(20),birthday smalldatetime,registerTime smalldatetime,type nva
35、rchar(50)AS UPDATE Login SET password = password,userName = userName,tel = tel,birthday = birthday,registerTime = registerTime,type = typeWHERE userId=userId CREATE PROCEDURE Login_DeleteuserId varchar(10)AS DELETE LoginWHERE userId=userId CREATE PROCEDURE Login_GetModeluserId varchar(10)AS SELECT u
36、serId,password,userName,tel,birthday,registerTime,typeFROM LoginWHERE userId=userId CREATE PROCEDURE Login_GetListAS SELECT userId,password,userName,tel,birthday,registerTime,typeFROM LoginCREATE PROCEDURE Product_info_GetMaxIdASDECLARE TempID intSELECT TempID = max(proId)+1 FROM Product_infoIF Temp
37、ID IS NULLRETURN 1ELSERETURN TempIDCREATE PROCEDURE Product_info_ExistsproId intASDECLARE TempID intSELECT TempID = count(1) FROM Product_info WHERE proId=proId IF TempID = 0RETURN 0ELSERETURN 1CREATE PROCEDURE Product_info_ADDproId int output,name varchar(50),price varchar(6),proDate smalldatetime,
38、storage varchar(4)AS INSERT INTO Product_info(name,price,proDate,storage)VALUES(name,price,proDate,storage)SET proId = IDENTITYCREATE PROCEDURE Product_info_UpdateproId int,name varchar(50),price varchar(6),proDate smalldatetime,storage varchar(4)AS UPDATE Product_info SET name = name,price = price,
39、proDate = proDate,storage = storageWHERE proId=proId CREATE PROCEDURE Product_info_DeleteproId intAS DELETE Product_infoWHERE proId=proId CREATE PROCEDURE Product_info_GetModelproId intAS SELECT proId,name,price,proDate,storageFROM Product_infoWHERE proId=proId CREATE PROCEDURE Product_info_GetListAS SELECT proId,name,price,proDate,storageFROM Product_infoCREATE PROCEDURE Repair_info_GetMaxIdASDECLARE Te