mysql数据库物理结构设计_MySQL数据库结构设计

本文探讨了MySQL数据库物理结构设计的重要性,包括减少数据冗余、避免数据异常和节省查询空间。通过举例说明了数据库优化的必要性,并介绍了数据库结构优化的逻辑设计和物理设计两个阶段。此外,还讲解了数据库反范式化、字段类型选择以及日期时间类型的比较,提供了一些建议以提高查询效率。
摘要由CSDN通过智能技术生成

前言

在编码过程中,如果MySQL数据结构设计不好的话,会大大影响开发人员编码效率。比如说MySQL数据库表设计不规范,创建时间字段设计成cjsj,创建者字段设计成cjr或者cjz。这样的数据库表可读性和表意性相当差。下面我们就来讲讲如何规范设计数据库结构。

数据库结构优化

数据库结构优化的目的有哪些?

减少数据冗余。

尽量避免数据维护中出现更新,插入,删除异常。插入异常是指如果表中的某个实体随着另一个实体而存在。更新异常是指如果更改表中的某个实体的单独属性时,需要对多行进行更新。删除异常是指如果删除表中的某一实体则会导致其他实体消失。

节约数据查询空间。

假设有一张学生选课表,字段信息如下:

id ,

stu_id //学生id,

stu_name //学生姓名,

stu_sex //学生性别,

course_name //课程名称,

course_point //学分

插入异常就是当插入几门课程的时候,stu_id和stu_name,stu_sex会为空。如果将stu_id设置为非空,会造成异常。

更新异常就是当更新某一个课程的学分时,那么这一门科目的选课记录都将要更新。

删除异常就是当删除某一个课程时,那么这一门科目的选课记录都要删除。

解决上述异常很简单,设计数据库表时遵循数据库三大范式即可。

数据库结构设计又分为逻辑设计和物理设计。

前面说的数据库三大范式可以说是逻辑设计。逻辑设计是根据数据实体之间的逻辑关系对表进行设计。一个好的逻辑设计可以解决数据冗余和数据维护的异常,反之亦然。

物理设计则是根据所使用的数据库特点进行表结构设计。比如Myisam引擎不支持事务,但是支持并发插入的表级锁,主要应用于select,insert。不适合读写频繁的场景。Innodb支持事务,支持MVCC(多版本并发控制)的行级锁,可以应用事务处理。

维护优化是指根据实际情况对索引存储结构等进行优化。

一般数据库结构设计的步骤是:

1.需求分析:全面了解产品设计的存储需求。存取需求是指数据库要存储什么样的数据,这些数据具有什么特点。数据处理需是指如何对数据库进行读取和写入以及对数据的响应时间有什么样的要求,数据的安全性和完整性需求是数据的生命周期。

2.进行逻辑设计和物理设计。

3.维护优化。

有一些场景,我们需要反范式化设计。比如查询订单信息时,我们肯定是要查询下单的收货人信息。如果我们更改了收货人信息,那么查询订单时,会出现收货人信息不一致的现象。所以我们要在订单表中冗余收货人信息。

范式化与反范式化

反范式化设计就是为了性能和读取效率的考虑而适当的对数据库设计范式进行违反,而允许存在少量数据冗余。换句话来说反范式化就是使用空间换时间。

范式化的优点:

1.可以减少数据冗余。

2.范式化的更新操作比反范式化要快。

3.范式化的表同样比反范式化的表要小。

范式化的缺点:

1.关联查询。

2.更难于索引优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值