大型数据库课程设计文档格式.docx

上传人:b****6 文档编号:21628739 上传时间:2023-01-31 格式:DOCX 页数:16 大小:607.09KB
下载 相关 举报
大型数据库课程设计文档格式.docx_第1页
第1页 / 共16页
大型数据库课程设计文档格式.docx_第2页
第2页 / 共16页
大型数据库课程设计文档格式.docx_第3页
第3页 / 共16页
大型数据库课程设计文档格式.docx_第4页
第4页 / 共16页
大型数据库课程设计文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

大型数据库课程设计文档格式.docx

《大型数据库课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《大型数据库课程设计文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

大型数据库课程设计文档格式.docx

岗位(岗位编号、岗位名称、是否作废)

民族实体:

民族(民族编号、民族名称、是否作废)

部门实体:

部门(部门编号、部门名称、负责人、上级部门、地址、电话)

员工实体:

员工(员工编号、员工名称、所属部门、所属岗位、所属民族、性别、出生日期、工作日期、照片、简历)

  ②定义联系:

员工实体和岗位实体、民族实体、部门实体都是M:

1关系。

员工管理系统的E-R模型图

3.详细设计 

根据E-R设计的数据表如下:

1岗位实体:

Createtabledcpost

(PostNochar(3)primarykey,

postnamevarchar2(30),

ifvoidnumber

(1)default0constraintDCPost_Chk2check(ifvoid=0orifvoid=1)

);

2民族实体:

createtabledcnation(

nationnochar(3)primarykey,

nationnamevarchar2(30),

ifvoidnumber

(1)default0constraintDCNation_Chk1check(ifvoid=0orifvoid=1)

3部门实体:

Createtabledepartment

(DepartmentNochar(3)primarykeynotnull,

denamevarchar2(30),

sectionvarchar2(30),

divisionvarchar2(30),

addressvarchar2(30),

telephonevarchar2(30)

);

④员工实体:

CreatetableEmployee

(EmployeeNovarchar2(8)primarykeynotnull,

EmployeeNamevarchar2(30),

DepartmentNochar(3),

PostNochar(3),

NationNochar(3),

sexvarchar2

(2),

birthdaydate,

workdatedate,

photovarchar2(200),

resumevarchar2(200),

constraintemp_depforeignkey(DepartmentNo)referencesdepartment(DepartmentNo),

constraintemp_postforeignkey(PostNo)referencesdcpost(PostNo),

constraintemp_nationforeignkey(NationNo)referencesdcnation(NationNo)

4.设计数据字典,触发器,存储过程设计。

①数据字典:

管理信息系统会涉及大量的静态数据,如商品单位、所属民族、所在岗位、这些数据,其数据的组织结构基本一致,有少量的数据可能今后不用,为了便于查询,可以为静态数据设置一个是否作废的属性,该属性用于历史数据查询和统计,而在事务处理中,已作废的数据不被检索和使用。

岗位字典DCPost:

名称

数据类型

大小

比例

不为空

默认值

约束

POSTNO

CHAR

3

主键

POSTNAME

VARCHAR2

30

IFVOID

NUMBER

1

取0或1

民族字典dcnation:

NATIONNO

NATIONNAME

部门字典department:

DEPARTMENTNO

DENAME

SECTION

DIVISION

ADDRESS

TELEPHONE

员工字典employee:

EMPLOYEENO

8

EMPLOYEENAME

外键(参照department表)

外键(参照dcpost表)

外键(参照dcnation表)

SEX

2

BIRTHDAY

DATE

WORKDATE

PHOTO

200

RESUME

设计触发器

为了保证员工编号的正确性,为员工表的插入和修改设计触发器。

④触发器,存储过程清单

(1)插入触发器代码:

rem*****************************************************

rem**创建触发器

rem**功能:

当插入员工编号时,编号必须满足为数字

rem******************************************************

CREATEorREPLACETRIGGEREmployeeIns

beforeinsert

ONEmployee

FOReachrow

declare

myErrorEXCEPTION;

/*出错处理*/

varLeftchar(4);

/*编号前4位*/

varMidchar(4);

/*编号第5位*/

varRightchar(3);

/*编号后3位*/

inumber;

begin

ifLENGTH(:

new.EmployeeNo)!

=8then

RAISEmyError;

endif;

varLeft:

=SUBSTR(:

new.EmployeeNo,1,4);

varMid:

new.EmployeeNo,5,1);

varRight:

new.EmployeeNo,6,3);

