项目中MySQL数据库设计(尚庭公寓)

数据库设计

1 数据库设计理论

1.1 数据库模型

数据库设计中最常采用的模型为实体(Entity)关系(Relationship)模型,简称ER模型。其核心思想是将现实世界中的复杂数据表示为一组实体,并描述这些实体之间的关系。

  • 实体通常对应现实世界中的一个对象,例如:学生、班级、教师、课程。

  • 每个实体都包含一组属性,这些属性用于描述实体,例如学生实体包含姓名、年龄、性别等属性。

  • 关系用于描述各实体之间的联系,例如学生和班级之间存在从属关系。

其中关系可分为一对一一对多多对多三种,例如学生和班级之间的关系为一对多、学生和课程之间的关系为多对多

实体关系模型通常使用实体关系图(ER diagram)进行表示。下图是一个简易的选课系统的实体关系图,其中方框代表实体,方框之间的连线则代表实体间的关系,连线两端的不同符号用于表示一对一、一对多、多对多的关系。

在这里插入图片描述

符号说明如下:
在这里插入图片描述

上述符号通常是两个成对使用,其分别表示最小值最大值。例如上述ER图中的班级学生之间的连线,班级一侧的符号表示(最小值和最大值都是一),学生一侧的符号表示(最小值是一,最大值是多),其表达的含义就是班级和学生之间的关系为一对多,一个学生只对应一个班级,而一个班级会对应多个学生(且至少对应一个学生)。

1.2 数据库设计流程

传统的数据库设计流程分为三个阶段,分别是概念模型设计阶段、逻辑模型设计阶段和物理模型设计阶段。三个阶段由粗略到详细,由抽象到具体。

1.2.1 概念模型设计

概念模型是一个粗略的初步设计,其只关注实体和关系,不体现最终建表所需的各种细节信息(例如实体的属性)。下图便是一个典型的简易选课系统数据库的概念模型。
在这里插入图片描述

1.2.2 逻辑模型设计

相较于概念模型,逻辑模型会包含更多的细节信息,例如实体的属性、用于关联两个实体的字段等等。需要注意的是,逻辑模型并不关注具体的数据库实现(例如MySQL或者Oracle)。下图是上述选课系统数据库的逻辑模型。
在这里插入图片描述

1.2.3 物理模型设计

相较于逻辑模型,物理模型会包含更多的与所选数据库相关的具体信息,例如存储引擎、字段类型、索引等信息。一般而言,物理模型会包含最终建表所需的所有信息,下图是上述选课系统数据库的物理模型。
在这里插入图片描述

2 数据库设计实操

2.1 概念模型设计

根据原型可得,本项目包含的实体有公寓房间用户(租客)租约(合同)看房预约浏览历史后台管理系统用户,各实体间的关系如下
在这里插入图片描述

2.2 逻辑模型设计

根据原型明确各实体所需属性并明确各表关联字段,得到的完整的逻辑模型如下图所示。下面逐一分析。
在这里插入图片描述

2.2.1 公寓信息

公寓信息包含的属性有公寓名称公寓简介公寓地址公寓联系方式公寓图片公寓标签公寓杂费公寓发布状态,这部分的逻辑模型如下图所示
在这里插入图片描述

2.2.2 房间信息

房间信息包含的属性有房间号房间租金房间所属公寓房间可选租期房间可选支付方式房间属性房间标签房间配套房间图片房间发布状态,这部分的逻辑模型如下图所示
在这里插入图片描述

2.2.3 用户信息

用户信息包含的属性有手机号码密码头像昵称账号状态,这部分的逻辑模型如下
在这里插入图片描述

2.2.4 看房预约信息

看房预约包含的属性有预约用户信息预约公寓信息预约时间备注信息预约状态,这部分的逻辑模型如下
在这里插入图片描述

2.2.5 租约信息

租约信息包含签约用户信息签约房间信息租期支付方式租约来源租金押金,这部分的逻辑模型如下
在这里插入图片描述

2.2.6 浏览历史信息

浏览历史指的是用户浏览房间详情的历史,包含的属性有用户信息房间信息浏览时间,这部分的逻辑模型如下

在这里插入图片描述

2.2.7 后台管理用户信息

后台管理系统用户包含的属性有,这部分的逻辑模型如下

在这里插入图片描述

2.3 物理模型设计

本项目采用MySQL数据库,所有表均使用InnoDB存储引擎,完整的物理模型如下图。

在这里插入图片描述

注意

  • 所有表均省略了create_timeupdate_timeis_deleted三个字段。
  • 所有的状态或类型字段(例如租约状态),均使用数字表示。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

minos 2.5 中断虚拟化——vGIC

首发公号:Rand_cs 该项目来自乐敏大佬:https://github.com/minosproject/minos 这一节开始讲述真正的中断虚拟化,首先来看硬件方面的虚拟化。前文 minos 2.3 中断虚拟化——GICv2 管理 主要讲述 GICv2 的 Distributor 和 CPU Interface&…

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:3D扫描仪 实时创建 VR 内容

虽然 VR 技术彻底改变了娱乐、医疗、建筑、教育和产品设计等各个日常生活领域,但创建 VR 内容仍然是一项不易突破的挑战。 英伟达在旧金山举行的 Jetson TX2发布会上,展示了Jetson TX2如何能够加快 AI 计算、图形和计算机视觉的运行速度,并且…

