一、数据库表设计三范式
三范式
第一范式理解
关键点:列都是不可再分,第一范式的目标是确保每列的原子性,每列都是不可再分的最小数据单元
不满足第一范式举例
满足第一范式举例
第二范式理解
关键点:首先满足第一范式,并且表中非主键列不存在对主键不依赖或者部分依赖,确保每个列都和主键相关。一般因为是存在多个主键,或者存在复合主键,因此需要拆表
不满足第二范式举例
满足第二范式举例
第三范式理解
关键点:满足第二范式,并且表中的列不存在对非主键列的传递依赖,每列都和主键列直接相关,而不是间接相关
不满足第三范式举例
满足第三范式举例
二、表设计类型定义几个点区别
字符类型和长度整数类型长度区别
带符号和不带符号区别
tinyint(1)还是选择tinyint(4)
情况 介绍 场景 tinyint(1) unsigned 可以存储0,1,2,3....9 使用boolean类映射:0映射为false,1-9映射为true只存储0和1,表示true或false,则使用tinyint(1)。 例如:业务字段中存在是否XX,即可这么设计 tinyint(4) unsigned zerofill 在一定范围内可以存储,只不过这里4代表显示4位,只有带zerofill 时,查询的时候会自动向左边补0。例如: 如果实际值是2,如果列指定了zerofill,查询结果就是0002,左边用0来填充 如果存储的数值有拓展,可以设置为tinyint(指定显示长度)。例如:以后可能不仅仅是0和1,可能会存储其他数值的时候。这个时候留出一定拓展性。
大文本字段设计
三、列类型类型和表设计规范
列类型和Java类型转换:参考MySql官网
MySQL :: MySQL Connector/J 8.0 Developer Guide :: 6.5 Java, JDBC, and MySQL Types
表设计规约:参考阿里巴巴编码规约
《Java开发手册》v1.5.0 华山版.pdf
四、表设计要掌握知识点
表的关系分类
bilibili html5 player
表约束
Bilibili External Player
表索引
Bilibili External Player
精彩内容
发表评论