数据库-MySQL 实战项目——房屋租赁管理系统数据库设计与实现(附源码)

一、前言

需求:

房屋租赁管理系统主要完成功能为:

  1. 房屋信息管理
  2. 出租者信息管理
  3. 求租者信息管理
  4. 房屋出租信息管理
  5. 系统管理(员工信息管理、绩效管理等)

备注:

        1. 一个房屋有多个求租者。(一对多)

        2. 一个房屋由多名员工销售,一个员工管理多个房屋。(多对多)

        3. 一个员工负责多个求租者,一个求租者可选择多个员工。(多对多)

        4. 一个出租者面向多个求租者,一个求租者可选择多个出租者。(多对多)

        5. 一个求租者可发多条求租留言,一个出租者可发多条出租留言。(一对多)

其中:

        房屋信息包含下列属性:地址,价格,房号,面积。

        出租者包含下列属性:出租者身份证,出租者姓名,出租者性别,出租者电话号码,出租者年龄。

        求租者包含下列属性:求租者身份证,求租者姓名,求租者性别,求租者电话号码,求租者年龄。

        员工出租包含下列属性:员工编号,员工姓名,员工性别,员工电话号码,员工年龄。

        留言包含属性:留言时间,留言内容,留言编号

        关于出租房屋要描述出租日期和出租金额

        关于员工绩效要描述售房数量

所需环境

  1.  MySQL可视化工具:navicat;
  2.  数据库:MySql 5.7/8.0等版本均可;

 二、E-R图

三、关系模式

房屋(房号,地址,价格,面积)

员工(员工编号,员工姓名,员工性别,员工年龄,员工电话)

求租者(求租者身份证,求租者姓名,求租者性别,求租者电话,求租者年龄)

留言(留言编号,留言内容,留言时间,求租者身份证,出租者身份证)

出租者(出租者身份证,出租者姓名,出租者性别,出租者电话,出租者年龄)

绩效(员工编号房号,售房数量)

房屋出租(员工编号求租者身份证,出租日期,出租金额)

四、数据表的设计 

表1:出租者

字段

数据类型

长度

备注

出租者身份证

varchar

50

主键

出租者姓名

varchar

50

not NULL

出租者性别

varchar

50

not NULL

出租者电话

varchar

50

not NULL

出租者年龄

varchar

50

not NULL

表2:员工

字段

数据类型

长度

备注

员工编号

varchar

50

主键

员工姓名

varchar

50

not NULL

员工性别

varchar

50

not NULL

员工年龄

varchar

50

not NULL

员工电话

varchar

50

not NULL

表3:求租者

字段

数据类型

长度

备注

求租者身份证

varchar

50

主键

求租者姓名

varchar

50

not NULL

求租者性别

varchar

50

not NULL

求租者电话

varchar

50

not NULL

求租者年龄

varchar

50

not NULL

表4:房屋

字段

数据类型

长度

备注

房号

varchar

50

主键

地址

varchar

50

not NULL

价格

varchar

50

not NULL

面积

varchar

50

not NULL

表5:留言

字段

数据类型

长度

备注

留言编号

varchar

50

主键

留言内容

Varchar

50

Not null

留言时间

date

not NULL

求租者身份证

varchar

50

外键

出租者身份证

varchar

50

外键

表6:绩效

字段

数据类型

长度

备注

员工编号

varchar

50

主键

房号

varchar

50

主键

售房数量

varchar

50

not NULL

表7:房屋出租

字段

数据类型

长度

备注

求租者身份证

varchar

50

主键

出租者身份证

varchar

50

主键

出租日期

date

not NULL

出租金额

varchar

50

Not null

五、创建数据库 

Create database 房屋租赁管理系统 character set utf8 collate utf8_general_ci 
-- 在新建表前选择数据库
Use 房屋租赁管理系统

创建各实体表:

表1:出租者

create table 出租者
(出租者身份证 VARCHAR(50) PRIMARY KEY,出租者姓名 VARCHAR(50) NOT NULL,出租者性别 VARCHAR(50) NOT NULL,出租者电话 VARCHAR(50) NOT NULL,出租者年龄 VARCHAR(50) NOT NULL
)

表2:员工

create table 员工
(员工编号 varchar(50) PRIMARY KEY,员工姓名 varchar(50) not NULL,员工性别 varchar(50) not NULL,员工年龄 varchar(50) not NULL,员工电话 varchar(50) NOT NULL
)

表3:求租者

Create table 求租者
(求租者身份证 VARCHAR(50) PRIMARY KEY,求租者姓名 VARCHAR(50) NOT NULL,求租者性别 VARCHAR(50) NOT NULL,求租者电话 varchar(50) not null,求租者年龄 varchar(50) NOT NULL
)