ifvarMid!

='

-'

then

foriin1..4

loop

if(SUBSTR(varLeft,i,1)<

'

0'

orSUBSTR(varLeft,i,1)>

9'

)then

exit;

endloop;

foriin1..3

if(SUBSTR(varRight,i,1)<

orSUBSTR(varRight,i,1)>

EXCEPTION

WHENmyError

THEN

:

new.EmployeeNo:

=NULL;

end;

(2)修改触发器代码:

功能:

当修改编号时,编号必须满足为数字

 rem**创建触发器

CREATEorREPLACETRIGGEREmployeeUpdate

beforeupdateofEmployeeNo

=:

old.EmployeeNo;

new.EmployeeName:

old.EmployeeName;

new.DepartmentNo:

old.DepartmentNo;

new.sex:

old.sex;

new.birthday:

old.birthday;

new.workdate:

old.workdate;

new.NationNo:

old.NationNo;

new.PostNo:

old.PostNo;

设计存储过程:

对员工编号采用存储过程的方法输入

----------------------创建产生员工编号过程-------------------

rem*****************************************************

rem**产生员工编号过程

根据输入的年份,自动产生员工编号

rem**输入参数:

sYear年份

rem**输出参数:

returnEmployeeNo员工编号

CREATEorREPLACEPROCEDUREproEmployeeNo(sYear 

varchar2,returnEmployeeNo 

OUTvarchar2)

is

xnumber;

/*得到员工编号后三位的流水号*/

varEmployeeNo1varchar2(8);

/*某年份的最大员工编号*/

varEmployeeNo2varchar2(8);

/*新的员工编号*/

varEmployeeNo1:

='

;

selectNVL(max(EmployeeNo),'

)intovarEmployeeNo1

fromEmployee

whereEmployeeNolikesYear||'

%'

ifvarEmployeeNo1='

then/*无该年份的员工,编号从001开始*/

varEmployeeNo2:

=sYear||'

-001'

else

x:

=to_number(SUBSTR(varEmployeeNo1,6,3))+1;

ifx<

10thenvarEmployeeNo2:

-00'

||ltrim(to_char(x));

elsifx<

100thenvarEmployeeNo2:

-0'

returnEmployeeNo:

=varEmployeeNo2;

endproEmployeeNo;

插入数据:

------------------------插入的数据--------------------

--------岗位表

Insertintodcpost(PostNo,postname,ifvoid)

Values('

1'

'

生产员'

2'

销售员'

-----------民族表

Insertintodcnation(NationNo,nationname,ifvoid)

汉族'

蒙古'

-----------部门表

Insertintodepartment(DepartmentNo,dename,section,division,address,telephone)Values('

销售部'

市场部'

小宝'

安B710'

2475089'

小猫'

2475088'

---------------员工表

InsertintoEmployee(EmployeeNo,EmployeeName,DepartmentNo,PostNo,NationNo,sex,birthday,workdate,photo,resume)

Values('

2010-001'

小王'

男'

date'

1988-02-01'

2010-02-01'

001.jpg'

001.doc'

insertintoEmployee(EmployeeNo,EmployeeName,DepartmentNo,PostNo,NationNo,Sex,EmployeeDate,WorkDate,Photo,Resume)

values(:

id,'

小风'

1979-02-01'

2006-02-01'

002.jpg'

002.doc'

5.调试与测试:

测试插入触发器:

如果插入员工表的编号不是"

****-***"

格式会出现错误,插入不进数据:

如果是数字则能正常插入:

select*fromemployee

测试修改触发器:

如果当修改编号时,编号不为数字则修改不了编号:

如果当修改编号时,编号格式正确则能正常修改编号:

测试产生员工编号过程:

variableidvarchar2(10);

execproEmployeeNo('

2008'

:

id);

printid;

insertintoEmployee(EmployeeNo,EmployeeName,DepartmentNo,PostNo,NationNo,Sex,Birthday,WorkDate,Photo,Resume)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1