《数据库原理》住宅小区查询系统.docx
《《数据库原理》住宅小区查询系统.docx》由会员分享,可在线阅读,更多相关《《数据库原理》住宅小区查询系统.docx(23页珍藏版)》请在冰豆网上搜索。
《数据库原理》住宅小区查询系统
《数据库原理》课程设计报告
设计题目:
住宅小区查询系统
计算机与数据科学学院
2018年01月08日
1概述
1.1选题的背景与意义
随着我国经济发展和城市开发,住宅小区越来越成为居住的主流,住宅小区管理是针对当代社会这一市场需要应运而生的。
用计算机操作的住宅小区管理系统是为小区管理者和小区用户更好的维护各项物业管理业务处理工作而开发的管理软件,根据需求分析,实现小区管理业务,效益已越来越明显。
因此,开发这样一套住宅小区管理系统软件成为很有必要的事情,在本文中将就本次毕业设计我所开发的住宅小区管理系统谈谈其开发过程和所涉及到的问题及解决方法。
住宅小区中的物业管理常常要把本小区业主的基本情况(身份证号、姓名、联系方式,房屋号、房屋面积等)存放在数据库中,有了这个“数据仓库”我们就可以根据需要随时查询某业主的基本情况,也可以查询该业主对物业管理的支持程度等等。
这些工作如果都能在计算机上自动进行,那我们的管理就可以达到极高的水平。
此外,在缴费管理、权限管理、维修管理中也需要建立众多的这种“数据库”,使其可以利用计算机实现财务、维修等的自动化管理。
1.2相关技术分析
1.2.1B/S模式
B/S(Browser/Server)结构,即浏览器和服务器结构。
它是对c/S结构的一种变化或者改进的结构。
在这种结构下,用户工作界面是通过www浏览器来实现极少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现,server端访问数据库,形成所谓三层3-tier结构。
B/S结构使用的http协议,就是针对超级文本的,而超级文本自身就带着多媒体的韵味。
如今WEB技术的日益成熟,B/S结构浮出水面并呈现逐渐取代c/S的形势,使得教学软件系统的网络体系结构跨入一个新阶段。
B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。
只要有一台能上网的电脑就能使用,客户端零维护。
系统的扩展非常容易,只要能_上网,再由系统管理员分配一个用户名和密码,就可以使用了。
甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。
1.2.2SQLServer2012
数据库设计的实现,包括数据库和数据表的维护、查询与设计、存储过程、用户管理、数据库的备份和还原。
作为新一代的数据平台产品,SQLServer2012不仅延续现有数据平台的强大能力,全面支持云技术与平台,并且能够快速构建相应的解决方案实现私有云与公有云之间数据的扩展与应用的迁移。
全新一代SQLServer2012为用户带来更多全新体验,独特的产品优势定能使用户更加获益良多。
安全性和高可用性上。
提高服务器正常运行时间并加强数据保护,无需浪费时间和金钱即可实现服务器到云端的扩展。
超快的性能上,在业界首屈一指的基准测试程序的支持下,用户可获得突破性的、可预测的性能。
快速的数据发现,通过快速的数据探索和数据可视化对成堆的数据进行细致深入的研究,从而能够引导企业提出更为深刻的商业洞见。
2系统功能设计
2.1系统总体结构设计图
系统总体结构设计图如下:
图2.1系统总体结构设计
2.2系统功能模块
该系统主要针对城市小区查询系统,该系统有四个主要的功能模块构成。
2.2.1系统登录模块
本模块的主要功能是对管理员、用户身份进行验证,只有系统的合法用户才能进入系统。
系统登陆模块分类图如下:
图2.2系统登陆模块
2.2.2新小区信息登记模块
功能:
实现新投入使用小区的信息登记。
2.2.3小区信息管理模块
通过管理员身份登陆系统,对郑州市各住宅小区的基本信息进行查询、修改、删除功能。
2.2.4用户查询模块
用户根据不同的需求和现掌握的一些信息通过不同方法查询到诸多小区的基本信息。
用户分类查询途径图如下:
图2.3用户查询模块图
3数据库设计
3.1需求分析
3.1.1功能需求分析
出于政府方便对住宅小区的宏观调控,本系统主要考虑到郑州市住宅小区分布广而杂乱,住宅小区查询系统主要包括:
对赋予权限的管理员:
1)对新投入使用的小区信息添加,
2)对所有小区基本信息的查、改、删,
对政府普通员工只赋予查询的功能,根据不同需求和掌握的不同信息实现:
1)按小区名称查询,
2)按街区道路查询,
3)通过经纬度精确查询,方便工作的到访调查。
3.1.2安全性和完整性需求
1)安全性要求:
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。
安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
2)完整性要求:
系统完整性要求系统中数据的正确性以及相容性。
可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
在系统进行设计时,一定根据第七章所学知识对数据的安全性及完整性进行设计。
以保证数据库更为完善。
3.1.3数据流图
(1)系统功能模块
实现系统全部功能图如下:
图3.1系统功能模块图
(2)数据流图
a)
图3.2新小区信息数据流图
b)
图3.3小区信息管理数据流图
c)
图3.4用户查询地址数据流图
(3)数据字典
a)数据项
表3.1数据项列表
数据项编号
数据项名
数据项含义
存储结构
别名
RC-1
RCFT
商务住宅第一类别
char(6)
住宅第一类别
RC-2
RCST
商务住宅第二类别
char(12)
住宅第二类别
RC-3
RCTC
住宅类别码
char(6)
类别码
RC-4
RCNo
住宅名称
char(30)
名称
RC-5
RCAd
住宅地址
char(50)
地址
RC-6
RCAr
住宅区域
char(10)
区域
RC-7
RCLat
住宅纬度
float
纬度
RC-8
RCLng
住宅经度
float
经度
RC-9
RCTp
住宅电话
char(30)
电话
RC-10
MID
管理员编号
char(3)
编号
RC-11
MName
管理员姓名
char(10)
姓名
RC-12
MSex
管理员性别
char
(2)
性别
RC-13
Mpwd
管理员口令
char(8)
口令
RC-14
MAuth
管理员权限级别
char
(1)
权限级别
RC-15
MTeleph
管理员电话
char(15)
电话
RC-16
MAddre
管理员地址
char(30)
住址
b)数据结构
表3.2数据结构列表
数据结构编号
数据结构名
数据结构含义
组成
DS-1
RC
住宅小区
firsttypesecondtypetypecodename_paddressarealatlngtelephone
DS-2
Maneger
管理员信息
MID,MName,MSex,Mpwd,MAuth,MTeleph,MAddre
c)数据流
表3.3数据流列表
数据流名
输入
输出
住宅小区基本信息
小区名、所在位置、经纬度
小区信息表
管理员信息
管理员编号
管理员信息
d)数据存储
表3.4数据存储列表
数据存储名
输入数据流
输出数据流
说明
商务住宅表
商务住宅
住宅信息
查询商务住宅信息
小区信息
小区名、所在位置、经纬度
小区信息
查询住宅小区信息
管理员信息
管理员身份
管理员信息
查询管理员信息
e)处理过程
表3.5数据处理过程列表
处理过程名
输入数据流
输出数据流
说明
增加、删除小区
新建和拆迁小区
小区信息
小区的增加和删除
管理小区信息
小区名、所在位置、经纬度
小区信息
小区信息的查询
查询管理员信息
管理员编号
管理员信息
管理员信息的查询
3.2概念结构设计
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。
本查询系统的主要任务及目标如下:
(1)选择中层数据流为切入点,通常选择实际系统中的子系统;
(2)设计分E-R图,即各子模块的E-R图;
(3)生成初步E-R图,通过合并方法,做到各子系统实体属性联系统一;
(4)生成全局E-R图,通过消除冲突等方面。
根据实体与属性间的两条准则:
①作为“属性”,不能再具有需要描述的性质。
②“属性”不能与其他实体具有联系。
局部E-R图
图3.5小区信息E-R图
图3.6管理员信息E-R图
全局E-R图
图3.7全局E-R图
3.3逻辑结构设计
逻辑结构设计的主要目的是把E-R图转换为关系模式:
实体型转换为关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体间的联系则有以下不同的情况:
一个m:
n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:
n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码
一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
具有相同码的关系模式可合并。
根据以上的概念设计,可以把以上的几个E-R图转化为以下两个关系模式:
1.
小区基本信息(类别码,小区名称,地址,区域,经度,纬度,电话号码)3NF原因(小区名称类别码,小区名称地址,小区名称区域,小区名称经度,小区名称纬度,小区名称电话号码,每个非主属性都完全函数依赖于主关系键(小区名称),且不传递函数依赖于主关系键,故为3NF)
2.
管理员基本信息(管理员编号,姓名,性别,口令,权限级别,电话,地址)3NF原因(管理员编号姓名,管理员编号性别,管理员编号口令,管理员编号权限级别,管理员编号电话,管理员编号地址,每个非主属性都完全函数依赖于主关系键(小区名称),且不传递函数依赖于主关系键,故为3NF)
建立视图如下:
(1)用于查询住宅小区基本信息的视图定义如下:
Createview住宅小区信息(名称,地址,区域,经度,纬度,电话)
AsSELECTRCNo,RCAd,RCAr,RCLat,RCLng,RCTp
FROM商务住宅
图3.8住宅小区信息视图
(2)用于查询管理员基本信息的视图定义如下:
createviewv_manager(管理员编号,姓名,性别,电话,住址)
ASselectMID,MName,MSex,MTeleph,MAddre
frommanager
图3.9管理员信息视图
3.4物理结构设计
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
确定数据库的存放位置
为了提高系统的性能,应该根据应用情况将数据的易变部分,稳定部分、经常存取的部分和存取频率低的部分分开存放
因此我可以将表和索引分别存放在不同的磁盘上,在查询时由于两个磁盘驱动器并行工作,可以提高物理读写的速度。
存取方式的分析
从时间和空间上来说这种并行的设计方式是可以达到用户的需要的。
存取方式的分析:
对收费、报修的各个关系最经常的操作是查找,假设现有n个住宿房间的信息,如果采取顺序查找,平均查找n/2次;建立B+树索引,则平均查找次数为B+树的层数log2n+1。
索引的建立:
createuniqueindexPersonIndexon商务住宅(RCLat,RCLng)
图3.10建立索引图
3.5数据库实施
(一)建立数据库
create database 郑州市小区住宅查询系统
on primary
(
name='郑州市小区住宅查询系统',
filename='e:
\郑州市小区住宅查询系统\郑州市小区住宅查询系统.mdf',
size=10mb,
maxsize=50mb,
filegrowth=2mb
)
log on
(
name='郑州市小区住宅查询系统_log',
filename='e:
\郑州市小区住宅查询系统\郑州市小区住宅查询系统_log.ldf',
size=5mb,
maxsize=20mb,
filegrowth=1mb)
(2)建立数据表
(1)建立商务住宅信息表
createtable商务住宅
(
RCFTchar(6)notnull,
RCSTchar(12)notnull,
RCTCchar(6)notnull,
RCNochar(30)primarykey,
RCAdchar(50)notnull,
RCArchar(10)notnull,
RCLatfloatnotnull,
RCLngfloatnotnull,
RCTpchar(30))
(2)建立管理员信息表
createtablemanager
(
MIDchar(3)primarykey,
MNamechar(10)notnull,
MSexchar
(2)check(MSex='男'orMSex='女'),
Mpwdchar(8)notnull,
MAuthchar
(1)notnull,
MTelephchar(15),
MAddrechar(30)notnull
)
(三)截图
图3.11建立数据库图
图3.12建立数据表图
图3.13建立数据表图
(四)存储过程
1、实现插入功能
use郑州市小区住宅查询系统
go
createprocedure插入商务住宅信息
(@idfloat,
@firsttypenvarchar(255),
@RCFTchar(6),
@RCSTchar(12),
@RCTCchar(6),
@RCNochar(30),
@RCAdchar(50),
@provincenvarchar(255),
@citynvarchar(255),
@RCArchar(10),
@RCLatfloat,
@RCLngfloat,
@RCTpchar(15),
@tagnvarchar(255)
)
asinsertinto商务住宅values(@id,@firsttype,@RCFT,@RCST,@RCTC,@RCNo,@RCAd,@province,@city,@RCAr,@RCLat,
@RCLng,@RCTp,@tag)
/添加/
use郑州市小区住宅查询系统
go
exec插入商务住宅信息
@id='900',@firsttype='商务住宅',@RCFT='楼宇',@RCST='商务写字楼',
@RCTC='120201',@RCNo='天天大楼',@RCAd='道德路',@province='河南省',
@city='郑州市',@RCAr='金水区',@RCLat='111.200043',
@RCLng='114.44456',@RCTp='1823458999',@tag='1'
2、实现修改功能
update商务住宅setRCAd='文化路66号'
whereRCLat='113.686361'andRCLng='34.7798'
3、实现删除功能
deletefrom商务住宅
whereRCLat='113.686361'andRCLng='34.7798'
4、实现查询功能
select*from商务住宅whereRCNo='天下城'
5、模糊查询
select*from住宅小区信息
where地址like'紫荆山%'
(五)触发器
use郑州市小区住宅查询系统
go
createtriggerinsert_son商务住宅
afterinsert
as
ifexists(select*frominsertedwhereRCNoin(selectRCNofrom商务住宅))
print'添加成功'
else
begin
print'商务住宅表中没有该基本信息.拒绝插入'
rollbacktransaction
end
3.6数据库运行与维护
1、完整备份:
Backupdatabase郑州市小区住宅查询系统todisk='E:
\备份\郑州市小区住宅查询系统.bak'
withretaindays=7
图3.14完整备份图
2、还原:
restoredatabase郑州市小区住宅查询系统fromdisk='E:
\备份\郑州市小区住宅查询系统.bak'
withreplace
图3.15还原备份图
3、权限控制:
建立登陆名:
execsp_addlogin'王斌','1234','郑州市小区住宅查询系统',null
execsp_addlogin'百悦','1234','郑州市小区住宅查询系统',null
execsp_addlogin'用户','1234','郑州市小区住宅查询系统',null
建立用户名:
execsp_adduser'王斌','王斌','db_owner'
execsp_adduser'百悦','百悦','db_owner'
execsp_adduser'用户','用户','public'
权限授予:
grantselecton住宅小区信息to用户
4结束语
直到现在,郑州市住宅小区查询系统设计与实现顺利完成。
在几天的试运行的过程中,在连接数据库时一度出现过错误,经过调试改正后错误点全部清楚,此系统可以按着设计思想和需求功能正常运行。
由于当今的政府管理部门还不能有一个很统一的模式化,所以本系统仅考虑到一般管理人员对市内住宅类别和分布所需的基本和主要的几项功能。
由于开发周期短和开发人员等局限性,不能将本套系统尽善尽美。
希望在以后能够对住宅小区的查询做更深-步的调研,在原由系统的基础上不断添加新功能,方便人员使用。
最终能够开发出套完善的住宅小区查询系统。
本系统在开发过程中,在固定的查询要求的模式下还添加了一些人性化的,个人的构思和创意。
住宅小区查询系统符合基本需求功能,易于操作,应该可以给政府管理人员查询使用,也可以当做用户对小区地理位置的查询使用,存在要改进的地方再以后会进一步完善。
希望本系统能够给用户带来方便。
在完成设计的期间遇到种种问题,我明白了和收获了很多,系统开发是一个长期、全面的程序设计过程,需要有相关的专业知识基础。
最重要的是开发的系统并不是一个简单的程序,所以在开发前一定要作好各种前期工作,包括需求分析,开发目标,结构设计等,不要急于求成。
在这次设计中,由于缺乏认识,前期工作并不是很完善,所以后面比较吃力,而且有点手忙脚乱,不知所措。
通过整个过程的完成,我也算是领悟到了这一点。
足够的细心也是非常重要的。
特别是在编写代码的过程中,太多的错误会让你头晕脑胀,反复查找也不知究竞问题出在哪。
反复修改还是找不出原因,就连代码和别人一样别人可以运行而我的却有错误。
最后才发现原来是数据表中列名的数据类型与输入值不匹配,问题得以解决。
自己所掌握的知识毕竟非常有限,所以遇到问题时虚心向别人请教非常有必要。
以上就是我这次程序设计的心得体会。
参考文献
[1]陈志泊,数据库原理及应用教程.人民邮电出版社,第四版。
2018年7月
[2]唐红亮,SQLserver数据库设计与系统清华大学出版社。