项目中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三个字段。
  • 所有的状态或类型字段(例如租约状态),均使用数字表示。

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

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

相关文章

计算机视觉与模式识别实验1-3 图像滤波

文章目录 🧡🧡实验流程🧡🧡1. 对图像加入椒盐噪声,并用均值滤波进行过滤2.对图像加入高斯噪声,并用高斯滤波进行过滤3.对图像加入任意噪声,并用中值滤波进行过滤4.读入一张灰度图像,…

2.6 Docker部署多个前端项目

2.6 Docker部署多个项目 三. 部署前端项目 1.将前端项目打包到同一目录下(tcm-ui) 2. 部署nginx容器 docker run --namenginx -p 9090:9090 -p 9091:9091 -d nginx3. 复制nginx.conf文件到主机目录 docker cp nginx:/etc/nginx/nginx.conf /root/ja…

html前端怎么赚钱:探索多元盈利途径

html前端怎么赚钱:探索多元盈利途径 在数字化时代,HTML前端技能成为越来越多人追求的职业方向。然而,仅仅掌握HTML前端技能并不足以确保稳定的收入来源。那么,HTML前端如何赚钱呢?本文将从四个方面、五个方面、六个方…

[学习笔记](b站视频)PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】(ing)

视频来源:PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】 前面P1-P5属于环境安装,略过。 5-6.Pytorch加载数据初认识 数据文件: hymenoptera_data # read_data.py文件from torch.utils.data import Dataset …

数仓建模详解及示例代码

数仓建模详解及示例代码 目录: 一、引言 1.1 背景介绍 1.2 研究意义 二、数仓建模基本概念 2.1 数据仓库的定义 2.2 数仓建模的基本原理 三、数仓建模过程 3.1 需求分析 3.2 概念模型设计 3.3 逻辑模型设计 3.4 物理模型设计 四、数仓建模工具 4.1 ERwin 4.2 P…

JS判断对象是否为空对象的几种方法

通过JSON自带的stringify()方法判断 function isEmptyObj(obj) { return JSON.stringify(obj) {} } console.log(对象是否为空:, isEmptyObj({})) for in 循环判断 function isEmptyObj(obj) { for(let item in obj) { return true } return f…

数据结构与算法05-链表

介绍 基于结点的数据结构拥有独特的存取方式,因此在某些时候具有性能上的优势。 本章我们会探讨链表,它是最简单的一种基于结点的数据结构,而且也是后续内容的基础。 你会发现,虽然链表和数组看上去差不多,但在性能上…

Go 1.23新特性前瞻

2024年5月22日,Go 1.23版本[1]功能特性正式冻结,后续将只改bug,不增加新feature。 对Go团队来说,这意味着开始了Go 1.23rc1的冲刺,对我们普通Gopher而言,这意味着是时候对Go 1.23新增的功能做一些前瞻了&am…

SAP PP学习笔记15 - MTS(Make-to-Stock) 按库存生产(策略11,策略30)

上一章学习了MTS(Make-to-Stock)按库存生产(策略10)。 SAP PP学习笔记14 - MTS(Make-to-Stock) 按库存生产(策略10),以及生产计划的概要-CSDN博客 本章继续讲MTS(Make-t…

革新风暴来袭:报事报修系统小程序如何重塑报事报修体验?

随着数字化、智能化的发展,已经应用在我们日常生活和工作的方方面面。那么,你还在为物业报修而头疼吗?想象一下,家里的水管突然爆裂,你急忙联系物业,时常面临物业电话忙音、接听后才进行登记繁琐的报修单、…

Vue.js 与 TypeScript(1) :项目配置、props标注类型、emits标注类型

像 TypeScript 这样的类型系统可以在编译时通过静态分析检测出很多常见错误。这减少了生产环境中的运行时错误,也让我们在重构大型项目的时候更有信心。通过 IDE 中基于类型的自动补全,TypeScript 还改善了开发体验和效率。 一、项目配置 在使用 npm cr…

2024后端服务架构升级

文章目录 背景改造方案新架构图技术选型思考 服务拆分公共组件设计自部署算法服务排期计划 全球多活改造背景架构图分布式ID 背景 1、xx业务经过多轮的业务决策和调整,存在非常多技术包袱,带了不好的用户体验和极高的维护成本 2、多套机房部署&#xf…

简单、免费、强大的高效率截图工具神器——Snipaste(下载安装+常用快捷键教学)

一、简介 Snipaste是一款功能强大的截图和贴图工具,它允许用户快速截取屏幕上的任意区域,并将截图以浮窗形式显示在屏幕上。用户可以自由调整浮窗的位置和大小,甚至将浮窗设置为半透明,以便在查看屏幕内容时不会遮挡视线。此外&a…

自幂数的统计

一个n位自然数等于自身各个数位上数字的n次幂之和 例如: 1531^35^33^3 16341^46^43^44^4 如果自幂数是一位数叫独身数 三位自幂数叫做水仙花数 四位自幂数叫做四叶玫瑰数 五位自幂数叫做五角星数 要求一:统计有多少个水仙花数 要求二:…

Optional 类

概述 到目前为止,臭名昭著的空指针异常是导致 Java 应用程序失败的最常见原因。以前,为了解决空指针异常,Google 公司著名的 Guava 项目引入了 Optional 类, Guava 通过使用检查空值的方式来防止代码污染,它鼓励程序员…

MATLAB误差估计扩展卡尔博斯方法的目录大纲

MATLAB误差估计扩展卡尔博斯方法的目录大纲 目录: 一、引言 1.1 背景介绍 1.2 研究意义 二、基本理论 2.1 误差估计的基本概念 2.2 卡尔博斯方法的基本原理 三、MATLAB误差估计扩展卡尔博斯方法 3.1 MATLAB简介 3.2 MATLAB在误差估计中的应用 3.3 MATLAB扩展卡尔…

[数据结构]字典树

概念: 字典树是一种数据结构,常用于统计,排序和保存大量的字符串(但不仅限于字符串)。主要思想是利用字符串的公共前缀来节约存储空间。 实现原理: 在开发的过程中如果需要使用字典树,不必自己…

图的创建和遍历

孤勇者探险(图的遍历) 作者 YJ 单位 西南石油大学 一款名为“孤勇者探险”的游戏,游戏中共有若干个小岛,每个岛上均有怪兽,闯关者打倒岛上的怪兽则可获得该岛对应的游戏积分(每个岛的积分根据难度可能不相…

【recast-navigation-js】使用three.js辅助绘制Agent

目录 说在前面使用Tweakpane添加CrowAgent其他 说在前面 操作系统&#xff1a;windows 11浏览器&#xff1a;edge版本 124.0.2478.97recast-navigation-js版本&#xff1a;0.29.0golang版本&#xff1a;1.21.5 使用Tweakpane fps面板interface FPSGraph extends BladeApi<B…

C语言编程零基础:开启编程之旅的起点

C语言编程零基础&#xff1a;开启编程之旅的起点 在数字化时代的浪潮中&#xff0c;编程技能已逐渐成为一项必备的基本素养。而C语言&#xff0c;作为计算机编程领域的入门语言&#xff0c;以其简洁明了、结构清晰的特点&#xff0c;吸引着无数初学者踏上编程的征程。那么&…