专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

数据库设计技巧大全

来源:小易整编  作者:小易  发布时间:2023-03-06 04:14
摘要:数据库设计技巧大全对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节。系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。后端开发的日常工作,需要不断的建库和建表,来满足业务需求。通常...
  • timestamp:用4个字节来保存数据,它的取值范围为1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07。此外,它还跟时区有关。

  • datetime:用8个字节来保存数据,它的取值范围为1000-01-01 00:00:00 ~ 9999-12-31 23:59:59。它跟时区无关。

优先推荐使用datetime类型保存日期和时间,可以保存的时间范围更大一些。

温馨提醒一下,在给时间字段设置默认值是,建议不要设置成:0000-00-00 00:00:00,不然查询表时可能会因为转换不了,而直接报错。

11.金额字段

mysql中有多个字段可以表示浮点数:float、double、decimal等。

而float和double可能会丢失精度,因此推荐大家使用decimal类型保存金额。

一般我们是这样定义浮点数的:decimal(m,n)。

其中n是指小数的长度,而m是指整数加小数的总长度。

假如我们定义的金额类型是这样的:decimal(10,2),则表示整数长度是8位,并且保留2位小数。

12.唯一索引

唯一索引在我们实际工作中,使用频率相当高。

你可以给单个字段,加唯一索引,比如:组织机构code。

也可以给多个字段,加一个联合的唯一索引,比如:分类编号、单位、规格等。

单个的唯一索引还好,但如果是联合的唯一索引,字段值出现null时,则唯一性约束可能会失效。

创建唯一索引时,相关字段一定不能包含null值,否则唯一性会失效。

13.字符集

mysql中支持的字符集有很多,常用的有:latin1、utf-8、utf8mb4、GBK等。

这4种字符集情况如下:

数据库设计技巧大全

latin1容易出现乱码问题,在实际项目中使用比较少。

而GBK支持中文,但不支持国际通用字符,在实际项目中使用也不多。

从目前来看,mysql的字符集使用最多的还是:utf-8和utf8mb4。

其中utf-8占用3个字节,比utf8mb4的4个字节,占用更小的存储空间。

但utf-8有个问题:即无法存储emoji表情,因为emoji表情一般需要4个字节。

由此,使用utf-8字符集,保存emoji表情时,数据库会直接报错。

所以,建议在建表时字符集设置成:utf8mb4,会省去很多不必要的麻烦。

14. 排序规则

不知道,你关注过没,在mysql中创建表时,有个COLLATE参数可以设置。

例如:

CREATE TABLE `order` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `code` varchar(20) COLLATE utf8mb4_bin NOT NULL,
  `name` varchar(30) COLLATE utf8mb4_bin NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `un_code` (`code`),
  KEY `un_code_name` (`code`,`name`) USING BTREE,
  KEY `idx_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_
bin

它是用来设置排序规则的。

字符排序规则跟字符集有关,比如:字符集如果是utf8mb4,则字符排序规则也是以:utf8mb4_开头的,常用的有:utf8mb4_general_ci、utf8mb4_bin等。

其中utf8mb4_general_ci排序规则,对字母的大小写不敏感。说得更直白一点,就是不区分大小写。

而utf8mb4_bin排序规则,对字符大小写敏感,也就是区分大小写。

说实话,这一点还是非常重要的。

假如order表中现在有一条记录,name的值是大写的YOYO,但我们用小写的yoyo去查,例如:

select * from order where name='yoyo';

如果字符排序规则是utf8mb4_general_ci,则可以查出大写的YOYO的那条数据。

如果字符排序规则是utf8mb4_bin,则查不出来。

由此,字符排序规则一定要根据实际的业务场景选择,否则容易出现问题。

15.大字段

我们在创建表时,对一些特殊字段,要额外关注,比如:大字段,即占用较多存储空间的字段。

比如:用户的评论,这就属于一个大字段,但这个字段可长可短。

但一般会对评论的总长度做限制,比如:最多允许输入500个字符。

如果直接定义成text类型,可能会浪费存储空间,所以建议将这类字段定义成varchar类型的存储效率更高。

当然,我还见过更大的字段,即该字段直接保存合同数据。

一个合同可能会占几Mb。

在mysql中保存这种数据,从系统设计的角度来说,本身就不太合理。

像合同这种非常大的数据,可以保存到mongodb中,然后在mysql的业务表中,保存mongodb表的id。


本文地址:IT百科频道 https://www.hkm168.com/tags/916642_3.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!

共3页 1 2 3 当前是最后一页

IT百科
小编:小易整编
相关文章相关阅读
  • 什么是结构化程序设计

    什么是结构化程序设计

    结构化程序设计是一种使程序更加清晰、易于理解和维护的编程方法论。通过将程序划分为不同的模块,并使用控制结构来组织这些模块,结构化程序设计使程序的开发和维护更加高效和可靠,无论是初学者还是有经验的开发者,都应该掌握结构化程序设计的基本原理和技...

  • javascript中的设计模式有哪些

    javascript中的设计模式有哪些

    javascript中的设计模式有:单例模式、策略模式、代理模式、迭代器模式、“发布-订阅”模式、命令模式、组合模式、模板方法模式、享元模式、职责链模式、中介者模式、装饰者模式、状态模式、适配器模式、外观模式等。本教程操作环境:window...

  • 数据库的substr函数用法是什么

    数据库的substr函数用法是什么

    数据库的substr函数用法:1、【substr(str,pos,len)】从pos开始的位置,截取len个字符;2、【substr(str,pos)】pos开始的位置,一直截取到最后。数据库的substr函数用法:1、SUBSTR(st...

  • 什么是数据库架构?数据库架构有几层

    什么是数据库架构?数据库架构有几层

    一:什么是数据库架构DBMS体系结构有助于数据库的设计,开发,实现和维护,数据库可以存储企业的关键信息,选择正确的数据库体系结构有助于快速安全地访问数据。二:数据库架构有几层1层架构最简单的数据库体系结构是1层,其中客户端,服务器和数据库都...

  • 关系型数据库系统事务的ACID特性是什么

    关系型数据库系统事务的ACID特性是什么

    关系型数据库系统事务的acid特性:1、原子性;事务里的所有操作要么全部做完,要么都不做。2、一致性;数据库要一直处于一致的状态。3、独立性;并发的事务之间不会互相影响。4、持久性;一旦事务提交后,它所做的修改将会永久的保存在数据库上。本教...

  • 在线投票系统的设计与实现

    在线投票系统的设计与实现

    在线投票系统的设计与实现随着互联网的不断发展,在线投票系统成为了一种非常方便和高效的方式来进行民意调查和选举。本文将介绍在线投票系统的设计和实现,并附带一些代码示例。一、系统设计功能需求分析在线投票系统主要具备以下功能:用户注册与登录:用户...

  • UI设计主要学什么?

    UI设计主要学什么?

    ui设计是指对软件的人机交互、操作逻辑、界面美观的整体设计;ui设计中文名字叫:用户界面设计。ui设计作为时下热门高薪职业之一,其发展前景不言而喻,应用领域非常广泛,那么ui设计都需要学习什么呢?下面本篇文章就来给大家介绍一下,希望对你们有...

  • MySQL中如何快速更改数据库名称

    MySQL中如何快速更改数据库名称

    1、新建数据库centos_old.mysql>createdatabasecentos_old;登录后复制2、使用selectconcat拼成所有renametable的语句。mysql-uroot-p-e"s...

  • 周排行
  • 月排行
  • 年排行

精彩推荐