表4:房屋

CREATE table 房屋
(房号 varchar(50) PRIMARY KEY,地址 VARCHAR(50) NOT NULL,价格 VARCHAR(50) NOT NULL,面积 varchar(50) not null
)

表5:留言

Create table 留言
(留言编号 varchar(50) PRIMARY KEY,留言内容 varchar(50) not null,留言时间 date NOT NULL,出租者身份证 varchar(50),求租者身份证 varchar(50),FOREIGN KEY(出租者身份证) REFERENCES 出租者(出租者身份证),FOREIGN KEY(求租者身份证) REFERENCES 求租者(求租者身份证)
)

表6:绩效

create table 绩效
(员工编号 varchar(50) NOT NULL,房号 varchar(50) not NULL,售房数量 varchar(50) NOT NULL,PRIMARY KEY(员工编号,房号)
)

表7:房屋出租

CREATE TABLE 房屋出租
(求租者身份证 VARCHAR(50),出租者身份证 VARCHAR(50),出租日期 date not null,出租金额 varchar(50) ,PRIMARY KEY(求租者身份证,出租者身份证)
) 

插入数据:

1. 出租者

Insert into 出租者 values('500118200403128804','张三','男','13612345678','18');
Insert into 出租者 values('500118200203128804','李湘','女 ','13703456784','20');
Insert into 出租者 values('500118200403128808','秋兰','女','13882346743','26');
Insert into 出租者 values('500118200403128811','陈浩','男','13998762345','29');
Insert into 出租者 values('500118200403128833','张杰','男','13976543214','20');
Insert into 出租者 values('500118200403128857','秦久','男','13477651289','37');
Insert into 出租者 values('500118200403128835','夏紫晴','女','13979512365','38');
Insert into 出租者 values('500118200403128824','杨帆','男','13639082678','44');
Insert into 出租者 values('500118200403128818',' 陈柏','女','13125674321','30');
Insert into 出租者 values('500118200403128866','李思雨','女','13549095672','25');

2. 员工

Insert into 员工 values ('Y001','游惑','男','27','17598760912');
Insert into 员工 values ('Y002','邱玲','女','22','17598765743');
Insert into 员工 values ('Y003','秦究','男','29','17598768088');

3. 求租者

INSERT INTO 求租者 VALUES ('511322200501293220', '张一', '男', '13612345670','30');
INSERT INTO 求租者 VALUES ('511322200501293221', '张二', '男', '13612345671','31');
INSERT INTO 求租者 VALUES ('511322200501293222', '何三', '女', '13612345672','32');
INSERT INTO 求租者 VALUES ('511322200501293223', '张四', '女', '13612345673','33');
INSERT INTO 求租者 VALUES ('511322200501293224', '张五', '女', '13612345674','34');
INSERT INTO 求租者 VALUES ('511322200501293225', '张六', '男', '13612345675','35');
INSERT INTO 求租者 VALUES ('511322200501293226', '张七', '男', '13612345676','36');
INSERT INTO 求租者 VALUES ('511322200501293227', '张八', '女', '13612345677','37');
INSERT INTO 求租者 VALUES ('511322200501293228', '张九', '男', '13612345678','38');
INSERT INTO 求租者 VALUES ('511322200501293229', '张十', '男', '13612345679','39');

4. 房屋

Insert into 房屋 values ('F1','长城路5号','55万','239平方米');
Insert into 房屋 values ('F2','长江路64号','53万','220平方米');
Insert into 房屋 values ('F3','黄河路93号','68万','259平方米');
Insert into 房屋 values ('F4','泰山路59号','99万','400平方米');
Insert into 房屋 values ('F5','青城山路23号','78万','290平方米');
Insert into 房屋 values ('F6','百佛路5号','79万','300平方米');
Insert into 房屋 values ('F7','安全路34号','66万','250平方米');
Insert into 房屋 values ('F8','天街路25号','90万','360平方米');
Insert into 房屋 values ('F9','长阶路48号','95万','380平方米');
Insert into 房屋 values ('F10','通天路31号','54万','210平方米');

5. 留言

Insert into 留言 values('L001','房屋地址','2023-05-01','500118200203128804','511322200501293220');
Insert into 留言 values('L002','房屋类型','2023-05-02','500118200403128804','511322200501293221');
Insert into 留言 values('L003','房屋价格','2023-05-03','500118200403128808','511322200501293222');
Insert into 留言 values('L004','房屋面积','2023-05-04','500118200403128811','511322200501293223');
Insert into 留言 values('L005','房屋地址','2023-05-05','500118200403128818','511322200501293224');
Insert into 留言 values('L006','房屋价格','2023-05-06','500118200403128824','511322200501293225');
Insert into 留言 values('L007','房屋租金','2023-05-07','500118200403128833','511322200501293226');
Insert into 留言 values('L008','房屋地址','2023-05-08','500118200403128835','511322200501293227');
Insert into 留言 values('L009','房屋面积','2023-05-09','500118200403128857','511322200501293228');
Insert into 留言 values('L0010','房屋类型','2023-05-10','500118200403128866','511322200501293229'); 

