1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。课程设计说明书题目医院数据库管理系统系(部)计算机科学与技术系专业(班级)姓名学号指导教师起止日期 .5.16- .5.27课程设计任务书课程名称: 数据库系统原理课程设计设计题目: 工厂数据库管理系统、 医院数据库管理系统、 图书馆数据库管理系统( 任选一题) 已知技术参数和设计要求: 需求说明及要求题目: 医院数据库管理系统( 难度系数1.0) 某医院病房计算机管理系统中需要如下信息: 科室: 科室名、 科室地址、 电话、 主任姓名病房: 病房号、 床位号、 所属科室名医生: 工作证号、 姓名、 性别、 年龄、 职称、 所属科室
2、名病人: 病历号、 姓名、 性别、 诊断、 主管医生、 病房号其中, 一个科室有多个病房、 多个医生; 一个病房只能属于一个科室; 一个医生只能属于一个科室, 但可负责多个病人的诊治; 一个病人的主管医生只有一个。各阶段具体要求: 1、 需求分析阶段l 定义数据项的含义和取值2、 概念结构设计阶段l 画出实体模型E-R图3、 逻辑结构设计阶段l 将实体模型转化为关系模型l 给出每个关系的主关键字和函数依赖集l 分析你所设计的关系数据库模式是否属于3NF4、 物理设计阶段l 确定所有字段的名称、 类型、 宽度、 小数位数及完整性约束 l 确定数据库及表的名称及其组成 l 确定索引文件和索引关键字
3、5、 数据库安全及维护设计阶段l 设计一个适合的数据库安全策略( 用户身份认证、 访问权限、 视图) 6、 实施阶段l 要求所有操作必须在查询分析器中用SQL语句或系统存储过程完成。设计工作量: ( 1) 软件设计: 完成问题陈述中所提到的所有需求功能。( 2) 论文: 要求撰写不少于3000个文字的文档, 详细说明各阶段具体要求。工作计划: 安排两周时间进行课程设计, 软件开发步骤如下, 第一周完成14, 第二周完成58, 论文同步进行; 1)分组, 定题目2)需求分析3)概念结构设计4)逻辑结构设计5)物理设计6)数据库安全及维护设计7)数据库上机实现8)答辩计划时间指导老师学生注意事项n
4、 提交文档 长沙学院课程设计任务书( 每学生1份) 长沙学院课程设计论文( 每学生1份) 长沙学院课程设计鉴定表( 每学生1份) 指导教师签名: 日期: 教研室主任签名: 日期: 系主任签名: 日期: 长沙学院课程设计鉴定表姓名学号专业软件工程班级设计题目医院数据库管理系统指导教师指导教师意见: 评定等级: 教师签名: 日期: 答辩小组意见: 评定等级: 答辩小组长签名: 日期: 教研室意见: 教研室主任签名: 日期: 系( 部) 意见: 系主任签名: 日期: 说明课程设计成绩分”优秀”、 ”良好”、 ”及格”、 ”不及格”四类; 摘 要本题是用SQL语言的实现的图书馆管理系统, 创立一个图书
5、馆管理系统, 实现增加, 删除, 修改等各种用途。本题设计的三张表, 所有操作都在查询分析器中用SQL语句或系统存储过程完成。关键词: SQL语言, 医院数据库管理系统, 查询分析器目 录第一章 设计内容与要求9第二章 设计说明101需求分析102数据库逻辑模型设计103属性的取值104数据库设计125关系图157数据库的E-R图218数据库的实体模型转化为关系模型229数据库的函数依赖2210 流程图2311.总结24参考文献25 实验内容建表: create table Office( O_no char(10) not null, O_name char(20) not null, O_
6、address char(40), O_phone int , Odir_no char(10) not null, primary key(O_no);create table Ward( W_no char(10) not null, Bed_no char(10) not null, O_no char(10) references Office(O_no), primary key(W_no,Bed_no);create table Doctor( D_no char(10) not null, D_name char(20) not null, D_sex char(10), D_c
7、lass char(20), D_age int, O_no char(10) references Office(O_no), primary key(D_no);create table Patient( R_no char(10) not null primary key, P_age int, P_name char(20), P_sex char(10), W_no char(10) not null, Bed_no char(10)not null, foreign key(W_no,Bed_no) references Ward(W_no,Bed_no);create table
8、 Record( R_no char(10) not null, In_time char(20), Out_time char(20), diagnsis char(100), MD_no char(10) not null, W_no char(10) not null, Bed_no char(10) not null, primary key(R_no);create table Cure( D_no char(10) not null, R_no char(10) not null, C_time char(20),);insert into Office(O_no,O_name,O
9、_address,O_phone,Odir_no)values(01,内科,F1,3600,D001)insert into Office(O_no,O_name,O_address,O_phone,Odir_no)values(02,外科,F2,3601,D002)insert into Office(O_no,O_name,O_address,O_phone,Odir_no)values(03,精神科,F3,3602,D003)insert into Office(O_no,O_name,O_address,O_phone,Odir_no)values(04,眼科,F4,3603,D004
10、)insert into Ward(W_no,Bed_no,O_no)values(1,001,01)insert into Ward(W_no,Bed_no,O_no)values(1,002,01)insert into Ward(W_no,Bed_no,O_no)values(2,001,02)insert into Ward(W_no,Bed_no,O_no)values(2,002,02)insert into Ward(W_no,Bed_no,O_no)values(3,001,03)insert into Ward(W_no,Bed_no,O_no)values(3,002,03
11、)insert into Ward(W_no,Bed_no,O_no)values(4,001,04)insert into Ward(W_no,Bed_no,O_no)values(4,002,04)insert into Ward(W_no,Bed_no,O_no)values(4,003,04)insert into Ward(W_no,Bed_no,O_no)values(4,004,04)insert into Patient(R_no,P_name,P_sex,P_age,W_no,Bed_no)values(1111,张一,男,35,1,001)insert into Patie
12、nt(R_no,P_name,P_sex,P_age,W_no,Bed_no)values(1112,张二,男,26,1,002)insert into Patient(R_no,P_name,P_sex,P_age,W_no,Bed_no)values(1113,张三,女,15,2,002)insert into Patient(R_no,P_name,P_sex,P_age,W_no,Bed_no)values(1114,张四,男,10,4,003)insert into Patient(R_no,P_name,P_sex,P_age,W_no,Bed_no)values(1115,张五,
13、女,41,4,004)insert into Doctor(D_no,D_name,D_sex,D_age,D_class,O_no)values(D001,王一,男,53,主任医师,01)insert into Doctor(D_no,D_name,D_sex,D_age,D_class,O_no)values(D002,王二,男,46,主任医师,02)insert into Doctor(D_no,D_name,D_sex,D_age,D_class,O_no)values(D003,王三,女,50,主任医师,03)insert into Doctor(D_no,D_name,D_sex,
14、D_age,D_class,O_no)values(D004,王四,女,45,主任医师,04)insert into Doctor(D_no,D_name,D_sex,D_age,D_class,O_no)values(D005,王五,男,23,主治医师,01)insert into Doctor(D_no,D_name,D_sex,D_age,D_class,O_no)values(D006,王六,男,31,主治医师,01)insert into Doctor(D_no,D_name,D_sex,D_age,D_class,O_no)values(D007,王七,女,29,主治医师,02)i
15、nsert into Doctor(D_no,D_name,D_sex,D_age,D_class,O_no)values(D008,王八,男,35,主治医师,04)insert into Record(R_no,In_time,Out_time,diagnsis,MD_no,W_no,Bed_no)values(1111, .3.6, .4.3,高血压,D006,1,001)insert into Record(R_no,In_time,Out_time,diagnsis,MD_no,W_no,Bed_no)values(1112, .4.1, .4.8,肺炎,D005,1,002)inse
16、rt into Record(R_no,In_time,Out_time,diagnsis,MD_no,W_no,Bed_no)values(1113, .4.1, .4.21,心脏病,D007,2,002)insert into Record(R_no,In_time,Out_time,diagnsis,MD_no,W_no,Bed_no)values(1114, .4.5, .4.10,角膜炎,D004,4,003)insert into Record(R_no,In_time,Out_time,diagnsis,MD_no,W_no,Bed_no)values(1115, .5.1, .
17、5.10,白内障,D008,4,004)查询: select P_name as 病人姓名,In_time as 住院时间,Out_time as 出院时间from Patient,Recordwhere P_name=张四and Patient.R_no=Record.R_noselect D_name as 主治医生from Doctor,Recordwhere D_no=D006 and R_no=1111select P_name as 姓名,P_age as 年龄,In_time as 住院时间,Out_time as 出院时间from Patient,Recordwhere P_n
18、ame=张一 and Patient.R_no=Record.R_noselect avg(P_age) as 病人平均年龄from Patientselect avg(D_age) as 医生平均年龄from Doctorselect count(Bed_no) as 床位数from Ward修改信息: select D_namefrom Doctorwhere D_no=D002update Doctorset D_name=王九where D_no=D002select D_namefrom Doctorwhere D_no=D002select D_namefrom Doctorwhe
19、re D_no=D006update Doctorset D_name=王十where D_no=D006select D_namefrom Doctorwhere D_no=D006删除信息: delete from Wardwhere W_no=2 and Bed_no=002select *from Warddeletefrom Doctorwhere D_no=D008select *from Doctor增加信息: insert Ward(W_no,Bed_no,O_no)values(5,001,04)select *from Wardinsert Doctor(D_no,D_na
20、me,D_sex,D_age,D_class,O_no)values(D015,小小,女,21,普通医生,03)select *from Doctor创立视图: create view V_doctorasselect D_no,D_name,D_sex,O_nofrom Doctorselect D_no,D_name,D_sex,O_nofrom V_doctorwhere D_no=D003create view V_officeasselect Office.O_no,O_name, D_namefrom Office,Doctorwhere Odir_no=D_noselect *f
21、rom V_officewhere O_no=01创立触发器: create trigger T_patient_1on Patientfor updateasif update(W_no) begin declare newW_no char(10),oldW_no char(10) select newW_no=W_no from inserted select oldW_no=W_no from deleted update Record set W_no=newW_no where W_no=oldW_no endupdate Patientset W_no=3where R_no=1
22、113创立登录信息: use HOSPITALexec sp_addlogin doctor,1234,HOSPITALexec sp_grantdbaccess doctor,HOSPITALuse HOSPITALgrant all on Patient to HOSPITALuse HOSPITALexec sp_addlogin patient,12345,HOSPITAL-exec sp_grantdbaccess patient,hospital_1use HOSPITALexec sp_grantdbaccess patient,HOSPITAL1use HOSPITALgran
23、t select on Patient to HOSPITAL1E/R图: 科室病房病人医生性别职称姓名所属科室名工作证号所属科室医生床位号病房号科室地址电话科室名主任姓名年龄病历号病床号诊断性别姓名病房号属于属于属于属于总结课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异, 当今计算机应用在生活中能够说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的, 而数据库又是最常见, 功能最强大的一种高级语言, 因此做好数据库语言课程设计是十分必要的。 回顾起此次课
24、程设计, 至今我仍感慨颇多, 的确, 自从拿到题目到完成整个编程, 从理论到实践, 在整整两周的日子里, 能够学到很多很多的东西, 同时不但能够巩固了以前所学过的知识, 而且学到了很多在书本上所没有学到过的知识。经过这次课程设计使我们懂得了理论与实际相结合是很重要的, 只有理论知识是远远不够的, 只有把所学的理论知识与实践相结合起来, 从理论中得出结论, 才能真正为社会服务, 从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题, 能够说得是困难重重, 难免同时在设计的过程中发现了自己的不足之处, 对一些前面学过的知识理解得不够深刻, 掌握得不够牢固, 比如说SQL语句, 经过这次课程设计之后, 我等于把前面所学过的知识又重新温故了一遍。但编程过程中我也得到了很多, 不但又捡起了以前的知识, 还学到了一些新知识。学会了创立数据库, 学会了创立数据库多表之间的关系, 避免多次写下繁琐的代码。而且在每完成一个功能而且运行成功时, 那种喜悦无以言说。而且在编程的过程中, 有些问题会问道同学, 在交流的过程中增进了彼此的感情。参考文献Jeffrey D.ullman Jennifer Widom 数据库系统基础教程 机械工业出版社