二手房中介管理系统设计
数据库二手房中介系统
目录
二手房中介管理系统
- 实现房屋户型、房东信息的管理;
- 实现租房客户信息的管理;
- 实现房屋的出租、归还登记;
- 实现租房收费管理;
- 创建存储过程统计各种户型的房屋的出租数量;
- 创建触发器,当房屋租出时自动修改该房屋的状态;
- 创建视图查询当前所有房屋的房号、房东、状态信息;
- 建立数据库相关表之间的参照完整性约束。
一、二手房中介管理系统需求分析
1、系统概述
二十世纪,随着我国的市场经济的蓬勃发展,房价也在不断地攀升,越来越多的房地产业开发,人们会去换新的房子,就有了一些闲置的房子。然而,对于一些刚刚步入社会的大学生,自身尚未具备购买新房的能力,对于一些求学学子,更加方便的寻求学区房也成了一大问题,在外地工作求得离公司近的房子也是必不可少的,为了更加方便,二手房中介行业也就越来越受到广大群众的需要,开发二手房中介管理系统,可以方便房产中介部门管理和客户查询检索,可以让需求者得到最大的利益。要想在激烈的市场上谋取一位,必须加强内部管理,提高运营效率,二手房中介管理系统是不可缺少的信息化管理机制。综合考虑房源空间信息,开发一个坚持客户利益优先的二手房中介信息系统是非常有必要的。
2、系统功能设想
二手房中介管理系统,主要包括7个模块:分别为管理员工信息、房客信息、房东信息、房屋信息、意向信息、归还信息,收费信息。这7个个模块都包括增删改查的基础功能;系统总体来说,为以下几部分:
- 房东:查询修改姓名、性别等相关信息
- 房客:可以查询修改姓名、性别、意向等相关信息
- 员工:员工登录可以进行添加、修改、删除和查询用户信息、也可以修改与维护房屋信息,记录每间房屋的收费。
- 房屋:房屋查询可以进行查询、修改房屋户型、面积、价格等相关信息
- 费用:收费管理可以记录房东、房屋、员工、具体金额等相关信息。
- 归还:归还信息记录房屋的归还记录,包括归还日期,归还所属房东等
- 意向:意向管理可以记录和显示房客要租房的户型、价格、面积等
同时,系统有房屋基本状态的试图,可以方便地查询各个房屋是否出租的状态情况,创建储存功能,可以让管理员统计出各种户型的房屋的出租数量。并且在收费信息表中创建触发器,可以将已经租出去的房屋信息表中的房屋状态从“待租”变为“已租”,同时在房屋归还信息表中创建触发器,当增加归还信息时,将房屋状态改为“待租”。
图1 二手房中介管理系统功能结构图
二、二手房中介管理系统概念设计
1、实体
E-R图中的关联必须是实体之间的关联,属性不能和其他实体有关联;属性必须是不可分的数据项,即属性中不能包括其它的属性或者实体。由此分析,可以抽象得到的实体为以下7个:
实体:
- 房东信息
- 房客信息
- 房屋归还信息
- 房屋信息
- 意向信息
- 收费信息
- 员工信息
属性:
- 房东信息的属性有:房东编号、房东姓名、性别、联系号码、身份证号、记录日期
- 房客信息的属性有:房客编号、房客姓名、性别、联系号码、身份证号、记录日期
- 房屋归还信息的属性有:归还编号、归还日期
- 房屋信息的属性有:房屋编号、房屋名称、户型、状态、价格、面积
- 意向信息的属性有:意向编号、户型、楼层编号、价格、用途、面积
- 收费信息的属性有:费用编号、金额、付款日期
- 员工信息的属性有:员工ID、员工姓名、性别、出生日期、联系方式、身份证号
图2 “房客信息—收费信息”局部E-R图
图3 “房东信息”局部E-R图
图4 “归还信息—房屋信息”局部E-R图
图5“意向信息”局部E-R图
图6 “员工信息”局部E-R图
3、系统全局E-R图
图7 全局E-R图
三、二手房中介管理系统的逻辑设计
1、E-R图到关系模式的转换
房东信息(房东编号,房东姓名,性别,联系号码,身份证号,记录日期)
房客信息(房客编号,房客姓名,性别,联系号码、身份证号、记录日期)
房屋归还(归还编号,归还日期)
房客退房(房客编号,归还编号,房屋编号,归还日期)
房东收房(房东编号,归还编号,房屋编号,房客编号,归还日期)
房屋信息(房屋编号,房屋名称,户型,状态,价格,面积)
意向信息(意向编号,户型,楼层编号,价格,用途,面积)
收费信息(费用编号,金额,付款日期)
员工记录(员工编号,员工姓名,付款日期,费用编号,房东编号,房客编号)
员工信息(员工编号,员工姓名,性别,联系方式,身份证号)
关系范式中的主键重复度越高,列的空间冗余越高,由于在查询过程中,如果需要查询某一特定内容,就必须连接很多表,费时费力,而且可以有效的消除异常(比如插入异常,更新异常,删除异常),而且可以将数据的组织变得更加和谐。所以我选将房东的收房,房客退房统一合并到房屋归还里,将员工记录的收费信息,合并到收费信息表里,这样在查询中,就可以更加方便快捷,也省了多个表的联立。所以我将ER图得到的关系模式调整成以下关系模式:
员工信息(员工编号,员工姓名,性别,联系方式,身份证号)
收费信息(费用编号,金额,员工编号,员工姓名,房屋编号,付款日期,房东编号,房客编号)
房东信息(房东编号,房东姓名,房屋编号,性别,联系号码,身份证号,记录日期)
房客信息(房客编号,房客姓名,性别,联系号码,身份证号,记录日期)
房屋信息(房屋编号,房屋名称,户型,面积,状态,价格,房东编号)
意向信息(意向编号,房客编号,户型,楼层编号,价格,面积)
房屋归还信息(归还编号,房屋编号,房客编号,归还日期)
四、二手房中介管理系统的数据库设计
1、数据库设计
创建数据库“二手房中介管理系统”如图下所示:
图8 系统数据库的建立
2、数据表设计
(1)表汇总,如表1所示
表名 | 功能说明 |
Manager | 存储员工信息 |
Charge | 存储收费信息 |
Landlord | 存储房东信息 |
Tenant | 存储房客信息 |
House | 存储房屋信息 |
Idea | 存储意向信息 |
Back | 存储归还信息 |
表1 二手房中介系统表汇总
(2)详细表设计
create table Manager(/*员工(员工编号,姓名,性别,身份证号,联系方式)*/
man_id varchar(10) primary key,
man_name varchar(20) not null,
man_sex varchar(5) check(man_sex='男' or man_sex='女'),
man_number varchar(20) not null,
man_tel varchar(20) not null,
);
表名 | Manager | ||||
列名 | 列名说明 | 数据类型 | 长度 | 主码、外码 | 是否允许空值 |
man_id | 员工ID | varchar | 10 | 主码 | 否 |
man_name | 员工姓名 | varchar | 20 | 无 | 否 |
man_sex | 性别 | varchar | 5 | 无 | 否 |
man_number | 身份证号 | varchar | 20 | 无 | 否 |
man_tel | 联系方式 | varchar | 20 | 无 | 否 |
表2 Manager表
create table Landlord(/*房东(房东编号,房屋编号,姓名,性别,身份证号,联系方式,日期)*/
lan_id varchar(10) primary key,
lan_name varchar(20) not null,
lan_sex varchar(5) check (lan_sex='男' or lan_sex='女'),
lan_number varchar(20) not null,
lan_tel varchar(20) not null,
hou_id varchar(10) not null,
hou_day datetime not null,
foreign key(lan_id) references House(hou_id)
);
表名 | Landlord | ||||
列名 | 列名说明 | 数据类型 | 长度 | 主码、外码 | 是否允许空值 |
lan_id | 房东编号 | varchar | 10 | 主码 | 否 |
lan_name | 房东姓名 | varchar | 20 | 无 | 否 |
lan_sex | 性别 | varchar | 5 | 无 | 否 |
lan_number | 身份证号 | varchar | 20 | 无 | 否 |
lan_tel | 联系方式 | varchar | 20 | 无 | 否 |
hou_id | 房屋编号 | varchar | 10 | 外码 | 否 |
hou_day | 记录日期 | datetime | 无 | 否 |
表3 Landlord表
create table Tenant(/*房客(房客编号,姓名,性别,身份证号,联系方式,日期)*/
ten_id varchar(10) primary key,
ten_name varchar(20) not null,
ten_sex varchar(5) check (ten_sex='男' or ten_sex='女'),
lan_number varchar(20) not null,
lan_tel varchar(20) not null,
ten_day datetime not null,
);
表名 | Tenant | ||||
列名 | 列名说明 | 数据类型 | 长度 | 主码、外码 | 是否允许空值 |
ten_id | 房客编号 | varchar | 10 | 主码 | 否 |
ten_name | 房客姓名 | varchar | 20 | 无 | 否 |
ten_sex | 性别 | varchar | 5 | 无 | 否 |
ten_number | 身份证号 | varchar | 20 | 无 | 否 |
ten_tel | 联系方式 | varchar | 20 | 无 | 否 |
ten_day | 记录日期 | datetime | 无 | 否 |
表4 Tenant表
create table House(/*房屋(房屋编号,姓名,户型,状态,价格,面积,房东编号)*/
hou_id varchar(10) primary key,
hou_name varchar(20) not null,
hou_type varchar(20) not null,
hou_state varchar(20) not null,
hou_price varchar(20) not null,
hou_area varchar(20) not null,
lan_id varchar(20) not null,
foreign key(hou_id) references Landlord(lan_id)
);
表名 | House | ||||
列名 | 列名说明 | 数据类型 | 长度 | 主码、外码 | 是否允许空值 |
hou_id | 房屋编号 | varchar | 10 | 主码 | 否 |
hou_name | 房屋姓名 | varchar | 20 | 无 | 否 |
hou_type | 房屋户型 | varchar | 20 | 无 | 否 |
hou_state | 房屋状态 | varchar | 20 | 无 | 是 |
hou_price | 价格 | varchar | 20 | 无 | 否 |
hou_area | 面积 | varchar | 20 | 无 | 否 |
lan_id | 房东ID | varchar | 20 | 外码 | 否 |
表5 House表
create table Charge(/*费用(费用编号,金额,付款日期,员工编号,员工姓名,房屋编号,房东编号,房客编号)*/
ch_id varchar(10) primary key,
ch_price varchar(20) not null,
ch_day datetime not null,
man_id varchar(10) not null,
man_name varchar(20) not null,
hou_id varchar(10) not null,
lan_id varchar(10) not null,
ten_id varchar(10) not null,
foreign key(ch_id) references House(hou_id),
foreign key(ch_id) references Manager(man_id),
foreign key(ch_id) references Landlord(lan_id),
foreign key(ch_id) references Tenant(ten_id)
);
表名 | Charge | ||||
列名 | 列名说明 | 数据类型 | 长度 | 主码、外码 | 是否允许空值 |
ch_id | 费用编号 | varchar | 10 | 主码 | 否 |
ch_price | 金额 | varchar | 20 | 无 | 否 |
man_id | 员工编号 | varchar | 10 | 外码 | 否 |
man_name | 员工姓名 | varchar | 20 | 无 | 否 |
hou_id | 房屋编号 | varchar | 10 | 外码 | 否 |
ch_day | 付款日期 | datetime | 无 | 否 | |
lan_id | 房东编号 | varchar | 10 | 外码 | 否 |
ten_id | 房客编号 | varchar | 10 | 外码 | 否 |
表6 Charge表
create table Idea(/*意向(意向编号,房客编号,户型,楼层编号,价格,面积)*/
id_id varchar(10) primary key,
id_type varchar(20) not null,
id_floor varchar(20) not null,
id_price varchar(20) not null,
id_area varchar(20) not null,
ten_id varchar(10) not null,
foreign key(id_id) references Tenant(ten_id)
);
表名 | Idea | ||||
列名 | 列名说明 | 数据类型 | 长度 | 主码、外码 | 是否允许空值 |
id_id | 意向ID | varchar | 10 | 主码 | 否 |
ten_id | 房客ID | varchar | 10 | 外码 | 否 |
id_type | 户型 | varchar | 20 | 无 | 否 |
id_floor | 楼层编号 | varchar | 20 | 无 | 否 |
id_price | 价格 | varchar | 20 | 无 | 否 |
id_area | 面积 | varchar | 20 | 无 | 否 |
表7 idea表
create table Back(/*归还(房屋编号,房客编号,归还编号,归还日期)*/
ba_id varchar(10) primary key,
lan_id varchar(10) not null,
ten_id varchar(10) not null,
ba_day datetime not null,
);
表名 | Back | ||||
列名 | 列名说明 | 数据类型 | 长度 | 主码、外码 | 是否允许空值 |
lan_id | 房东ID | varchar | 10 | 无 | 否 |
ten_id | 房客ID | varchar | 10 | 无 | 否 |
ba_day | 归还日期 | datetime | 无 | 否 | |
ba_id | 归还编号 | varchar | 20 | 主码 | 否 |
表8 back表
- 视图汇总
视图名 | 功能说明 |
House_View | 查询当前房屋编号、房东以及状态信息 |
Money_View | 租房屋编号以及收费信息 |
Home_View | 查询系统所有二手房 |
表9 视图汇总表
- 创建视图查询当前的房屋编号、房东以及状态信息
create view House_View (房屋编号,房东编号,房屋状态)
as
select House.hou_id,Landlord.lan_id,House.hou_state
from House,Landlord
where Landlord.lan_id =House.hou_id
Go
图9 House_View视图查询
列名 | 列名说明 |
房屋编号 | 所租房子 |
房东编号 | 房屋所属人 |
房屋状态 | 房屋当前是“待租”还是“已租” |
表10 House_View视图
- 创建视图查询当前的出租房屋编号以及收费信息
create view Money_View (房屋编号,房客编号,收费信息)
as
select House.hou_id,Landlord.lan_id,Tenant.ten_id
from House,Landlord ,Tenant
where Landlord.lan_id =House.hou_id
Go
列名 | 列名说明 |
房屋编号 | 所租房子 |
房客编号 | 租客 |
收费信息 | 房子当前的费用 |
表11 House_View视图
- 创建视图查询当前二手房市场里的房子
create view home_View(房型,状态,面积)
as
select House.hou_type,House.hou_state,House.hou_area
from House
go
图11 home_View视图查询
列名 | 列名说明 |
房型 | 房子类型 |
状态 | 当前市场情况 |
面积 | 房子面积 |
表12 home_View视图
4、触发器设计
(1)创建存储过程统计各种户型的房屋的出租数量
create procedure 统计出租数量
as
select hou_type,hou_state,count(hou_id) as 统计
from House
where hou_state='已租'
group by hou_type,hou_state
- 储存过程
declare @return_value int
exec @return_value=统计出租数量
select 'Rrturn Value'=@return_value
Go
- 创建触发器,当房屋被租出时,修改房屋状态为“已租”
create TRIGGER 修改房屋状态
on Charge
after insert
as
BEGIN
update House set hou_state='已租'
where hou_id=(select hou_id from inserted)
SET NOCOUNT ON;
select *from inserted
select *from House
END
触发器名称:修改房屋状态
触发器作用:当房屋被租出时,修改房屋状态为“已租”(如下图所示)
图11
- 创建触发器,当房屋被归还时,修改房屋状态为“待租”
go
CREATE TRIGGER 归还状态
on Back
after insert
as
begin
update House set hou_state='待租'
where hou_id=(select hou_id from inserted)
SET NOCOUNT ON;
select *from inserted
select *from House
END
触发器名称:归还状态
触发器作用:当房屋被归还时,修改房屋状态为“待租”(如下图所示)
图12
5、数据库恢复
数据库的备份:
图10
还原数据库:
图11
更多推荐
所有评论(0)