数据库设计文档模板_第1页
数据库设计文档模板_第2页
数据库设计文档模板_第3页
数据库设计文档模板_第4页
数据库设计文档模板_第5页
已阅读5页,还剩19页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

商密

文档编号2011-6-14版本A1密级

A

*****中心开发部

项目名称时代集团产品跟踪平台

项目来源时代集团

DR-RD-O2O(VL1)

数据库设计说明书

(内部资料请勿外传)

编写:日期:

检查:日期:

审核:日期:

批准:日期:

版权所有不得复制

时代集团产品跟踪平台错误!未定义书签。

数据库设计说明书1

1弓I言2

1.1编写目的2

1.2术语表2

1.3参考资料3

2数据库环境说明3

3数据库的命名规则3

4逻辑设计3

5物理设计4

5.1表汇总5

5.2表如:[XXX表]5

5.3视图的设计11

5.4存储过程、函数及触发器的设计12

6安全性设计23

6.1防止用户直接操作数据库的方法23

6.2用户帐号密码的加密方法23

6.3角色与权限23

7优化24

8数据库管理与维护说明24

1引言

1.1编写目的

本文档是时代集团产品跟踪平台

概要设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名

等数据信息,用来指导后期的数据库脚本的开发,本文档遵循《SQL数据库设计和开发规范》。

本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。

1.2术语表

序号术语或缩略语说明性定义

1ESIDEnterStorageld入库编号

2ProldProductld产品编号

3PMIDProductManagerld产品管理员编号

1.3参考资料

资料名称作者文件编号、版本资料存放地点

2数据库环境说明

数据库数据库系统数据库部数据库设数据库存放说明

实例署环境计工具位置

3数据库的命名规则

数据库名称:时代集团的英文名称time-group

表名:英文(表的用途)+下划线+英文

字段名:相关属性的英文名

4逻辑设计

提示:数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD).

如果采用面向对象方法(OOAD),这里实体相当于类(class)。

5物理设计

提示:

a)主要是设计表结构。一般地,实体对应于表,实体的属性对应于表的列,实体之

间的关系成为表的约束。逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们并

不一定是一一对应的。

