我的租房网设计与实现代码.docx
《我的租房网设计与实现代码.docx》由会员分享,可在线阅读,更多相关《我的租房网设计与实现代码.docx(27页珍藏版)》请在冰豆网上搜索。
我的租房网设计与实现代码
数据库技术与开发》
项目实训设计报告
项目名称:
《我的租房网》
姓名:
专业:
指导教师:
完成日期:
内蒙古科技大学信息工程学院计算机系
姓名
班级
《数据库技术与应用》实验报告
学号I实验成绩
实验日期一
项目号、实验名称
实训项目《我的租房网》
1・
实2、
验
完成实训项目《我的租房网》并完成实训一到实训4中的上机实践内容按照项目实训报告相尖要求,提交一份电子版项目实训报告
1、实训一:
建立数据库结构
⑴创建数据库House
使用SSMS向导创建数据库House
(2)建立5张数据表
-■仓0建客户信息、表sys_usercreatetablesys_user
"客户编号,主键标识列
Useridintidentity(1,1)primarykey,
-客户姓名,非空
UserNamevarchar(50)notnull,
实-客户密码,至少6个字符
验UserPwdvarchar(50)constraintck_UserPwdcheck(len(UserPwd)>=6))
内
六-创建区县信息表hos_district
useHouse
go
createtablehos_district
(_~
-区县编号,主键,标识列从1幵始,递增值为1
Didintidentity(1,1)primarykey,
-区县名称,非空
DNamevarchar(50)notnull
)
■■创建街道信息表hos_street
useHouse
go
createtablehosstreet
(
-街道编号,主键,标识列从1开始,递增值为1
Streetldintidentity(1,1)primarykey,
-街道名称,非空
SNamevarchar(50)notnull,
-区县编号,表hos_district的外键
SDIdintconstraintfk_SDIdforeignkey(SDId)referenceshos_district(Dld)
)_~
"创建房屋信息表hosjype
useHouse
go
createtablehos_type
(_~
-房屋类型编号,主键,标识列从1开始,递增值为1
HTIdintidentity(1,1)primarykey,
-房屋类型名称,非空
HTNamevarchar(50)notnull
)
"创建出租房屋信息表hos_house
useHouse
go
createtablehos_house
(_~
-出租房屋编号,主键,标识列从1开始,递增值为1
HMIDintidentity(1,1)primarykey,
-客户编号,非空,外键
Useridintnotnullconstraintfk_Userldforeignkey(Userld)referencessys_user(Userld),
-街道编号,非空,外键
StreetIDintnotnullconstraintfk_StreetlDforeignkey(StreetID)
referenceshos_street(StreetID),
-房屋类型编号:
非空,外键
HTIdintnotnullconstraintfk_HTIdforeignkey(HTId)referenceshos_type(HTId),
-月租金,非空,默认值为o,嶽大于等于o—
Pricedecimal(6,2)notnulldefault(O)constraintck_Pricecheck(Price>=0),
-标题,非空—
Topicvarchar(50)notnull,
-描述5非空
Contentsvarchar(100)notnull,
-发布时间,非空,默认值为当前日期,要求不大于当前日期
HTimedatetimenotnulldefault(getdate())constraintck_HTimecheck(HTime<=getdate()),
"备注
Copyvarchar(80)
(3)添加外键约束
-给客户信息表中的UserNam创建非聚集索引createuniquenonclusteredindexldx_userNameonsys_user(UserName)with
fillfactor=10;
-给区县信息表中的DNam创建非聚集索引createuniquenonclusteredindexldx_dNameonhos_district(DName)with
fillfactor=10;
-给街道信息表中的SNam创建非聚集索引
createuniquenonclusteredindexIdxsName
onhos_street(SName)with
fillfactor=10;
-给房屋信息表中的HTNam创建非聚集索引
createuniquenonclusteredindexldx_htName
onhos_type(HTName)withfillfactor=10;
分析过程:
给客户信息表、区县信息表、街道信息表、房屋信息表中添加非聚集索引来提高查询的速度,
对经常使用的UserName、DName、SName、HTName进行查询优化
2、实训二:
添加测试数据
(1)主表添加测试数据
-向客户信息表sys_user添加多条条测试数据insertintosys_user
values('王雪丽71000009,
('严德赛7100001*),('王生高00002*),C崔晓宇00003*),('卢一帆\*100004*),('张英K71000059,('安鹏‘门00006*),C胖哥;100007*),C程峰丁100008*),C马云T100009J,('王铮,*100010*),('刘强^7100011*),('雷舒然V100012*),(戒龙;100013*),('武则天;1000140,('焦旭鹏T1000伯),C郑利泽T100018),('罗阳光T100017J,
cC邱国龙/100018*),
李小龙/100019*)
-向区县信息表中添加多条记录insertintohos_districtvalues(*洪lL[区'),
C武昌区'),
('青Lh区'),
('江汉区'),
(,斫口区')
-向街道信息表中添加多条记录insertintohos_streetvaluesf街道口;T),
C卓刀泉;T),
('厂前街道;3),
C吴家山;4),
('北湖街;4),
('满春街;4),
('新华街;4),
('六角亭:
3),
C汉正街丁5‘),
C汉中街;5),
('长风街丁5‘)
-向房屋信息表中添加多条记录
insertintohos_typevalues^两室一厅'),
C两室两厅'),
('一室一厅'),
('三室两厅'),
('四室两厅'),
('五室两厅')
-建立三张临时表
createtable##topic
(
Topicvarchar(50)notnull,createtable##contents
(Contentsvarchar(50)notnull,)createtable##copy(Copyvarchar(50)notnuII,)
-向三张临时表中插入数据insertinto##topicvalues('东方花园')insertinto##topicvalues('金茂东方公寓')insertinto##topicvalues('世贸大酒店')insertinto##topicvalues('民航小区')
insertinto##contentsvalues('全新家具电器')insertinto##contentsvalues('简单装修押一付三')insertinto##contentsvalues('精装修,首出租')insertinto##contentsvalues('豪华装修,拎包入住')
insertinto##copyvalues('环境优雅,学区房')insertinto##copyvalues('购物方便')insertinto##copyvalues('豪华小区、环境优美')insertinto##copyvalues('交通便利,配套完善')执行结果:
如图1、图2、图3、图4、图5
囲结果亦肖息
UseridUs
UEerPwd
1
\1
i王雪丽
10000()
2
2
严德赛
IOCoot
3
5
王為
100002
4
4
100X13
E
C
卢TR
100004
张英壷
100005
7
7
10000S
S
3
胖寄
10000?
图1客户信息表
DidWanie
'1洪山配
H.11-•HWIW
4汇汉区
砖口区
青山区
武昌匡
图2区县信息表
5DI1
【街道口
車刀泉1
广埠屯1
石牌龄1
杨家园2
水果朋2
苒鹤瞿
图3街道信息表
图4房屋信息表
m结果消息
Topic
1东方优园
Z金茂东方生惠
世驛大曆店民航小区
Contents
简单装修押一忖三
3精装修•首出祖
4慕华装悽拎包…
Copy
1:
环塩优腫■学扈番j
Q|—»!
■•«•libJlu—to
£购物方傍
3棗华小区,环…
交通便利,BS-
图5三张临时表
(2)添加批量数据
declare@begindatetime,@enddatetime
set@begin=getdate()
-定义局部变量
declare@topicvarchar(50)
declare@contentsvarchar(50)
declare@copyvarchar(50)
declare@useridint
declare@streetidint
declare@htidint
declare@pricedecimal(6,2)
declare@htimedatetime
-向hos_house表中插入10000条数据
"使用事物
begintransactiondeclare@iintset@i=0while@i<100begin
-对局部变量进行赋值
set@topic=(selecttop1*from##topicorderbynewid())
set@contents=(selecttop1*from##contentsorderbynewid())
set@copy=(selecttop1*from##copyorderbynewid())selecttop1@userid=useridfromsys_userorderbyNEWID()-租金在・4000之间随机产生二
set@price=1000+cast(3000*RAND()asint)
■■发布时间@htime,要求小干当前系统时间,发布时间在当前系统时间一年内
set
@htime=cast(dateadd(day,-cast(rand()*datepart(dayofyear,getdate())asint),getdate())asdatetime)
set@streetid=(selecttop1Streetldfromhos_streetorderby
newid())
set@htid=(selecttop1HTIdfromhos_typeorderbynewid())-向hos_house中插入数据
insertintohos_housevalues(@userid5@streetid,@htid)@price,(a)topic,@contents,@htime,@copy)
set@i=@i+1
end
declare@recordcountint
select@recordcount=(selectcount(*)fromhos_house)
if@recordcount>1OOOOObeginrollbacktransaction
print1插入人数超过上限,插入失败’
end
else
begin
committransaction
print1插入成功’
end
set@end=getdate()
PRINTDATEDIFF(millisecond5@begin,@end)/1000.0-单位:
s
句,运用事务对插入语句进行优化,缩短插入语句时间。
执行结果:
如图6
3、实训三:
综合查询
(1)分页显示查询出租房屋信息
-建立临时表#t,用于存放查询的数据
createtable#t
(
HMIDintprimarykey.
Useridintnotnull,
StreetIDintnotnull,
HTIdintnotnull,
Pricedecimal(6,2)notnull,
Topicvarchar(50)notnull,
Contentsvarchar(100)notnull,
HTimedatetimenotnull,
Copyvarchar(80)
)
―用select-top分页方式查询数据,并将数据插入到临时表中
insertinto
#t(HMID,Userid,StreetID,HTId,Price,Topic,Contents,HTime,Copy)selecttop10*fromhos_house
where(HMIDnotin(selecttop90HMIDfromhos_houseorderby
HMID))orderbyHMID厂
-显不临时表中的数据
select*from#t
-查询临时表中第6■第10行数据
selecttop(5)*from#twhereHMIDnotin(selecttop(5)HMIDfrom#t)
-查询并改变所有列标题selectHMIDas房屋编号,
Useridas用户编号,
StreetIDas街道编号,
HTIdas房屋类型编号,
Priceas价格,
Topicas标题,
Contentsas房屋描述,
HTimeas发布时间,
Copyas备注,ROW_NUMBERVer(orderbyHMIDdesc)rankfromhos_house
分析过程:
建立临时表#t用于存放查询过程,用select-top分页方式查询数据,并将数据插入到临时表中,查询临时表中第6■第10行数据,查询并改变所有列标题。
执行结果:
如图7
"使用内联接innerjoin查询实现
declare@begindatetime,@enddatetime
set@begin=getdate()
select
DName,SName,hos_type.HTName,Topic,Price,Contents,HTime,Copyfrom((((hos_houseinnerjoinsys_useronhos_house.Userid=sys_user.Userid)
innerjoinhos_streetonhos_house.StreetlD=hos_street.Streetld)
innerjoinhos_districtonhos_street.SDId=hos_district.Dld)
innerjoinhos_typeonhos_house.HTId=hos_type.HTId)
wheresys_user.UserName='王雪冃用
set@end=getdate()
PRINTDATEDIFF(millisecond,@begin,@end)/1000.0-单位:
s
-建立临时表用where子句和内查询实现
declare@begindatetime,@enddatetime
set@begin=getdate()
createtable#n
(
Didint,
DNamevarchar(50),
Streetldint,
SNamevarchar(50),
SDIdint
)
insertinto#n(Did,DName,Streetld,SName,SDId)select
Did,DName,Streetld,SName,SDIdfromhos_district,hos_streetwherehos_district.Dld=hos_street.SDIdselect
DName,SName,hos_type.HTName,Topic,Price,Contents,HTime,Copyfromhos_house,hos_type,#n,sys_userwheresys_user.UserName='王雪冃用andhos_house.Userld=sys_user.Userldandhos_house.HTId=hos_type.HTIdandhoshouse.StreetlD=#n・Streetldset@end=getdate()
PRINTDATEDIFF(millisecond,@begin,@end)/1000.0-单位:
s分析过程:
使用内联接innerjoin杳询实现,建立临时表用where子句和内杳询实现。
执行结果:
如图8、图9
J结果・J消息
•结果诵
(3)按区县制作房屋出租清单
-使用having子句筛选出街道数大于1的区县
selectHTName,UserName,DName,SNamefrom
#n,hos_house,sys_user,hos_type
wheresys_user.Userld=hos_house.Useridand
#n.Streetld=hos_house.StreetlDandhos_type.HTId=hos_house.HTIdand#n.SDIdin(selectSDIdfrom#ngroupbySDId
having(count(Streetld)>1))
分析过程:
使用having子句筛选岀街道数大于1的区县
执行结果:
如图10
宙结果J消息
HTW«k
■・・•Kjnaivumt
1
'宣:
两厅
i严翳
靳华街厂
2
王铮
青山区
3
四室两厅
武昌区
水果湖
4
五室两厅
程幄
原区
北湖衍
E
四室两厅
江汉区
嘶华街
6
两室輛厅
崔除宇
汇
7
张英盘
武昌区
杨家园
e
严縣
武昌区
水果湖
g
履两厅
WlUE
10
五室两厅
迹呈东
吴室Lh
图10使用having子句筛选出街道数大于1的区县结果
4、实训四:
业务统计
(1)按季度统计本年度发布的房屋出租数量
-按季度统计本年度发布的房屋出租数量
createviewView_QTDst(HTime5DName,SName,HTName,number)asselectdatepart(quarter,HTime)as,季度\DNameas'区县\SNameas,街道\HTNameas'户型;county)as*数量'from(((hos_houseinnerjoinhos_typeonhos_house.HTId=hos_type.HTId)
inner
joinhos_streetonhos_house.StreetlD=hos_street.Streetld)
innerjoinhos_districtonhos_district.Dld=hos_street.SDId)
groupbydatepart(quarter,HTime)5DName5SName5HTName
select*fromView_QTDst
分析过程:
按季度统计本眾发布的房屋出租数量
执行结果:
如图门
旨结果」消息
KTime
bliaiB-.llMilM
Manie
FTUame
number
1
11「
广埠屯两室隣厅
230
2
1
洪山区
广埠屯-室商厅
224
3
1
洪LU区
石兢岭四室质厅
217
4
1
洪山区
石牌岭_室_厅
2盟
5
1
洪山邑
卓刀泉两皇商厅
229
6
1
北翊衙炳室炳厅
241
7
1
北湖衍二室两厅
2E3
8
1
江迎区
葫室两厅
234
鼻
1
晞□区
四室腐厅
239
10
1
碼口IE
一室一厅
酒
图11
(2)统计出各个季度各个区县出租房屋的数量
-统计出各个季度各个区县出租房屋的数量declare@begindatetime,@enddatetime
set@begin=getdate()
selectHTimeas1季度,DNameas'区县\sum(number)as'数量fromView_QTDstgroupbyHTimeQNameset@end=getdate()
PRINTDATEDIFF(millisecond,@begin,@end)/1000.0-单位:
s
分析过程:
统计出各个季度各个区县出租房屋的数量
执行结果:
如图12
□结果J消息
区县
埶里
1
E
\2:
1
晞口区
5665
5607
3
3
宵山区
5