1、中国石油大学(北京)远程教育学院期末考 试数据库课程设计课程名称数据库课程设计设计题目房产管理系统学习中心北京直属 学号 087597 姓名代文波2018年6月目录1设计时间12设计目的13设计任务14设计内容14。1需求分析14。2系统设计24.2。1概念结构设计24。2.2逻辑结构设计74。3数据库表空间和表结构设计84。4系统实施104。5创建其它数据库对象125 总结与展望131设计时间2018年5月15日2018年6月1日2设计目的数据库原理及应用课程设计是软件工程专业集中实践性环节之一。其目的在于加深对数据库基础理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数
2、据库解决实际问题的能力,最终实现对于给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。同时,此次设计对于同学将来的毕业设计和具体工作实践将有重要的意义。近年来,随着计算机技术的发展和电脑的普及,特别是企业上网工程和办公自动化的进展迅猛,越来越多的企业在管理部门纷纷采用MIS通过办公室的一台PC机完成复杂的日常业务处理,从而减少工作量提高效率。在这样的背景下,更多的国有大中型企业从中受益。通常这样的企业存在部门多,业务杂,数据流量大的特点,如果在各个部门使用一个针对性强,操作简单而数据处理功能强大的MIS,无疑是能
3、起到事半功倍的效果。3设计任务房产管理系统应具有分房、调房、退房和咨询统计功能,同时应能对房产信息、住房信息、住户基本信息及住户家庭信息等进行管理,并建立住房和住户之间的对应关系。对这些信息应能进行方便快捷的新增、修改和删除等操作,另外还能快速找到所需的信息,这个就是需要查询功能4设计内容房产管理系统。系统主要功能如下:1。分房,调房,退房询,咨统计2.用户可以查询房产信息,住房信息,住户信息,住户家庭信息3.删除,修改,新增信息4.1需求分析房产科把用户申请表(按照统一的格式由用户填写)输入系统后,系统首先检查申请表的合法性,对不合法的申请表系统拒绝接受,对合法的申请表根据类型分别进行处理。
4、如果是分房申请,则根据申请者的情况计算其分数,当分数高于阈值分数时,按分数高低将申请单插到分房队列的适当位置。每月最后一天进行一次分房活动,从空房文件中读出空房信息,把好房优先分配给排在分房队列前面的符合该登记住房条件的申请者,从空房文件中删除掉这个房号的信息,从分房队列中删除申请单,并把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租并将算出的房租写到房租文件中。如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中查找属于给等级的空房,退掉原住房,再进行与分房类似的处理。如果是退房申请,则从住房文件和房租文件中删除有关的信息,再把此房号的信息写到空房
5、文件中。住户可向系统询问目前分房的阈值分数,居住某类房屋的条件,某房号的单位面积房租等信息。房产科可以要求系统打印出住房情况的统计表,或更改某类房屋的居住条件、单位面积房租等。4。2系统设计4.2。1 概念结构设计(1)用户用 户户 主职 称家庭人数房 号住房分数部 门图41用户E-R图(2)申请表 申请表 户主分房申请调房申请退房申请图42申请表ER图(3)房产科分配住房 住 房分 配房 产 科家庭人口住房面积住房分数户 主房 号 m1图4-3 房产科分配住房ER图一个房产科分配多套住房(1:m)一套住房只被一个房产科分配(1:1)(4)管理调房房产科管 理 调房要求面积原房号部 门原面积住
6、房分数家庭人口m1图44房产科管理调房E-R图一个房产科管理多个调房请求(1:m)一个调房请求由一个房产科管理(1:1)(5) 管理-分房房产科管 理 分房部 门家庭人口 职 称住房分数要求面积1m图45 房产科管理分房ER图一个房产科管理多个分房请求(1:m)一个分房请求由一个房产科管理(1:1)(6)管理退房房产科管 理 退房部 门房 号1m图4-6 房产科管理退房ER图一个房产科管理多个退房请求(1:m)一个退房请求由一个房产科管理(1:1)(7)视图集成所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个
7、完整、一致的数据库概念结构。1)确定公共实体类型为了给多个局部ER模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。2)局部ER模式的合并合并的原则是:首先进行两两合并;先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。3)消除冲突冲突分为三类:属性冲突、结构冲突、命名冲突。4)全局ER模式的优化在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余
8、。综上所述,“图书管理系统的全局ER模式如图4。3。7所示: 用 户 填 写 申请表 房产科分 配 住 房管 理 分 房 调 房退 房递 交11111mmmm图47综合E-R图4。2.2 逻辑结构设计数据库逻辑设计的任务是将概念结构转换成特定DBMS所支持的数据模型的过程.从此开始便进入了“实现设计”阶段,需要考虑到具体的DBMS的性能、具体的数据模型特点。从E-R图所表示的概念模型可以转换成任何一种具体的DBMS所支持的数据模型,如网状模型、层次模型和关系模型。这里只讨论关系数据库的逻辑设计问题,所以只介绍ER图如何向关系模型进行转换.关系模型的逻辑结构是一组关系模式的集合.ER图则是由实体
9、,实体的属性和实体间的联系三个要素组成。所以将ER图转换为关系模型实际上就是要将实体,实体的属性和实体间的联系转换为关系模式.转换原则如下。1. 实体类型的转换:一个实体型转换成一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。2联系类型的转换,根据不同的情况做不同的处理。(1)一个1:1的联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并.如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性
10、。(2)一个1:N的联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为N端实体的码.(3)一个M:N联系转换为一个关系模式。与该联系相连的各实体的码为各实体码的组合。(4)三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实休的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。(5)具有相同码的关系模式可合并。3. 根据学生宿舍管理系统的ER图转换为关系模型如下.将每一个实体转换成一个关系(关系就是给出关系名,属性就是实体属性,
11、并标明该关系的主键用下划线来表示)关系模式:用户信息表(户主,部门,职称,人口,房号)住房要求(户主,要求)住房标准(面积,最低分数)房产文件(房号,住房面积,分配标志,房租)住房文件(户主,职称,部门,人口,分数,房号,住房面积)分房要求(户主,部门,职称,人口,分数,要求面积)退房要求(部门,房号)调房要求(户主,部门,职称,人口,分数,面积,房号,申请面积)以上关系模式均为3NF.4.3数据库表空间和表结构设计表4。3.1登陆信息表locain属性名存储代码类型长度备注账号Localidchar20登陆账号密码Local-pchar20登陆密码角色Local-rchar10登陆角色表4。
12、3。2用户信息表user_info属性名存储代码类型长度备注户主huzhuchar20户主姓名部门bumenchar20工作部门职称zhichengchar10职称房号renkouchar8所住房号人口fanghaoint8家庭人口表4。3.3住房要求user_q属性名存储代码类型长度备注户主huzhuchar20户主姓名要求yaoqiuchar10申请要求表4。3。4住房标准zhu_b属性名存储代码类型长度备注面积mianjiInt 住房面积最低分数zuidifenshuInt 最低住房分数表4。3。5住房文件zhu_w属性名存储代码类型长度备注户主huzhuchar20户主姓名职称zhic
13、hengchar10户主职称部门bumenchar20工作部门分数fenshuInt 住房分数人口renkouInt 家庭人口房号fanghaochar4房间号码住房面积zhufangmianjiint现住面积表4。3.6房产文件fang_w属性名存储代码类型长度备注房号fanghaochar4房间号码分配标志fenpeibiaozhichar4是否分配(是)房租fangzuInt 每平方米房租住房面积zhufangmianjiInt 住房面积表4。3.7分房要求fang_q属性名存储代码类型长度备注户主Huzhu Char 20申请人姓名部门BumenChar 20工作部门职称Zhichen
14、gChar 10户主职称人口renkouint家庭人口分数Fenshuint住房分数要求面积yaoqiumianjiint要求住房面积表4。3。8调房要求tiao_q属性名存储代码类型长度备注户主huzhuChar20申请人姓名部门bumenchar20工作部门职称zhichengchar10户主职称人口RenkouInt家庭人口分数FenshuInt 分房分数面积MianjiInt原住房面积房号Fanghaochar4原房号申请面积shenqingmianjiint申请面积表4。3。9退房要求tui_q属性名存储代码类型长度备注部门bumenChar20工作部门房号fanghaochar4要
15、退房号4。4系统实施1、登录信息locaincreate table locain(Local-idchar(20) not null,Localp char(20)not null Localr char (10) not null)tablespace susyhe_data;2、用户信息表user_infocreate table user_info (huzhu char(20)not null,primary key (huzhu)bumenchar(20) not null,zhichengchar(10) not null,renkouchar(8),fanghaoint)tab
16、lespace sushe _data;3、住房要求user_qcreate table user_q(huzhuchar(20) not null, foreign key references faculty(huzhu),yaoqiuchar(10) not null,)tablespace sushe_data;4、住房标准zhu_bcreate table zhu_b(mianjiint not null, primary key (huzhu),zuidifenshuintnot null,)tablespace sushe _data;5、住房文件zhu_wcreate tabl
17、e zhu_w(huzhuchar(20) not null, primary key (huzhu)zhichengchar(10) not null,bumen char (20) not null, foreign key references major(bumen),fenshuint not null,renkouintfanghaochar(4) zhufangmianjiint)tablespace sushe _data;6、房产文件fang_wcreate tablefang_w(fanghaochar(4) primary key,fenpeibiaozhichar(4)
18、 not null,fangzuint not null,zhufangmianjiint not null,)Tablespace sushe_data;7、分房要求fang_qcreate table fang_q(huzhuchar(20) primary key not null,bumenchar(20) not null,zhichengchar(10) not null,renkouint not null,fenshuint not null,yaoqiumianjiint not nul)tablespace sushe_data;8、调房要求tiao_q create ta
19、ble tiao_q(huzhuchar(20) not null, primary keybymenchar(20) not null,zhichengchar(10) not nullrenkouint not nullfenshuint not nullmianjiint not nullfanghaochar(4) not nullshenqingmianjiint not null)tablespace sushe_data;9、退房要求tui_qcreate table tui_q(bumenchar(20) primary key,fanghaochar(4)not null,)
20、tablespace sushe_data;4.5创建其它数据库对象视图的创建:创建视图用于查寻用户信息CREATE VIEW yhxx AS SELECT yaoqiu,zhufangmianjiFROM user_info JOIN user_q ON user_info。huzhu= user_q。huzhuJOIN zhu_w ON user_q。huzhu=zhu_w.huzhu触发器的创建:创建触发器zfq,使得在退房要求表中执行退房申请时,则从住房文件和房租文件中删除有关的信息,再把此房号的信息写到空房文件中 CREATE TRIGGER zfq ON tui_q FOR del
21、ect AS BEGINdelecttui_q SET bumen,fanghao to fang_w END存储过程的创建:创建一个存储过程fang_w1,输入房号,返回分配标志,房租,住房面积。(一个输入变量,三个输出变量)CREATE PROC fang_w1 fanghaochar(4),fenpeibiaozhi char(4) output,fangzuint output,zhufangmianjiint output,AS SELECT fenbeibiaozhi=分配标志,fangzu=房租,zhufangmianji=住房面积FROM fang_wWHERE 房号=fang
22、ha5 总结与展望本次课程设计综合考察了我们对数据库知识的掌握熟练程度和实际运用能力。其间,涉及到了数据库中的绝大多数的知识点,如数据库SQL语句的建表,插入,删除,修改等操作.刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去学习。老师会给我们需要的内容一些讲解,顺着老师的思路,来完成自己的设计,可是好多处的错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正.其实现在想起来,收获还真是不少,虽然说以前非常不懂这门课程,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间学习。现在真正的明白了很多.只要努力去学习,就会灵活的去应用它。通过这次课程设计,认识到了自身的不足。首先是知识的匮乏,仅仅通过课上学习的东西远远不够课下应该多阅览相关书籍.虽然能够勉强读懂程序但是到实际应用中就会看到差距。之前我只能勉强读懂简单程序甚至不能分析运行结果,通过这次实际应用才明白自身知识的匮乏。在这次设计过程中,体现出自己单独设计程序的能力以及综合运用知识的能力,从中发现自己平时学习的不足和薄弱环节,从而加以弥补.7