(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,storageManagerld

索引字段

序号字段名称数据类型(精度允许为唯一区别默认约束条件/说明

范围)空Y/NY/N度值

1ESIDintNY

2ProductVarchar(50)NN

3dateSmallDateTimeNN

4numVarchar(50)\\

5storageManagerldVarchar(50)NY

Mysql脚本CREATETABLE[dbo].[Enter_storage](

[ESID][int]IDENTITY(1,1)NOTNULL,

[product][varchar](50)NOTNULL,

[date][smalldatetime]NOTNULL,

[num][varchar](6)NOTNULL,

[storageManagerld][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.

表名Exitstorage

数据库用户库存管理人员

主键ExitStorageld出库产品编号

其他排序字段Product,date,num,storageManagerId

索引字段

序号字段名称数据类型(精度允许为唯一区别默认约束条件/说明

范围)空Y/NY/N度值

1ExitStorageldintNY

2ProductVarchar(50)NN

3dateSmallDateTimeNN

4numVarchar(50)NN

5storageManagerldVarchar(50)NY

Mysql脚本CREATETABLE[dbo].[Exit_storage](

[ExitStorageld][int]IDENTITY(1,1)NOTNULL,

[product][varchar](50)NOTNULL,

[date][smalldatetime]NOTNULL,

[num][varchar](6)NOTNULL,

CONSTRAINT[PK_subStorage]PRIMARYKEYCLUSTERED

(

[ExitStorageld]ASC

)WITI1(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]Script

Date: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/NY/N

1nameVarchar(50)NY

2telephoneVarchar(50)NN

3addressSmal1DateTimeNN

4productVarchar(50)NN

5stockNumVarchar(50)NN

6stockDateSmallDateTimeNN

7stockPriceVarchar(50)NN

Mysql脚本CREATETABLE[dbo].[Seller_info]([name][varchar](50)NOT

NULL,[telephone][varchar](20)NOTNULL,[address]

[varchar](50)NOTNULL,[product][varchar](50)NOTNULL,

[stockNum][varchar](6)NOTNULL,[stockDate]

[smalldatetime]NOTNULL,[stockPrice][varchar](10)NOT

NULL,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]GOSETANSI_PADDINGOFFGO/******Object:Table

[dbo].[Repair_info]ScriptDate:12/16/201009:59:13

******/SETANSI_NULLSONGOSETQUOTED,IDENTIFIERONGOSET

ANSI_PADDINGONGO

记录数

增长量

表的并发

补充说明

4.

表名Product_info

数据库用户产品信息管理人员

主键prold

其他排序字段name,price,proDate,storage

索引字段

序号字段名称数据类型(精度允许为唯一区别默认约束条件/说明

范围)空Y/NY/N度值

1proldintNY

2nameVarchar(50)NN

3priceVarchar(50)NN

4proDateSmallDateTimeNN

5storageVarchar(50)NY

Mysql脚本CREATETABLE[dbo].[ProductInfo](

[prold][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

(

[prold]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.

表名Repairinfo

数据库用户售后服务人员

主键repairld产品维修编号

其他排序字段repairName,repairtel,product,customer,date,customertel

索引字段

序号字段名称数据类型(精度允许为唯一区别度默认值约束条件/说明

范围)空Y/NY/N

1repairldintNY

2repairNameVarchar(50)NN

3repairtelSmallDateTimeNN

4productVarchar(50)NN

5customerVarchar(50)N\

dateSma]1DateTimeNN

customertelVarchar(50)NN

Mysql脚本CREATETABLE[dbo].[Repair_info](

[repairld][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_l]PRIMARYKEYCLUSTERED

(

[repairld]ASC

)WITH(PAD」NDEX=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/NY/N

1useridintNY

2passwordVarchar(50)NN

3userNameSmallDateTimeNN

4telVarchar(50)NN

5birthdayVarchar(50)NN

6registerTimeSmallDateTimeNN

7typeVarchar(50)NN

CREATETABLE[dbo].[Login](

Mysql脚本[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产品的概要设计文档来确定。

视图的命名按照念才数据库设计规范》中关于视图的命名规范命名。

视图的设计应注意以下几点:

1尽量减少列中使用的公式。

2去掉所有不必要的列。

3不要使同一个文档属于多个分类。

4避免使用表单公式。]

NameOwnerTypeCreated_datetime

1jviewenterStorage<dboview2011-01-1716:08:37.340

Column_ndmeTypeComputedLengthPrecScaleNullableTritnTraibngBlanksFixedLenNullinSourceCoBation

1ESIDirtno4100no(n/a)NULL

2productvarcharno50nononoChinese_PRC.Cl.AS

3datesmaHdat^imeno4no6/a)(n/a)NULL

4rmvarcharno6nononoChmese_PRC_Cl_AS

5storageManagerIdnvarcharno100no仙电Chinese_PRC_CI_AS

IdentitySeedIncrementNotForReplication

1iNoidentitycolumndefined.|NULLNULLNULL

RowGutdCol

1INoro^uidco!columndefined.;

5.4存储过程、函数及触发器的设计

[存储过程及触发器的命名按照&X数据库设计规范》中关于存储过程及触发器的命名

规范命名。

存储过程:根据具体得业务逻辑确定输入参数个数,类型,确定对哪几个表进行何种

作。

在定义存储过程时,要使用其完成单一、相对集中的任务,不要定义已由其

他提供功能的过程。例如:不要定义强制数据完整性的过程(使用完整性约

束)。

函数:函数与存储过程非常相似,它也是存储在数据库中的对象。但是可以在

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

0ESIDint

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],[storageManagerld]

)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]=@numz[storageManagerld]

=QstorageManagerld

WHEREESID=@ESID

CREATEPROCEDUREEnter_storage_Delete

0ESIDint

AS

DELETE[Enter_storage]

WHEREESID=@ESID

CREATEPROCEDUREEnter_storage_GetModel

0ESIDint

AS

SELECT

ESID,product,date,num,storageManagerld

FROM[Enter_storage]

WHEREESID=@ESID

CREATEPROCEDUREEnter_storage_GetList

AS

SELECT

ESID,product,date,num,storageManagerld

FROM[Enter_storage]

CREATEPROCEDUREExit_storage_GetMaxId

AS

DECLARE@TempIDint

SELECT@TempID=max([ExitStorageld])+1FROM[Exit_storage]

IF@TempIDISNULL

RETURN1

ELSE

RETURN@TempID

CREATEPROCEDUREExit_storage_Exists

@ExitStorageIdint

AS

DECLARE@TempIDint

SELECT@TempID=count(1)FROM[Exit_storage]WHERE

ExitStorageId=@ExitStorageId

IF@TempID=0

RETURN0

ELSE

RETURN1

CREATEPROCEDUREExit_storage_ADD

@ExitStorageIdintoutput,

©productvarchar(50)f

@datesmalldatetime,

@numvarchar(6)z

@storageManagerldnvarchar(50)

AS

INSERTINTO[Exit_storage](

[product],[date],[num],[storageManagerld]

)VALUES(

©product,@date,©num,@storageManagerld

)

SETGExitStorageld=@@IDENTITY

CREATEPROCEDUREExit_storage_Update

@ExitStorageIdint,

©productvarchar(50)z

@datesmalldatetime,

@numvarchar(6),

@storageManagerIdnvarchar(50)

AS

UPDATE[Exit_storage]SET

[product]=©product,[date]=@date,[num]=©num,[storageManagerld]

=@storageManagerld

WHEREExitStorageId=@ExitStorageId

CREATEPROCEDUREExit_storage_Delete

@ExitStorageIdint

AS

DELETE[Exit_storage]

WHEREExitStorage工d=@Exitstorage工d

CREATEPROCEDUREExit_storage_GetModel

@ExitStorageIdint

AS

SELECT

ExitStorageId,product,date,num,storageManagerld

FROM[Exit_storage]

WHEREExitstorage工d=@ExitStorage工d

CREATEPROCEDUREExit_storage_GetList

AS

SELECT

ExitStorageIdzproductzdate,num,storageManagerld

FROM[Exit_storage]

CREATEPROCEDURELogin_Exists

@userldvarchar(10)

AS

DECLARE@TempIDint

SELECT@TempID=count(1)FROM[Login]WHEREuserld=@userld

IF@TempID=0

RETURN0

ELSE

RETURN1

CREATEPROCEDURELogin_ADD

@userldvarchar(10),

©passwordvarchar(16)z

@userNamevarchar(20)z

@telvarchar(20)f

©birthdaysmalldatetime,

@registerTimesmalldatetime,

@typenvarchar(50)

AS

INSERTINTO[Login](

[userid],[password]z[userName],[tel],[birthday],[registerTime],[t

ype]

)VALUES(

©userid,©password,QuserName,@tel,^birthday,@registerTime,@type

)

CREATEPROCEDURELogin_Update

@userldvarchar(10),

©passwordvarchar(16),

@userNamevarchar(20)r

@telvarchar(20),

©birthdaysmalldatetime,

@registerTimesmalldatetime,

@typenvarchar(50)

AS

UPDATE[Login]SET

[password]=©password,[userName]=@userName,[tel]=@tel,[birthday]

=©birthday,[registerTime]=@registerTimef[type]=@type

WHEREuserld=@userld

CREATEPROCEDURELogin_Delete

@userldvarchar(10)

AS

DELETE[Login]

WHEREuserld=@userld

CREATEPROCEDURELogin_GetModel

@userldvarchar(10)

AS

SELECT

userid,password,userName,tel,birthday,registerTimeztype

FROM[Login]

WHEREuserld=@userld

CREATEPROCEDURELogin_GetList

AS

SELECT

userid,password,userName,tel,birthday,registerTime,type

FROM[Login]

CREATEPROCEDUREProduct_info_GetMaxId

AS

DECLARE@TempIDint

SELECT@TempID=max([prold])+1FROM[Product_info]

IF@TempIDISNULL

RETURN1

ELSE

RETURN@TempID

CREATEPROCEDUREProduct_info_Exists

@proldint

AS

DECLARE@TempIDint

SELECT@TempID=count(1)FROM[Product_info]WHEREprold=@prold

IF@TempID=0

RETURN0

ELSE

RETURN1

CREATEPROCEDUREProduct_info_ADD

@proldintoutput,

@namevarchar(50)z

@pricevarchar(6)z

@proDatesmalldatetime,

©storagevarchar(4)

AS

INSERTINTO[Product_info](

[name],[price],[proDate],[storage]

)VALUES(

@name,0pricez©proDate,Sstorage

)

SET@prold=@@IDENTITY

CREATEPROCEDUREProduct_info_Update

@proldint,

@namevarchar(50)z

@pricevarchar(6)z

@proDatesmalldatetimez

@storagevarchar(4)

AS

UPDATE[Product_info]SET

[name]=@name,[price]=@price,[proDate]=SproDate,[storage]

©storage

WHEREprold=@prold

CREATEPROCEDUREProduct_info_Delete

@proldint

AS

DELETE[Product_info]

WHEREprold=@prold

CREATEPROCEDUREProduct_info_GetModel

@proldint

AS

SELECT

prold,name,price,proDate,storage

FROM[Product_info]

WHEREprold=@prold

CREATEPROCEDUREProduct_info_GetList

AS

SELECT

prold,name,price,proDate,storage

FROM[Product_info]

CREATEPROCEDURERepair_info_GetMaxId

AS

DECLARE@TempIDint

SELECT@TempID=max([repairld])+1FROM[Repair_info]

IF@TempIDISNULL

RETURN1

ELSE

RETURN@TempID

CREATEPROCEDURERepair_info_Exists

©repair工dint

AS

DECLARE@TempIDint

SELECT@TempID=count(1)FROM[Repair_info]WHERErepairId=@repairld

IF@TempID=0

RETURN0

ELSE

RETURN1

CREATEPROCEDURERepair_info_ADD

©repair工dintoutput,

QrepairNamenchar(10)z

@repairtelnchar(10),

©productvarchar(50)z

©customervarchar(20),

@datesmalldatetime,

@customertelnchar(10)

AS

INSERTINTO[Repairinfo](

[repairName],[repairtel],[product],[customer],[date],[customertel

]

)VALUES(

QrepairName,@repairtelz©product,@customerA©date,@customertel

SET©repair工d=00IDENTITY

CREATEPROCEDURERepair_info_Update

©repair工dint,

@repairNamenchar(10),

@repairtelnchar(10),

©productvarchar(50)z

@customervarchar(20),

@datesmalldatetime,

@customertelnchar(10)

AS

UPDATE[Repair_info]SET

[repairName]=@repairNamez[repairtel]=@repairtelz[product]=

©product,[customer]=©customer,[date]=©date,[customertel]=

Qcustomertel

WHERErepairId=@repairid

CREATEPROCEDURERepair_info_Delete

©repair工dint

AS

DELETE[Repair_info]

WHERErepairld=@repairid

CREATEPROCEDURERepair_info_GetModel

©repair工dint

AS

SELECT

repairld,repairNamezrepairtel,productcustomer,date,customertel

FROM[Repair_info]

WHERErepairId=@repairId

CREATEPROCEDURERepair_info_GetList

AS

SELECT

repairld,repairNameArepairtel,productAcustomer,date,customertel

FROM[Repair_info]

CREATEPROCEDURESeller_info_Exists

@namevarchar(50)

AS

DECLARE@TempIDint

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论