【一小时学会Charles抓包详细教程】Charles 抓包相关设置 (7)

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 Charles 抓包相…

数据库学习总结

Mysql学习总结 汇总数据 聚集函数: 函数 说明 AVG() 返回某列的平均值 COUNT() 返回某列的行数 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某列值之和 例: AVG函数: select avg(grade) from topic; COUNT函…

WiFi蓝牙模块促进传统零售数字化转型:智能零售体验再升级

随着科技的不断发展,数字化转型已经成为了各行各业的必然趋势。在传统零售业中,WiFi蓝牙模块的应用正逐渐推动着行业的数字化转型,为消费者带来更加智能化、便捷化的零售体验。本文MesoonRF美迅物联网将从以下几个方面阐述WiFi蓝牙模块在传统…

稍微学学react

文章开始前,先划划水~ 今日份开心: 今天看之前发布的按钮npm包下载量有162次,早知道好好做了 今日份不开心: 爬岗位看到一个整体都挺满意的岗位,公司位置和发展大方向都好喜欢!!!…

机器学习学习(2)

基于数据流图的编程范式:声明式编程(Declarative Programming )、命令式编程(Imperative Programming ); 声明式编程(Declarative Programming ) 代表性框架:TensorFlow, CNTK, Caffe2 特点:用户只需要表达模型结构和需要执行的任务,无需关注底层的执行流程,框…

【UE+GIS】UE5GIS CAD或shp构建3D地形

贴合地形的矢量图形实现方法 一、灰度图的制作和拉伸换算1、基于高程点集实现2、基于等高线实现3、拉伸计算 二、生成地形模型的实现方案1、3Dmax导入灰度图2、使用ArcMap/Arcpro/FME等GIS数据处理工具3、UE导入灰度图 三、地形上叠加地形渲染效果的实现方案1、贴花2、数据渲染…

【transformers】pytorch基础

传送门:https://transformers.run/c2/2021-12-14-transformers-note-3/ pytorch基础知识 tensor : 张量。 需要知道的内容: 张量构建张量计算自动微分形状调整广播机制索引与切片升降维度 Tensor 张量:理解成高纬度的向量就完…

【最新鸿蒙应用开发】——什么是状态管理?

状态管理 在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染&#xf…

系统安全及其应用

系统安全: 1)保护数据安全, 2)互联网,网络业务服务等,必须要通过工信部的资质审核 3)保护品牌形象 应用: 账号安全 1)把不需要或者不想登录的用户设置为nologin us…

echarts绘制三维柱状图

echarts ECharts 是一个使用 JavaScript 实现的开源可视化库,主要用于数据的可视化展示。ECharts 支持丰富的图表类型,如折线图、柱状图、饼图、地图、K线图等,可以满足不同类型数据的展示需求。 文档地址:echarts 本次所绘制三…

Django request.POST获取提交的表单数据

在Django中,request.POST 是一个特殊的属性,它是一个类似于字典的对象,用于访问通过POST方法提交的表单数据。如果你在视图中使用 print(request.POST.get(username)),这通常意味着你正在尝试从一个HTML表单中获取一个名为 userna…

数学建模之MATLAB入门教程(上)

前言: • MATLAB是美国Math Works公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 • MATLAB将数值分析、矩阵计算、科学数据可视化以及非线性动…

Ubuntu server 24 (Linux) 普通用户不能sudo 也不能使用root登录 忘记root密码 修复解决方案

一 普通用户无法sudo,同时也没有其他用户可用 #test用户使用sudo报错,没有权限 testtest:~$ sudo vi /etc/sudoers [sudo] password for test: test is not in the sudoers file. 二 关闭ubuntu 服务器,重新开机 按下ESC 键 1 出现GRUB…

【工具】探索 MOU:每用户通话时长

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 🎵 邓紫棋《光年之外》 什么是 MOU…

RunLoop小白入门

核心概念 什么是 RunLoop ? RunLoop 是 iOS 和 macOS 应用程序框架中的一个核心概念,用于管理线程的事件处理。它可以看作是一个循环,用于持续接收和处理各种事件,如用户输入、定时器、网络事件等。RunLoop 在保持应用程序响应用户交互和系…

【再探】设计模式—备忘录模式与解释器模式

备忘录模式是用于保存对象在某个时刻的状态,来实现撤销操作。而解释器模式则是将文本按照定义的文法规则解析成对应的命令。 1 备忘录模式 需求:保存对象在某个时刻的状态,后面可以对该对象实行撤销操作。 1.1 备忘录模式介绍 提供一种状…

Anaconda创建python环境默认C盘,如何修改路径

文章目录 前言解决方案1.找到Anaconda的根目录2. 找到根目录文件夹,右键-属性-安全 测试-重新创建新的python环境 前言 使用 Anaconda创建python环境,默认在C盘。 如何修改到别的路径呢? base环境 是安装 Anaconda是安装的默认环境&#x…

YOLOv8_obb训练流程-原理解析[旋转目标检测理论篇]

在旋转目标检测网络中,换了个顺序,先把训练流程捋一遍,然后再取捋一下测试的流程。由下图的YOLOv8l_obb网络结构图可以看到相对于目标检测网络,旋转目标检测网络只是在Head层不相同,在每个尺度特征层中增加了Angle分支(浅蓝色),通过两个卷积组和一个Conv卷积得到得到通…