6. 绩效

INSERT INTO 绩效 VALUES ('Y001','F1','1')
INSERT INTO 绩效 VALUES ('Y002','F2','2')
INSERT INTO 绩效 VALUES ('Y003','F10','10')

7. 房屋出租

Insert into 房屋出租 values('511322200501293220','500118200403128804','2023-05-13','5K')
Insert into 房屋出租 values('511322200501293221','500118200203128804','2023-05-14','3K')
Insert into 房屋出租 values('511322200501293222','500118200403128808','2023-05-15','5K')
Insert into 房屋出租 values('511322200501293223','500118200403128811','2023-05-16','3.5K')
Insert into 房屋出租 values('511322200501293224','500118200403128833','2023-05-17','7K')
Insert into 房屋出租 values('511322200501293225','500118200403128857','2023-05-18','9K')
Insert into 房屋出租 values('511322200501293226','500118200403128835','2023-05-19','6K')
Insert into 房屋出租 values('511322200501293227','500118200403128824','2023-05-20','8K')
Insert into 房屋出租 values('511322200501293228','500118200403128818','2023-05-21','5K')
Insert into 房屋出租 values('511322200501293229','500118200403128866','2023-05-22','4K')

六、索引:

        作用是为了加快查询速度,提高查询效率(查字典)

命令格式:

create index 索引名字 on 表名(字段名)
例如:
create index 房屋索引 on 房屋(房号,地址,价格,面积)

查看索引

Show index from 表名

去掉索引:

Drop index 索引名字 on 表名

七、视图:

(1)简化查询:

        通过视图可以将复杂的SQL查询语句封装起来,提供更简单和易于理解的查询接口,减少了重复编写SQL语句的工作量,同时也减少了编写错误的机会。

(2)提高查询效率:

        视图可以提供对数据库的一种“预先计算”,在多次查询中避免了重复计算,从而提高了查询效率,尤其是针对一些复杂且耗时的查询。

(3)数据安全:

        通过授权可以对某个视图进行访问和修改,而不必直接访问底层表。在一些情况下,它可以提供对敏感数据的访问控制和安全性。

(4)数据统一性:

        视图可以将多个表的数据统一,提供更简单的查询界面。视图可以由多个表组成,故视图可以为应用程序提供数据的逻辑组织,方便维护和管理。此外,对视图进行操作时,其对应的表的数据也会随之改变,保证了数据的一致性。

创建视图

create or replace view 视图名字 as +查询命令
例如
create or replace view 房屋地址 as select 地址 from 房屋

查询视图:

Select * from 视图名字
例如:
Select * from 房屋地址
 查询结果:

查看视图的表结构:

DESC 视图名字

例如

DESC 房屋地址

删除视图:

Drop view 视图名字

八、答疑解惑

        代码有问题或需要其他的查询语句,都可以随时评论留言或联系博主QQ。

        还多请各位小伙伴多多点赞支持,你们的支持是我最大的动力。

博主QQ:1196094293

谢谢各位的支持~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/673048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【10秒极速开服】幻兽帕鲁全自动部署服务器教程

幻兽帕鲁太火了,官方palworld服务器不稳定?不如自建服务器,基于腾讯云幻兽帕鲁服务器成本32元全自动部署幻兽帕鲁服务器,超简单有手就行,全程自动化一键部署10秒钟即可搞定,无需玩家手动部署幻兽帕鲁游戏程…

Agile Initiative, Epic, and Story/Task

Stories, also called “user stories,” are short requirements or requests written from the perspective of an end user. stories are something the team can commit to finish within a one- or two-week sprint.Epics are large bodies of work that can be broken do…

网络流问题求解及Gurobi+Python代码(最大流/最小成本网络流/多商品网络流)

目录 1.最大流问题 1.1 问题描述 1.2 Ford-Fulkerson算法 1.3 Gurobi测试 2.最小成本网络流问题 2.1 问题描述 2.2 供应链规划案例 3.多商品网络流问题 3.1 问题描述及模型 3.2 Gurobi测试 Gurobi求解代码:GitHub - bujibujibiuwang/Network-Flow-Probl…

机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

