完整版数据库设计文档模板.docx
《完整版数据库设计文档模板.docx》由会员分享,可在线阅读,更多相关《完整版数据库设计文档模板.docx(33页珍藏版)》请在冰豆网上搜索。
![完整版数据库设计文档模板.docx](https://file1.bdocx.com/fileroot1/2023-2/17/d11b8bfa-84fc-4225-b029-fb42a3645c1f/d11b8bfa-84fc-4225-b029-fb42a3645c1f1.gif)
完整版数据库设计文档模板
*****中心开发部
文档编号
2011-6-14
版本
A1
密级
商密A
项目名称
时代集团产品跟踪平台
项目来源
时代集团
DR-RD-020(V1.1)
数据库设计说明书
(内部资料请勿外传)
编写:
日期:
检查:
日期:
审核:
日期:
批准:
日期:
*********
版权所有不得复制
1引言
1.1编写目的
本文档是时代集团产品跟踪平台
概要设计文档的组成部分,编写数据库设计文档的目的是:
明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循《SQL数据库设计和开发规范》。
本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。
1.2术语表
序号
术语或缩略语
说明性定义
1
ESID
EnterStorageId入库编号
2
ProId
ProductId产品编号
3
PMID
ProductManagerId产品管理员编号
1.3参考资料
资料名称
作者
文件编号、版本
资料存放地点
2数据库环境说明
数据库实例
数据库系统
数据库部署环境
数据库设计工具
数据库存放位置
说明
3数据库的命名规则
数据库名称:
时代集团的英文名称time-group
表名:
英文(表的用途)+下划线+英文
字段名:
相关属性的英文名
4逻辑设计
提示:
数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD)。
如果采用面向对象方法(OOAD),这里实体相当于类(class)。
5物理设计
提示:
(1)主要是设计表结构。
一般地,实体对应于表,实体的属性对应于表的列,实体之间的关系成为表的约束。
逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们并不一定是一一对应的。
(2)对表结构进行规范化处理(第三范式)。
5.1表汇总
表名
功能说明
Enter_storage
产品入库(新产品的登记、修改、查询)
Exit_storage
产品出库(登记产品出库信息)
Seller_info
销售商信息维护表(对销售商信息的添加、修改和查询)
Product_info
产品信息表(对新产品的发布,修改,查询等维护)
Repair_info
维修表(对已出售产品的维修进行登记,修改)
L
管理员表(包含五种身份,销售人员,库存管理人员,售后服务人员,产品信息管理人员,系统管理员)
5.2表:
表的索引:
索引是否建立要根据具体的业务需求来确定。
允许为空:
不填的表示为“是”。
唯一:
不填的表示为“是”。
表的记录数和增长量:
根据具体的业务需求确定。
增长量应确定单位时间如果量大可以按每天,如果不大可以按每月。
表字段的区别度:
主要是考虑到将来在此字段上建立索引类型选择时作为参考,当字段值唯一时可以不考虑,当字段值不唯一时,估算一个区别度,近似即可。
例如:
如果一个表的NAME字段有共2000个值,其中有1999个不同值,1999/2000=0.99越接近1区别度越高,反之区别度越低。
表的并发:
根据具体的业务需求预测表的并发。
1.
表名
Enter_storage
数据库用户
库存管理人员
主键
ESID入库产品编号
其他排序字段
Product,date,num,storageManagerId
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1
ESID
int
N
Y
2
Product
Varchar(50)
N
N
3
date
SmallDateTime
N
N
4
num
Varchar(50)
N
N
5
storageManagerId
Varchar(50)
N
Y
Mysql脚本
CREATETABLE[dbo].[Enter_storage](
[ESID][int]IDENTITY(1,1)NOTNULL,
[product][varchar](50)NOTNULL,
[date][smalldatetime]NOTNULL,
[num][varchar](6)NOTNULL,
[storageManagerId][nvarchar](50)NOTNULL,
CONSTRAINT[PK_addStorage]PRIMARYKEYCLUSTERED
(
[ESID]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
SETANSI_PADDINGOFF
GO
记录数
增长量
表的并发
补充说明
2.
表名
Exit_storage
数据库用户
库存管理人员
主键
ExitStorageId出库产品编号
其他排序字段
Product,date,num,storageManagerId
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1
ExitStorageId
int
N
Y
2
Product
Varchar(50)
N
N
3
date
SmallDateTime
N
N
4
num
Varchar(50)
N
N
5
storageManagerId
Varchar(50)
N
Y
Mysql脚本
CREATETABLE[dbo].[Exit_storage](
[ExitStorageId][int]IDENTITY(1,1)NOTNULL,
[product][varchar](50)NOTNULL,
[date][smalldatetime]NOTNULL,
[num][varchar](6)NOTNULL,
CONSTRAINT[PK_subStorage]PRIMARYKEYCLUSTERED
(
[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
SETANSI_PADDINGOFF
GO
/******Object:
Table[dbo].[Enter_storage]ScriptDate:
01/17/201116:
00:
59******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
记录数
增长量
表的并发
补充说明
3.
表名
Seller_info
数据库用户
销售商管理员
主键
name
其他排序字段
telephone,address,product,stockNum,stockDate,stockPrice
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1
name
Varchar(50)
N
Y
2
telephone
Varchar(50)
N
N
3
address
SmallDateTime
N
N
4
product
Varchar(50)
N
N
5
stockNum
Varchar(50)
N
N
6
stockDate
SmallDateTime
N
N
7
stockPrice
Varchar(50)
N
N
Mysql脚本
CREATETABLE[dbo].[Seller_info](
[name][varchar](50)NOTNULL,
[telephone][varchar](20)NOTNULL,
[address][varchar](50)NOTNULL,
[product][varchar](50)NOTNULL,
[stockNum][varchar](6)NOTNULL,
[stockDate][smalldatetime]NOTNULL,
[stockPrice][varchar](10)NOTNULL,
CONSTRAINT[PK_maketer_Info]PRIMARYKEYCLUSTERED
(
[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
SETANSI_PADDINGOFF
GO
/******Object:
Table[dbo].[Repair_info]ScriptDate:
12/16/201009:
59:
13******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
记录数
增长量
表的并发
补充说明
4.
表名
Product_info
数据库用户
产品信息管理人员
主键
proId
其他排序字段
name,price,proDate,storage
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1
proId
int
N
Y
2
name
Varchar(50)
N
N
3
price
Varchar(50)
N
N
4
proDate
SmallDateTime
N
N
5
storage
Varchar(50)
N
Y
Mysql脚本
CREATETABLE[dbo].[Product_info](
[proId][int]IDENTITY(1,1)NOTNULL,
[name][varchar](50)NOTNULL,
[price][varchar](6)NOTNULL,
[proDate][smalldatetime]NOTNULL,
[storage][varchar](4)NOTNULL,
CONSTRAINT[PK_product_Info]PRIMARYKEYCLUSTERED
(
[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
SETANSI_PADDINGOFF
GO
/******Object:
Table[dbo].[Login]ScriptDate:
01/17/201116:
00:
59******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
记录数
增长量
表的并发
补充说明
5.
表名
Repair_info
数据库用户
售后服务人员
主键
repairId产品维修编号
其他排序字段
repairName,repairtel,product,customer,date,customertel
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1
repairId
int
N
Y
2
repairName
Varchar(50)
N
N
3
repairtel
SmallDateTime
N
N
4
product
Varchar(50)
N
N
5
customer
Varchar(50)
N
N
date
SmallDateTime
N
N
customertel
Varchar(50)
N
N
Mysql脚本
CREATETABLE[dbo].[Repair_info](
[repairId][int]IDENTITY(1,1)NOTNULL,
[repairName][nchar](10)NULL,
[repairtel][nchar](10)NULL,
[product][varchar](50)NOTNULL,
[customer][varchar](20)NOTNULL,
[date][smalldatetime]NOTNULL,
[customertel][nchar](10)NULL,
CONSTRAINT[PK_Table_1]PRIMARYKEYCLUSTERED
(
[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
SETANSI_PADDINGOFF
GO
/******Object:
Table[dbo].[Product_info]ScriptDate:
01/17/201116:
00:
59******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
记录数
增长量
表的并发
补充说明
6.
表名
Login
数据库用户
管理人员
主键
userId用户编号
其他排序字段
password,userName,tel,birthday,registerTime,type
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1
userId
int
N
Y
2
password
Varchar(50)
N
N
3
userName
SmallDateTime
N
N
4
tel
Varchar(50)
N
N
5
birthday
Varchar(50)
N
N
6
registerTime
SmallDateTime
N
N
7
type
Varchar(50)
N
N
Mysql脚本
CREATETABLE[dbo].[Login](
[userId][varchar](10)NOTNULL,
[password][varchar](16)NOTNULL,
[userName][varchar](20)NOTNULL,
[tel][varchar](20)NOTNULL,
[birthday][smalldatetime]NOTNULL,
[registerTime][smalldatetime]NOTNULL,
[type][nvarchar](50)NOTNULL,
CONSTRAINT[PK_manager_Info]PRIMARYKEYCLUSTERED
(
[userId]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
SETANSI_PADDINGOFF
GO
记录数
增长量
表的并发
补充说明
5.3视图的设计
[根据XXX产品的概要设计文档来确定。
视图的命名按照《xx数据库设计规范》中关于视图的命名规范命名。
视图的设计应注意以下几点:
1尽量减少列中使用的公式。
2去掉所有不必要的列。
3不要使同一个文档属于多个分类。
4避免使用表单公式。
]
5.4存储过程、函数及触发器的设计
[存储过程及触发器的命名按照《xx数据库设计规范》中关于存储过程及触发器的命名规范命名。
存储过程:
根据具体得业务逻辑确定输入参数个数,类型,确定对哪几个表进行何种作。
在定义存储过程时,要使用其完成单一、相对集中的任务,不要定义已由其他提供功能的过程。
例如:
不要定义强制数据完整性的过程(使用完整性约束)。
函数:
函数与存储过程非常相似,它也是存储在数据库中的对象。
但是可以在SQL命令中使用函数。
就好像建立自己的substr函数一样
触发器:
触发器是存储在数据库中的程序,它在某一特定事件发生时执行。
这些程序可以用PL/SQL和java语言编写,也可以用作c语言的调用,数据库允许用户定义这些程序,然后在相关的表,视图或者数据库动作执行insert,update或delete语句时执行。
]
1.存储过程:
CREATEPROCEDUREEnter_storage_GetMaxId
AS
DECLARE@TempIDint
SELECT@TempID=max([ESID])+1FROM[Enter_storage]
IF@TempIDISNULL
RETURN1
ELSE
RETURN@TempID
CREATEPROCEDUREEnter_storage_Exists
@ESIDint
AS
DECLARE@TempIDint
SELECT@TempID=count
(1)FROM[Enter_storage]WHEREESID=@ESID
IF@TempID=0
RETURN0
ELSE
RETURN1
CREATEPROCEDUREEnter_storage_ADD
@ESIDintoutput,
@productvarchar(50),
@datesmalldatetime,
@numvarchar(6),
@storageManagerIdnvarchar(50)
AS
INSERTINTO[Enter_storage](
[product],[date],[num],[storageManagerId]
)VALUES(
@product,@date,@num,@storageManagerId
)
SET@ESID=@@IDENTITY
CREATEPROCEDUREEnter_storage_Update
@ESIDint,
@productvarchar(50),
@datesmalldatetime,
@numvarchar(6),
@storageManagerIdnvarchar(50)
AS
UPDATE[Enter_storage]SET
[product]=@product,[date]=@date,[num]=@num,[storageManagerId]=@storageManagerId
WHEREESID=@ESID
CREATEPROCEDUREEnter_storage_Delete
@ESIDint
AS
DELETE[Enter_storage]
WHEREESID=@ESID
CREATEPROCEDUREEnter_storage_GetModel
@ESIDint
AS
SELECT
ESID,product,date,num,storageManagerId
FROM[Enter_storage]
WHEREESID=@ESID
CREATEPROCEDUREEnter_storage_GetList
AS
SELECT
ESID,product,date,num,storageManagerId
FROM[Enter_storage]
CREATEPROCEDUREExit_storage_GetMaxId
AS
DECLARE@TempIDint
SELECT@TempID=max([ExitStorageId])+1FROM[Exit_storage]
IF@TempIDISNULL
RETURN1
ELSE
RETURN@TempID
CREATEPROCEDUREExit_storage_Exists
@ExitStorageIdint
AS
DECLARE@TempIDint
SELECT@TempID=count
(1)FROM[Exit_storage]WHERE