MySQL进阶-3-SQL实战

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

(⾯试题)

  1. 请描述数据库设计的主要步骤,并说明每个步骤的重点?
  2. 请解释⼀下数据库设计中的范式,并举例说明它们的应⽤?
  3. 数据库范式可以解决什么问题?
  4. 在设计数据库表时,如何考虑数据的完整性和安全性?
  5. 请举例说明⼀对⼀、⼀对多和多对多关系在数据库设计中的实现⽅式?
  6. 请描述如何使⽤ E - R 图进⾏数据库设计,并举例说明?
  7. 如何在数据库设计阶段考虑系统的扩展性?

2. 软件⽣命周期

软件⽣命周期中以划分为可⾏性研究、需求分析、概要设计、详细设计、实现、组装(集成)测试、确认测试、使⽤、维护、退役10个阶段

数据库设计步骤

❤️ 可以分为四个阶段

• 需求分析

• 概念设计

• 逻辑设计

• 物理设计

需求分析

• 需求分析阶段产出的需求⽂档将指导数据库的设计,包括数据模型的构建和数据库结构的规划。

• 需求分析还包括数据的安全性和隐私保护要求,以及数据备份和恢复策略。

概念设计

• 概念性设计阶段,设计师需要构建数据模型,包括实体-关系模型(ER模型)和类图。

• ER模型通过实体、属性和关系来描述数据结构,是理解数据关系的重要⼯具。

• 类图则更侧重于对象之间的关系,适⽤于⾯向对象的数据库设计

逻辑设计

• 逻辑设计阶段,将概念设计转化为具体的数据库结构,包括表结构和视图的定义。

• 表结构定义包括字段的名称、数据类型、⻓度等属性,以及表之间的关系。

• 通过创建视图,可以简化复杂的查询,提⾼数据的安全性和易⽤性。

物理设计

• 物理设计阶段,需要考虑数据库的存储细节,包括⽂件的存储位置、是否创建索引和数据分区。

• ⽂件存储位置的选择会影响数据的访问速度和备份策略。

• 索引的创建需要权衡查询效率和维护成本。

• 数据分区可以提⾼⼤规模数据库的管理效率

2. 功能架构介绍-租房

3. 编写

绘制ER图

sql 复制代码
-- 创建C端用户表app_usre
create table app_usre (
    id bigint primary key auto_increment comment '编号,主键自增',
    nick_name varchar(64) not null comment '昵称',
    phone_num varchar(64) comment '电话',
    open_id varchar(64) comment '微信openId',
    password varchar(64) comment '密码',
    salt varchar(64) comment '盐',
    avatar varchar(255) comment '头像地址',
    remark varchar(255) comment '个人简介'
);






4. 建立关系

字典类型-字典条⽬

字典类型-字典条⽬之间是⼀对多系,⼀个类型下可以配置多个条⽬

1个字典有多个条目,就是有多个选择,下拉框有多个选择

聊天会话-聊天内容

聊天会话-聊天内容之间是⼀对多系,⼀个会话下多条聊天内容

房源与关联表

• 出租状态是房源是⼀对⼀关系

• 房源标签与房源是多对多关系

• 房源与⾏政区域是多对⼀关系

⼀对多关系在从表中通过关联字段与主表建⽴关系

多对多关系通过单独创建关系表建⽴两表之间的关系

5. 逻辑设计

数据库名: bit-zufang

表名前缀:为每个表添加必要的前缀,以便区分所⽀撑的业务类型,常⻅的前缀类型:

• 系统表(sys_):如系统⽤⼾表(sys_user)、系统⻆⾊表(sys_role)

• 业务表(app_):如⽤⼾表(app_user)、房源表(app_house)

• 字典表(dic_):如地区表(dic_region)、ICD编码(dic_icd)

• 关系表(rel_):如rel_user_role,保存多对多关系数据

• 统计表(sta_):如sta_product_sale,从其他表中计算得出统计数据

公共字段:⽆特殊说明的情况下,每张表必须有⻓整型的⾃增主键,删除状态、创建时间、更新时间,如下所⽰:

B端⽤⼾表sys_usre

⾏政区域表sys_region

字典类型表sys_dic_type

等等就不全部弄出来了

最后就是编写SQL了

总结

相关推荐
小高不会迪斯科10 小时前
CMU 15445学习心得(二) 内存管理及数据移动--数据库系统如何玩转内存
数据库·oracle
e***89010 小时前
MySQL 8.0版本JDBC驱动Jar包
数据库·mysql·jar
SQL必知必会13 小时前
SQL 窗口帧:ROWS vs RANGE 深度解析
数据库·sql·性能优化
Vicky-Min13 小时前
NetSuite中保存Bill时遇到Overage的报错原因
oracle·erp
一个天蝎座 白勺 程序猿14 小时前
破译JSON密码:KingbaseES全场景JSON数据处理实战指南
数据库·sql·json·kingbasees·金仓数据库
p***199414 小时前
MySQL——内置函数
android·数据库·mysql
SQL必知必会15 小时前
使用 SQL 进行 RFM 客户细分分析
大数据·数据库·sql
麦聪聊数据15 小时前
如何用 B/S 架构解决混合云环境下的数据库连接碎片化难题?
运维·数据库·sql·安全·架构
橘颂TA15 小时前
【MySQL】90% 开发者都踩过的坑:数据库数据类型选错有多可怕?
数据库·mysql·算法与结构
zhougl99616 小时前
数据库规范
java·数据库·oracle