数据库课程设计大作业.docx
《数据库课程设计大作业.docx》由会员分享,可在线阅读,更多相关《数据库课程设计大作业.docx(18页珍藏版)》请在冰豆网上搜索。
数据库课程设计大作业
《数据库原理》课程设计报告
学号:
200810401143
姓名:
罗宏波
班级:
自动化081
昆明理工大学信息工程与自动化学院
2010年12月
<一>前言
一、课程设计目的:
1.加深对讲授内容的理解
《数据库原理及应用》中有关数据库技术的基本理论、基本概念、设计与实现的方法和阶段性知识,光靠课堂讲授既枯燥无味又难以记住,但它们都很重要,要想熟练掌握,必须经过大量实践环节加深对它们的理解。
2.通过课程设计,掌握数据库系统设计与开发的方法及步骤
数据库是一门应用性很强的学科,开发一个数据库系统需要集理论、系统和应用三方面为一体,以理论为基础,以系统(DBMS)作支柱,以应用为目的,将三者紧密结合起来。
同时结合实际需要开发一个真实的数据库系统,对于较大型的系统可多人一起完成,但无论如何都应完成数据库的需求分析、数据的分析与建模、数据库的建立、数据库的开发与运行等全部过程。
在此过程中将所学的知识贯穿起来,达到能够纵观全局,分析、设计具有一定规模的题目要求,基本掌握数据库系统设计与开发的基本思路和方法并且做到对知识的全面掌握和运用。
3.培养学生自学以及主动解决问题的能力
通过本次设计,使同学能够主动查阅与数据库相关资料,掌握一些课堂上老师未曾教授的知识,从而达到培养学生自学以及主动解决问题的能力的目的。
二、课程设计基本要求:
1.课程设计应由学生本人独立完成,严禁抄袭,如果发现最后的设计基本相同者(系统需求分析与功能设计、数据库的概念设计、逻辑设计,数据库的实现与运行等内容基本相同),一经验收教师认定其抄袭行为,则成绩均为不及格。
2.掌握所学的基础理论知识,数据库的基本概念、基本原理、关系数据库的设计理论、设计方法等。
熟悉数据建模工具与数据库管理系统SQLServer软件的使用。
3.按时上机调试,认真完成课程设计。
4.认真编写课程设计报告。
三、意义:
数据库技术是近年来计算机科学技术中发展最快的领域之一,它已成为计算机信息系统与应用系统的核心技术和重要基础。
《数据库原理及应用》课程设计重视实践环节,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。
<二>需求分析
工资管理系统包括如下功能:
(结构图如下)
工资管理系统功能结构图
(1)经理室:
管理人员;
(2)财务科:
财务人员;
(3)技术科:
技术人员;
(4)销售科:
销售人员。
<三>数据库概念结构设计
工资管理系统:
(1)在工资管理局部应用中主要涉及的实体的属性:
Ø科室(科室号,科室名)
Ø员工(员工号,员工名,性别,年龄,职称,科室代码)
Ø工资(员工号,基本工资,奖金,福利,住房公积金,失业保险,实发工资,月份)
(2)实体间的联系:
Ø公司与科室之间是1:
m(m≥0)的联系;
Ø科与员工之间是m:
n的联系;
Ø管理部门与员工之间是1:
n的关系;
Ø员工与工资之间是1:
1的联系。
(3)工资管理系统的E-R图:
<四>数据库逻辑结构设计
(1)逻辑结构设计图型描述:
表1KESHI表结构
字段名
数据类型
字段长度
允许空否
字段说明
Kno
Char
2
NotNull
科室代码,主键,
Kname
Varchar
10
NotNull
科室名称
表1WORKER表结构
字段名
数据类型
字段长度
允许空否
字段说明
Wno
Char
6
NotNull
工号,主键
Wname
Varchar
10
NotNull
姓名
Sex
Char
2
NotNull
性别
Age
INT
2
NotNull
年龄
Prof
Varchar
10
NotNull
职称
Kno
Char
4
NotNull
(单位)科室代码,外键(参照KESHI表)
表3SALARY表结构
字段名
数据类型
字段长度
允许空否
字段说明
Wno
Char
6
NotNull
工号,主键,
外键(参照WORKER表)
Wbase
Dec
6
Null
基本工资
Wbonus
Dec
6
NotNull
奖金
Wwelfare
Dec
6
NotNull
福利
WG
Dec
6
NotNull
住房公积金
WL
DEC
6
NOTNULL
失业保险
Wfact
Dec
6
Null
实发工资=基本工资+奖金+福利
—失业保险—住房公积金
Month
Int
2
NotNull
月份
表4表KESHI中的数据
Kno
Kname
01
经理室
02
财务科
03
技术科
04
销售科
表5表WORKER中的数据
Wno
Wname
Sex
Age
Prof
Kno
000001
罗宏波一
男
21
经理
01
000002
罗宏波二
女
22
副经理
01
000003
罗宏波三
男
23
工程师
03
000004
罗宏波四
女
24
销售员
04
000005
罗宏波五
男
25
工程师
03
000006
罗宏波六
女
26
会计师
02
000007
罗宏波七
男
27
工程师
03
000008
罗宏波八
女
28
销售员
04
000009
罗宏波九
男
29
工程师
03
000010
罗宏波十
女
29
工程师
03
表6表SALARY中的数据
Wno
Wbase
Wbonus
Wwelfare
WG
WL
Wfact
month
000001
3000
300
100
50
50
3300
1
000002
3000
300
100
50
50
3300
1
000003
2500
200
100
50
50
2700
1
000004
2500
200
100
50
50
2700
1
000005
2500
200
100
50
50
2700
1
000006
2500
200
100
50
50
2700
1
000007
2500
200
100
50
50
2700
1
000008
2500
200
100
50
50
2700
1
000009
2500
200
100
50
50
2700
1
000010
2500
200
100
50
50
2700
1
逻辑结构设计图
(2)逻辑结构设计列表描述:
序号
表名
中文名
作用
1
KESHI
科室名称表
存储科室信息
2
WORKER
员工基本信息表
存储员工基本信息
3
SALARY
工资表
存储员工工资信息
数据库中各表的作用
<五>数据库实现
/*createdatabaseGONGZIGUANLI*/
/*createtableKESHI
(
Knochar
(2)notnull,
Knamevarchar(10)notnull,
primarykey(Kno)
);*/
/*createtableWORKER
(
Wnochar(6)notnull,
Wnamevarchar(10)notnull,
Sexchar
(2)notnull,
Ageintnotnull,
Profvarchar(10)NOTnull,
Knochar
(2)notnull,
primarykey(Wno),
foreignkey(Kno)referencesKESHI(Kno)
);*/
/*createtableSALARY
(
Wnochar(6)notnull,
Wbasedec(6)notnull,
Wbonusdec(6)NOTNULL,
Wwelfaredec(6)NOTNULL,
WGdec(6)NOTNULL,
WLdec(6)NOTNULL,
Wfactas(Wbase+Wbonus+Wwelfare-WG-WL),
monthintnotnull,
primarykey(Wno),
foreignkey(Wno)referencesWORKER(Wno)
);*/
/*insertintoKESHI(Kno,Kname)values('01','经理室');
insertintoKESHI(Kno,Kname)values('02','财务科');
insertintoKESHI(Kno,Kname)values('03','技术科');
insertintoKESHI(Kno,Kname)values('04','销售科');*/
/*insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000001','罗宏波一','男','21','经理','01');
insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000002','罗宏波二','女','22','副经理','01');
insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000003','罗宏波三','男','23','工程师','03');
insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000004','罗宏波四','女','24','销售员','04');
insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000005','罗宏波五','男','25','工程师','03');
insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000006','罗宏波六','女','26','会计师','02');
insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000007','罗宏波七','男','27','工程师','03');
insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000008','罗宏波八','女','28','销售员','04');
insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000009','罗宏波九','男','29','工程师','03');
insertintoWORKER(Wno,Wname,Sex,Age,Prof,Kno)values('000010','罗宏波十','女','29','工程师','03');*/
/*
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000001','3000','300','100','50','50','1');
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000002','3000','300','100','50','50','1');
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000003','2500','200','100','50','50','1');
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000004','2500','200','100','50','50','1');
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000005','2500','200','100','50','50','1');
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000006','2500','200','100','50','50','1');
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000007','2500','200','100','50','50','1');
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000008','2500','200','100','50','50','1');
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000009','2500','200','100','50','50','1');
insertinto
SALARY(Wno,Wbase,Wbonus,Wwelfare,WG,WL,month)values('000010','2500','200','100','50','50','1');*/
/*selectKno,count(Wno)
FROMWORKER
GroupbyKno;*/
/*selectKESHI.Kno,Kname,sum(Wfact)
FROMSALARY,KESHI,WORKER
WHEREKESHI.Kno=WORKER.KnoANDWORKER.Wno=SALARY.Wno
GroupbyKESHI.Kno,Kname;*/
/*selectProf,count(Wno)
FROMWORKER
GroupbyProf;*/
/*selectWORKER.Prof,sum(Wfact)
FROMKESHI,WORKER,SALARY
WHEREWORKER.Wno=SALARY.Wno
GroupbyWORKER.Prof;*/
/*deletefrom
SALARYwhereWno='000008';
deletefrom
WORKERwhereWno='000008';*/
/*selectWno,Wname,Sex,Age,Prof,KnofromWORKER;*/
/*selectdistinctproffromWORKER*/
/*selectWno,Wbase,Wbonus,Wfact,monthfromSALARY
whereWnobetween'000003'and'000009'orderbyWfactasc;*/
/*SELECT*
fromWORKER,SALARY
WHEREWORKER.Wno=SALARY.Wnoandmonth=1;*/
<六>运行结果
设计题目:
工资管理系统
1)某单位现有1000名员工,其中有管理人员、财务人员、技术人员和销售人员。
2)该单位下设4个科室,即经理室、财务科、技术科和销售科。
3)工资由基本工资、福利补贴和奖励工资构成,失业保险和住房公积金在工资中扣除。
4)工的基本资料有姓名、性别、年龄、单位和职业(如经理、工程师、销售员等)。
5)每月个人的最高工资不超过3000元。
工资按月发放,实际发放的工资金额为工资减去扣除。
6)实现按照科室录入个人的基本资料、工资和扣除金额的数据。
7)计算个人的实际发放工资。
8)按科室、职业分类统计人数和工资金额。
9)能够删除辞职人员的数据。
10)其它
<七>数据库设计经验教训总结
“数据库技术是近年来计算机科学技术中发展最快的领域之一,它已成为计算机信息系统与应用系统的核心技术和重要基础。
《数据库原理及应用》课程设计重视实践环节,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。
”
“数据库是数据管理的最新技术,是计算机科学的重要分支。
今天,信息资源已成为各个部门的重要财富和资源。
建立一个满足各个部门信息处理要求的行之有效的信息系统也成为一个企业或组织的生存和发展的重要条件。
因此,作为信息系统的核心和基础的数据库技术得到越来越广泛的应用,从小型单项事务处理系统到大型信息系统,从联机事务处理到联机分析处理,从一般企业管理到计算机辅助设计与制造,计算机集成制造系统、电子政务、电子商务、地理信息系统等等,越来越多新的应用领域采用数据库技术来存储和处理信息资源。
对于一个国家来说,数据库的建设规模、数据库信息量的大小和使用频度已成为衡量这个国家信息化程度的重要标志。
因此,数据库课程不仅是计算机科学与技术专业、信息管理专业的重要课程,也是许多非计算机专业的选修课程。
”
选定题目:
工资管理系统。
根据数据库实验,完成此次数据库的设计。
首先,在实验室里熟悉SQL2000软件的操作环境,并完成数据库上机实验内容,在此基础上,设计“工资管理系统”就更容易啦,创建表,插入员工数据,更新数据,删除数据,只要熟悉操作环境,认真完成实验内容,设计的时候便得心应手;掌握基本理论知识,搞清楚每一个操作的来龙去脉,原因及其结果,出现错误,学会用理论知识分析其原因,并加以改正,了解原因之后,有利于加深对数据库的理解,对设计步骤更加熟悉。
进行需求分析,概念设计,逻辑设计,物理设计,最终实现数据库的设计。
工资管理系统:
一个公司或企业需要进行员工的工作管理,工资管理系统能够有效地完成管理任务,大大提高了企业或公司的办公效率。
一个公司里必定有几个科室,我设计的工资管理系统,此公司下属四个科室,包括经理室、财务科、技术科、销售科,经理室有经理和副经理,财务科有财务人员,技术科有技术人员,销售科有销售人员,不同的科室,不同的人员有不同的职称,包括经理、副经理、工程师、会计师、销售员;员工的资料包括工号、姓名、性别、年龄、职称、科室代码,科室包括科室代码、科室名,员工的工资包括基本工资、奖金、福利、住房公积金、失业保险、实发工资、月份。
在设计数据库的时候,先在SQL环境下输入源代码,创建“GONGZIGUANLI”数据库,插入表KEHSI、WORKER、SALARY,打开企业管理器,确认是否已插入三个表,下一步是插入科室的数据,员工的基本信息,员工的工资信息,执行完插入语句之后,打开企业管理器,确认是否完成插入,确认信息之后,继续操作下一步;初步建好数据库之后,开始测试数据库的功能,按科室、职业分类统计人数和工资金额,能够删除辞职人员的数据,查询员工的信息,查询工资的发放情况。
完成这些基本操作之后,一个“工资管理系统”基本成型,就能完成一个公司或企业的工资管理。
再设计数据库的时候,难免会遇到一些问题,例如,插入员工的数据时候,数据插不进去;删除员工的数据的时候,删除错误等等。
经过分析,出现这些错误的原因大多数是编写代码出错,插入语句或删除语句的编写错误。
解决这些出现的问题,必须充分理解数据库的设计理论知识,知道出错的原因,才能有效地解决问题,就像老师讲的“皮与毛”的关系,对加深对数据库的理解很有帮助,对解决删除时候出现的问题也很有帮助。
完成数据库的设计,总结经验教训,无论设计数据库还是设计其他东西,首先,必须充分理解设计内容理论知识,理论知识是基础;其次,多进行实际操作,比如认真完成上机实验,只有多操作,才能发现问题,解决问题;最后,多问问题,多思考,出现问题,多向老师请教,自己多思考,认真解决。
在老师和同学的帮助下,我最终完成了“工资管理系统”数据库的设计,在此,衷心感谢给予我帮助的同学和老师!