首页 > 数据库 >数据库的三大范式;varchar与char的区别

数据库的三大范式;varchar与char的区别

时间:2023-10-07 15:01:43浏览次数:34  
标签:范式 char 长度 varchar 主键 三大

一、数据库的三大范式

1.1第一范式

数据表中的每一列(每个字段)都不可以再拆分。例如用户表,用户地址还可以拆分成国家、省份、市,这样才符合第一范式。

1.2第二范式

在第一范式的基础上,非主键完全依赖于主键,而不能是依赖于主键的一部分。

例如订单表里面,存储了商品信息(商品价格、商品类型),那就需要把商品ID和订单ID作为联合主键,才满足第二范式。

1.3第三范式

在满足第二范式的基础上,表中的非主键只依赖于主键,而不依赖于其它非主键。

例如订单表就不能存储用户信息(姓名、地址)。

1.4三大范式的关系

第一范式包含第二、三范式,第二范式包含第三范式。

1.5三大范式的作用

三大范式的作用是为了控制数据库的冗余,是对空间的节省。

实际上一般互联网公司的设计都是反范式的,通过冗余一些数据,避免跨表跨库,利用空间换时间,提高性能。

二、varchar与char的区别

数据库的三大范式;varchar与char的区别_第二范式

2.1 char

char表示定长字符串,长度固定;

如果插入数据长度小于char的固定长度则用空格填充;

因为长度固定,所以存取数据比varchar要快很多,甚至能快50%,但因其长度固定所以占据多余的空间,是用空间换时间;

对于char来说,最多能存放的字符个数为255,和编码无关。

2.2 varchar

varchar表示可变长字符串;

插入数据是多长就按照多长来存储;

varchar再存取方面于char相反,因其长度不固定所以存取较慢,但是不占据多余的空间,是时间换空间;

对于varchar来说最多能存放的字符个数为65532

日常设计时,对于长度相对固定的字符串可以使用char,对于长度不确定的可以使用varchar更合适。

标签:范式,char,长度,varchar,主键,三大
From: https://blog.51cto.com/u_16255459/7738026

相关文章

  • 视频汇聚平台EasyNVR可提供的三大视频监控系统可用的楼宇对讲系统
    EasyNVR是一种可支持设备通过RTSP/Onvif流媒体协议接入的视频处理系统。该系统能够对接入的视频流进行处理,并以多种格式进行多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS和WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端录像、云存储、录像......
  • Nacos Helm Chart Deploy Demo
    文章目录介绍准备条件定制values.yaml检查登陆介绍Nacos/nɑ:kəʊs/是DynamicNamingandConfigurationService的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性......
  • QT5.14: 打开文件出错warning: format '%s' expects argument of type 'char*'
    错误提示信息:D:\Demo\QT5.14\CH5\CH501\imgprocessor.cpp:158:warning:format'%s'expectsargumentoftype'char*',butargument2hastype'QChar*'[-Wformat=]printf("fileName:%s\n",filename.data());原函数代码:......
  • PyCharm最新特性让你爱上开发(含2023激活方案)
    PyCharm最新特性让你爱上开发(含2023激活方案)在过去的几年里,PyCharm一直在不断更新和改进,最新的2023.2版本更是带来了许多强大的新特性,让我对开发更加爱不释手。简化团队合作PyCharm2023.2新增了共享索引功能,可以帮助开发团队快速查找和定位代码。共享索引是基于Git存储......
  • C error:deprecated conversion from string constant to 'char*' [-Wwrite-strings]
    问题描述解决C++中[Warning]deprecatedconversionfromstringconstantto'char*'[-Wwrite-strings]char*string="aaabbbcc";//warning的原因是字符串常量存放在const内存区...原因主程序初始化字符串,是字符串常量,该字符串的内存分配在全局的const内存区。......
  • Springboot+Echarts+Element(二)
    今天主要是记录一些问题,主要是在使用vue通过axios发送请求的时候,起初我认为需要把vue和springboot整合到一块但是在听完课之后发现并不需要,因为vue的目的是实现前后端分离的开发,因此两个项目可以同时运行,调整vue项目就是改前端代码,调整springboot就是改后端代码,前端只负责发送请......
  • About how to use Char.GetNumericValue
    hemethodChar.GetNumericValueretrievesthenumericvalueofaspecificchar.However,it'simportanttonoteafewthingsaboutthismethod:It'sdesignedtoworkonindividualcharvalues,notonlistsorstrings.Themethodreturnsadouble......
  • 无涯教程-JavaScript - UNICHAR函数
    描述UNICHAR函数返回给定数字值引用的Unicode字符。语法UNICHAR(number)争论Argument描述Required/OptionalNumberNumberistheUnicodenumberthatrepresentsthecharacter.RequiredNotes返回的Unicode字符可以是字符串,如UTF-8或UTF-16代码。如果Unicod......
  • CHAR与VARCHAR如何选择
    在CHAR和VARCHAR的选择上,这些情况下使用VARCHAR是合适的:字符串列的最大长度比平均长度大很多,列的更新很少;使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储。CHAR适合存储很短的字符串,或者所有值定长或都接近同一个长度。例如,CHAR非常适合存储密码的MD5值,因为这是......
  • Charge Pump
    https://juejin.cn/post/7242717749906161720ChargePump倍压输出的工作原理ChargePump(电荷泵)最经典的应用莫过于倍压输出,其基本原理简而言之就是对电容进行充放电,利用电容能够储存电荷的原理将其从充电回路隔离,通过放电回路对输出进行放电。首先,充电阶段:Q1/Q4导通,Q2/Q3关......