数据库三范式解析
数据库三范式解析
数据库建表大家其实都会建,自己创建的表是自己用起来很方便,但是数据库的表并不是只用一个人看,其他人看起来就会很费力。一千个人眼里就有一千个懒羊羊,所以为了避免出现各种五花八门的专属数据库表出现。众多数据库大佬们都开始默默的遵守起数据库的范式了,而数据库的三范式用官方解析的话看起来很似是而非的感觉,所以这里把三范式以自己的理解描述给大家,如有不足欢迎指正。
第一范式:原子性,所有的字段都是不可以再分解的基本数据
通俗来讲就是列还可以再拆分,这样就不满足第一范式。
应改为:
将之前包含很多数据的列拆开。
第二范式:满足第一范式,表中数据有主键,其他数据需要和主键关联,不能只是部分关联。
这个时候“宠物性别”就没有完全和主键关联,只是部分关联了,“宠物性别”还和“宠物名称”关联。只根据狗主人的名字没办法分辨狗狗是公是母,不满足第二范式
应将一个表拆分为两个:
第三范式:满足第二范式,表中数据都需直接依赖主键,不可再与表中其他数据相依赖
表中数据“是否怀孕”直接依赖的是“宠物性别”,公的肯定不能怀孕啦。“宠物性别”直接依赖与“宠物名称”,所有“是否怀孕”属于间接依赖“宠物名称”。不满足第三范式。
应再次拆分表:
以上就是个人理解的数据库三范式了。
数据库三范式解析
数据库三范式解析
数据库建表大家其实都会建,自己创建的表是自己用起来很方便,但是数据库的表并不是只用一个人看,其他人看起来就会很费力。一千个人眼里就有一千个懒羊羊,所以为了避免出现各种五花八门的专属数据库表出现。众多数据库大佬们都开始默默的遵守起数据库的范式了,而数据库的三范式用官方解析的话看起来很似是而非的感觉,所以这里把三范式以自己的理解描述给大家,如有不足欢迎指正。
第一范式:原子性,所有的字段都是不可以再分解的基本数据
通俗来讲就是列还可以再拆分,这样就不满足第一范式。
应改为:
将之前包含很多数据的列拆开。
第二范式:满足第一范式,表中数据有主键,其他数据需要和主键关联,不能只是部分关联。
这个时候“宠物性别”就没有完全和主键关联,只是部分关联了,“宠物性别”还和“宠物名称”关联。只根据狗主人的名字没办法分辨狗狗是公是母,不满足第二范式
应将一个表拆分为两个:
第三范式:满足第二范式,表中数据都需直接依赖主键,不可再与表中其他数据相依赖
表中数据“是否怀孕”直接依赖的是“宠物性别”,公的肯定不能怀孕啦。“宠物性别”直接依赖与“宠物名称”,所有“是否怀孕”属于间接依赖“宠物名称”。不满足第三范式。
应再次拆分表:
以上就是个人理解的数据库三范式了。