文章目录 1.K-近邻算法思想2.K-近邻算法(KNN)概念3.电影类型分析4.KNN算法流程总结5.k近邻算法api初步使用机器学习库scikit-learn1 Scikit-learn工具介绍2.安装3.Scikit-learn包含的内容4.K-近邻算法API5.案例5.1 步骤分析5.2 代码过程 1.K-近邻算法思想 假如你有一天来到北京…

代码随想录算法训练营第42天 | 01背包问题理论基础 + 416.分割等和子集

今日任务 01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 416. 分割等和子集 01背包问题 二维数组 理论基础:代码随想录 题目链接:题目页面 01 背包 有n件物品和一个最多能背重量为w 的…

【C++】组合数

题目描述 组合数表示的是从n个物品中选出m个物品的方案数。举个例子,从 (1, 2, 3) 三个物品中选择两个物品可以有 (1, 2),(1, 3),(2, 3) 这三种选择方法。 根据组合数的定义,我们可以给出计算组合数的一般公式: 其中…

C++ 日期计算器

日期计算器 概要 Date类的规划Date类的实现Date 构造函数Date 拷贝构造函数~Date 析构函数GetMonthDay 求某年某月的天数operator 赋值操作符重载operator 加等操作符重载operator 加号操作符重载operator- 减等操作符重载operator- 减法操作符重载 (日期 - 天数&am…

2023年第四季度硬盘容量强势增长9%

在2023年第四季度(CQ4 23),硬盘驱动器(HDD)市场的总容量出货量环比增长9%,达到214EB,而单位出货量保持在2900万块不变。其中,近线存储(Nearline)硬盘的容量出…

Java基于微信小程序的驾校报名小程序,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

JVM双亲委派机制

双亲委派模型是一种组织类加载器之间关系的一种规范,他的工作原理是:如果一个类加载器收到了类加载的请求,它不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,这样层层递进,最终所有的加载请求都被传到最顶层的启动类加载器中,只有当父类加载器无法完成这个加载…

基于SSM的实习管理系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的实习管理系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spri…

Verilog刷题笔记19

题目: A common source of errors: How to avoid making latches When designing circuits, you must think first in terms of circuits: I want this logic gate I want a combinational blob of logic that has these inputs and produces these outputs I want…

【高阶数据结构】B-树详解

文章目录 1. 常见的搜索结构2. 问题提出使用平衡二叉树搜索树的缺陷使用哈希表的缺陷 3. B-树的概念4. B-树的插入分析插入过程分析插入过程总结 5. B-树的代码实现5.1 B-树的结点设计5.2 B-树的查找5.3 B-树的插入实现InsertKey插入和分裂测试 6. B-树的删除(思想&…

使用WPS制作三线表

点击边框和底纹点击1、2、3、4并且应用于表格点击确定 再次选中表格点击右键表格属性选择边框和底纹 选中表格第一行右键点击表格属性选择边框和底纹 如果表格中存在虚线

【Linux开发工具】gcc/g++的使用

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.前言2.gcc/g使用方…

【自动化测试】---Selenium+Java

1.自动化测试分类 接口自动化测试UI自动化测试(移动端自动化测试、Web端自动化测试) 2.选择Selenium作为web自动化工具原因(面试题) 开源免费支持多个浏览器支持多个系统支持多语言Selenium包提供很多供测试使用的API 3.自动化是什…

C++内存模型的内存布局

C内存模型的内存布局 什么是内存模型内存布局及作用C程序的内存布局 本文章介绍了C程序的内存布局,并附有一段演示 数据区和 栈区存储不同类型变量的代码示例。 什么是内存模型 在计算机科学中,程序的内存模型是指程序在内存中的组织结构和存储方式的抽…

编译原理实验2——自上而下语法分析LL1(包含去消除左递归、消除回溯)

文章目录 实验目的实现流程代码运行结果测试1(含公共因子)测试2(经典的ii*i文法,且含左递归)测试3(识别部分标识符) 总结 实验目的 实现自上而下分析的LL1语法分析器,给出分析过程 …

[C#] 如何使用ScottPlot.WPF在WPF桌面程序中绘制图表

什么是ScottPlot.WPF? ScottPlot.WPF 是一个开源的数据可视化库,用于在 WPF 应用程序中创建高品质的绘图和图表。它是基于 ScottPlot 库的 WPF 版本,提供了简单易用的 API,使开发人员能够通过简单的代码创建各种类型的图表&#…

2、6作业

TCP和UDP的区别 TCP和UDP都是通信协议 TCP提供有连接的,稳定的,无误码无失真无乱序无丢失的通信 UDP提供无连接的,尽力的,可能误码可能乱序,可能丢失的通信 TCP每发一个数据包就需要对方回应一个应答包&#xff0c…