《数据库设计资料文档材料模板.doc》由会员分享,可在线阅读,更多相关《数据库设计资料文档材料模板.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、- DR-RD-020(V1.1) 数据库设计说明书数据库设计说明书 (内部资料 请勿外传) 编编 写:写:日日 期:期: 检检 查:查:日日 期:期: 审审 核:核:日日 期:期: 批批 准:准:日日 期:期: * 版权所有版权所有 不得复制不得复制 文档编号文档编号2011-6-14版本版本A1密级密级 商密 A 项目名称项目名称 时代集团产品跟踪平台*中心开发部中心开发部 项目来源项目来源时代集团 - 时代集团产品跟踪平台时代集团产品跟踪平台 .1 数据库设计说明书数据库设计说明书 .1 1引言引言.2 1.1编写目的.2 1.2术语表.2 1.3参考资料.3 2数据库环境说明数据库环境
2、说明.3 3数据库的命名规则数据库的命名规则.3 4逻辑设计逻辑设计.3 5物理设计物理设计.4 5.1表汇总.4 5.2表X:XXX 表.4 5.3视图的设计.6 5.4存储过程、函数及触发器的设计.6 6安全性设计安全性设计.6 6.1防止用户直接操作数据库的方法.6 6.2用户帐号密码的加密方法.7 6.3角色与权限.7 7优化优化.7 8数据库管理与维护说明数据库管理与维护说明.7 1引言引言 1.1编写目的编写目的 本文档是时代集团产品跟踪平台 概要设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段 名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循SQL
3、数据库设计和开发 规范 。本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。 1.2术语表术语表 序号序号术语或缩略语术语或缩略语说明性定义说明性定义 1ESID EnterStorageId 入库编号 2ProId ProductId 产品编号 - 3PMID ProductManagerId 产品管理员编号 1.3参考资料参考资料 资料名称作者文件编号、版本资料存放地点 2数据库环境说明数据库环境说明 数据库 实例 数据库系统数据库部 署环境 数据库设 计工具 数据库存放 位置 说明 3数据库的命名规则数据库的命名规则 数据库名称:时代集团的英文名称time-group 表名:
4、英文(表的用途)+下划线+英文 字段名:相关属性的英文名 4逻辑设计逻辑设计 提示:数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD) 。 如果采用面向对象方法(OOAD) ,这里实体相当于类(class) 。 - inhr_partner_sp inhr_partner_cp partner_sett_rels coop_rels settle_order_rels partner_sett_order coop_settl_order sp_coop_relscp_coop_rels 伙 伙 伙 伙 伙 伙 伙 伙 伙伙 伙 伙 伙 伙 伙 伙 伙 1 伙 伙 伙 伙
5、 伙 伙 伙 伙 伙 伙 伙 伙 伙 伙 伙 伙 伙 伙 2 5物理设计物理设计 提示: (1)主要是设计表结构。一般地,实体对应于表,实体的属性对应于表的列,实体之 间的关系成为表的约束。逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们 并不一定是一一对应的。 (2)对表结构进行规范化处理(第三范式) 。 - 5.1表汇总表汇总 表名功能说明 Enter_storage 产品入库(新产品的登记、修改、查询) Exit_storage 产品出库(登记产品出库信息) Seller_info 销售商信息维护表(对销售商信息的添加、修改和查询) Product_info 产品信息表(对新产品
6、的发布,修改,查询等维护) Repair_info 维修表(对已出售产品的维修进行登记,修改) L 管理员表(包含五种身份,销售人员,库存管理人员,售后服务人员,产品 信息管理人员,系统管理员) 5.2表: 表的索引: 索引是否建立要根据具体的业务需求来确定。 允许为空:不填的表示为“是”。 唯一:不填的表示为“是”。 表的记录数和增长量:根据具体的业务需求确定。增长量应确定单位时间如果量大可 以按每天,如果不大可以按每月。 表字段的区别度:主要是考虑到将来在此字段上建立索引类型选择时作为参考,当字段 值唯一时可以不考虑,当字段值不唯一时,估算一个区别度,近似即 可。例如:如果一个表的 NAM
7、E 字段有共 2000 个值,其中有 1999 个 不同值,1999/2000=0.99 越接近 1 区别度越高,反之区别度越低。 表的并发:根据具体的业务需求预测表的并发。 1 表名 Enter_storage 数据库用户库存管理人员 主键ESID 入库产品编号 其他排序字段Product,date,num,storageManagerId 索引字段 序号字段名称数据类型(精度 范围) 允许为 空 Y/N 唯一 Y/N 区别 度 默认 值 约束条件/说明 1ESIDintNY 2ProductVarchar(50)NN 3dateSmallDateTimeNN 4numVarchar(50)
8、NN 5storageManagerIdVarchar(50)NY - Mysql 脚本 CREATE TABLE dbo.Enter_storage( ESID int IDENTITY(1,1) NOT NULL, product varchar(50) NOT NULL, date smalldatetime NOT NULL, num varchar(6) NOT NULL, storageManagerId nvarchar(50) NOT NULL, CONSTRAINT PK_addStorage PRIMARY KEY CLUSTERED ( ESID ASC )WITH (P
9、AD_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 记录数 增长量 表的并发 补充说明 2.2. 表名 Exit_storage 数据库用户库存管理人员 主键ExitStorageId 出库产品编号 其他排序字段Product,date,num,storageManagerId 索引字段 序号字段名称数据类型(精度 范围)
10、 允许为 空 Y/N 唯一 Y/N 区别 度 默认 值 约束条件/说明 1ExitStorageIdintNY 2ProductVarchar(50)NN 3dateSmallDateTimeNN 4numVarchar(50)NN 5storageManagerIdVarchar(50)NY - Mysql 脚本 CREATE TABLE dbo.Exit_storage( ExitStorageId int IDENTITY(1,1) NOT NULL, product varchar(50) NOT NULL, date smalldatetime NOT NULL, num varch
11、ar(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, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY GO SET ANSI_PADDING OFF GO /* Object: Table dbo.Enter_storage Script Dat
12、e: 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, stockNum,stockDate,stockPrice 索引字段 序号字段名称数据类型(精度 范围) 允许为 空 Y/N 唯一 Y/N 区别度默认值约束条件/说明 1nameVarchar(50)NY 2telepho
13、neVarchar(50)NN 3addressSmallDateTimeNN 4productVarchar(50)NN 5stockNumVarchar(50)NN 6stockDateSmallDateTimeNN 7stockPriceVarchar(50)NN - Mysql 脚本 CREATE TABLE dbo.Seller_info( name varchar(50) NOT NULL, telephone varchar(20) NOT NULL, address varchar(50) NOT NULL, product varchar(50) NOT NULL, stoc
14、kNum 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_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY GO
15、 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 数据库用户产品信息管理人员 主键proId 其他排序字段name,price,proDate, storage 索引字段 序号字段名称数据类型(精度 范围) 允许为 空 Y/N 唯一 Y/N
16、 区别 度 默认 值 约束条件/说明 1proIdintNY 2nameVarchar(50)NN 3priceVarchar(50)NN 4proDateSmallDateTime NN - 5storageVarchar(50)NY Mysql 脚本 CREATE TABLE dbo.Product_info( proId int IDENTITY(1,1) NOT NULL, name varchar(50) NOT NULL, price varchar(6) NOT NULL, proDate smalldatetime NOT NULL, storage varchar(4) NO
17、T 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 /* Object: Table dbo.Login Script Date: 01/17/2011 16:00:59
18、 */ 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 区别度默认值约束条件/说明 1repairIdintNY 2repairNameVarchar(50)NN
19、3repairtelSmallDateTimeNN 4productVarchar(50)NN 5customerVarchar(50)NN dateSmallDateTimeNN - customertelVarchar(50)NN Mysql 脚本 CREATE TABLE dbo.Repair_info( repairId int IDENTITY(1,1) NOT NULL, repairName nchar(10) NULL, repairtel nchar(10) NULL, product varchar(50) NOT NULL, customer varchar(20) NO
20、T 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 SET ANSI_PADDING OFF GO /* O
21、bject: 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 区别度默认值约束条件
22、/说明 1userIdintNY 2passwordVarchar(50)NN 3userNameSmallDateTimeNN 4telVarchar(50)NN - 5birthdayVarchar(50)NN 6registerTimeSmallDateTimeNN 7typeVarchar(50)NN Mysql 脚本 CREATE TABLE dbo.Login( userId varchar(10) NOT NULL, password varchar(16) NOT NULL, userName varchar(20) NOT NULL, tel varchar(20) NOT
23、NULL, birthday 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 )
24、ON PRIMARY GO SET ANSI_PADDING OFF GO 记录数 增长量 表的并发 补充说明 5.35.3视图的设计视图的设计 根据 XXX 产品的概要设计文档来确定。 视图的命名按照xx 数据库设计规范中关于视图的命名规范命名。 视图的设计应注意以下几点: 1 尽量减少列中使用的公式。 2 去掉所有不必要的列。 3 不要使同一个文档属于多个分类。 4 避免使用表单公式。 - 5.45.4存储过程、函数及触发器的设计存储过程、函数及触发器的设计 存储过程及触发器的命名按照xx 数据库设计规范中关于存储过程及触发器的命 名规范命名。 存储过程:根据具体得业务逻辑确定输入参数个数
25、,类型,确定对哪几个表进行何种作。 在定义存储过程时,要使用其完成单一、相对集中的任务,不要定义已由其 他提供功能的过程。例如:不要定义强制数据完整性的过程(使用完整性约 束) 。 函数 :函数与存储过程非常相似,它也是存储在数据库中的对象。但是可以在 SQL 命令中使用函数。就好像建立自己的 substr 函数一样 触发器 :触发器是存储在数据库中的程序,它在某一特定事件发生时执行。这些程 序可以用 PL/SQL 和 java 语言编写,也可以用作 c 语言的调用,数据库允许 用户定义这些程序,然后在相关的表,视图或者数据库动作执行 insert,update 或 delete 语句时执行。
26、 1.存储过程: CREATE PROCEDURE Enter_storage_GetMaxId AS DECLARE TempID int SELECT TempID = max(ESID)+1 FROM Enter_storage IF TempID IS NULL RETURN 1 ELSE RETURN TempID CREATE PROCEDURE Enter_storage_Exists ESID int AS DECLARE TempID int SELECT TempID = count(1) FROM Enter_storage WHERE ESID=ESID IF Temp
27、ID = 0 RETURN 0 - ELSE RETURN 1 CREATE PROCEDURE Enter_storage_ADD ESID 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 = IDENTITY
28、CREATE PROCEDURE Enter_storage_Update ESID int, product varchar(50), date smalldatetime, num varchar(6), storageManagerId nvarchar(50) AS UPDATE Enter_storage SET product = product,date = date,num = num,storageManagerId = storageManagerId WHERE ESID=ESID CREATE PROCEDURE Enter_storage_Delete ESID in
29、t AS DELETE Enter_storage WHERE ESID=ESID CREATE PROCEDURE Enter_storage_GetModel ESID int AS SELECT ESID,product,date,num,storageManagerId FROM Enter_storage WHERE ESID=ESID - CREATE PROCEDURE Enter_storage_GetList AS SELECT ESID,product,date,num,storageManagerId FROM Enter_storage CREATE PROCEDURE
30、 Exit_storage_GetMaxId AS DECLARE TempID int SELECT TempID = max(ExitStorageId)+1 FROM Exit_storage IF TempID IS NULL RETURN 1 ELSE RETURN TempID CREATE PROCEDURE Exit_storage_Exists ExitStorageId int AS DECLARE TempID int SELECT TempID = count(1) FROM Exit_storage WHERE ExitStorageId=ExitStorageId
31、IF TempID = 0 RETURN 0 ELSE RETURN 1 CREATE PROCEDURE Exit_storage_ADD ExitStorageId int output, 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 Exit
32、StorageId = IDENTITY CREATE PROCEDURE Exit_storage_Update ExitStorageId int, - product varchar(50), date smalldatetime, num varchar(6), storageManagerId nvarchar(50) AS UPDATE Exit_storage SET product = product,date = date,num = num,storageManagerId = storageManagerId WHERE ExitStorageId=ExitStorage
33、Id CREATE PROCEDURE Exit_storage_Delete ExitStorageId int AS DELETE Exit_storage WHERE ExitStorageId=ExitStorageId CREATE PROCEDURE Exit_storage_GetModel ExitStorageId int AS SELECT ExitStorageId,product,date,num,storageManagerId FROM Exit_storage WHERE ExitStorageId=ExitStorageId CREATE PROCEDURE E
34、xit_storage_GetList AS SELECT ExitStorageId,product,date,num,storageManagerId FROM Exit_storage CREATE PROCEDURE Login_Exists userId varchar(10) AS DECLARE TempID int SELECT TempID = count(1) FROM Login WHERE userId=userId IF TempID = 0 RETURN 0 ELSE - RETURN 1 CREATE PROCEDURE Login_ADD userId varc
35、har(10), password varchar(16), userName varchar(20), tel varchar(20), birthday smalldatetime, registerTime smalldatetime, type nvarchar(50) AS INSERT INTO Login( userId,password,userName,tel,birthday,registerTime,t ype )VALUES( userId,password,userName,tel,birthday,registerTime,type ) CREATE PROCEDU
36、RE Login_Update userId varchar(10), password varchar(16), userName varchar(20), tel varchar(20), birthday smalldatetime, registerTime smalldatetime, type nvarchar(50) AS UPDATE Login SET password = password,userName = userName,tel = tel,birthday = birthday,registerTime = registerTime,type = type WHE
37、RE userId=userId CREATE PROCEDURE Login_Delete userId varchar(10) AS DELETE Login WHERE userId=userId - CREATE PROCEDURE Login_GetModel userId varchar(10) AS SELECT userId,password,userName,tel,birthday,registerTime,type FROM Login WHERE userId=userId CREATE PROCEDURE Login_GetList AS SELECT userId,
38、password,userName,tel,birthday,registerTime,type FROM Login CREATE PROCEDURE Product_info_GetMaxId AS DECLARE TempID int SELECT TempID = max(proId)+1 FROM Product_info IF TempID IS NULL RETURN 1 ELSE RETURN TempID CREATE PROCEDURE Product_info_Exists proId int AS DECLARE TempID int SELECT TempID = c
39、ount(1) FROM Product_info WHERE proId=proId IF TempID = 0 RETURN 0 ELSE RETURN 1 CREATE PROCEDURE Product_info_ADD proId int output, name varchar(50), - price varchar(6), proDate smalldatetime, storage varchar(4) AS INSERT INTO Product_info( name,price,proDate,storage )VALUES( name,price,proDate,storage ) SET proId = IDENTITY CREATE PROCEDURE Product_info_Update proId int, name varchar(50), price varchar(