第一范式(1NF):每列字段都是原子性的,不可分解;
eg:用户信息表中地址信息
编号姓名年龄地址
1张三30重庆市xxx区xxx街道xxxx号1-1
针对地址列是不可分割的,但是如果需要省市区信息的时候,就需要针对表设计进行调整。
注:上述地址无法精确地获取到地址中的省市区(用户填写时可能会存在不规范)。
编号姓名年龄省份城市区县详细地址
1张三30重庆市重庆市xxx区xxx号1-1
第二范式(2NF):非主键字段与全部主键必须全部依赖;
eg:学生信息表
学生编号课程编号学生名称课程名称所在班级班主任
11张三计算机3班X老师
此处设计就可以看出问题,学生编号和课程编号作为主键时,学生名称、所在班级等信息跟课程编号没有关系,不满足全部依赖,对上表进行调整。
注:上述表设计存在的问题是单新增学生时,还未定义课程的时候就会出现新增异常。
学生表
学生编号 学生名称 所在班级 班主任 1张三3班X老师2李四1班Y老师
课程表
课程编号 课程名称 1计算机2语文
学生课程关系表
学生编号 课程编号 111221
第三范式(3NF):非主键字段之间不存在间接依赖关系;
eg:学生信息表
学生编号学生名称班级编号班级名字
1张三1语文1班
此处表设计存在问题是若学生表存在大量数据,这时班级编号1需要改名,就需要将大量的数据进行update操作,不满足非主键字段之间不存在间接依赖关系(班级编号和班级名称存在依赖),如下进行调整。
学生表
学生编号学生名称班级编号
1张三1
班级表
班级编号班级名称
1语文1班
第四范式(4NF):消除多值依赖;
eg:客户联系方式
客户编号 固定电话 移动电话 122-123131xxxxxxxx211-123133xxxxxxxx
此处表设计看似问题不大,当用户存在多个移动电话时,固定电话为空,字段就冗余了,同时不便查询与统计,如下进行调整。
客户电话表
客户编号 电话号码 电话类型 111-123固定电话12131xxxxxxxx移动电话
第五范式(5NF):消除传递依赖;
当多个字段存在相互关系时,如字段A->B->C,这时只有当ABC都为主键时才能确认一条数据,这种情况就不满足条件,可考虑将AB作为一个表,AC作为一个表,BC作为一个表,虽然对表的维护性增强了,但是逻辑更清晰。
巴斯科德范式:主属性之间不存在部分或传递依赖。
当非主键字段之间不存在依赖,但是若主键A与字段B存在,A->B->A的传递依赖时则不满足该范式条件。
具体情况场景如已存在车辆信息表,针对驾驶信息进行填充,若在一张表内则会产生传递依赖,可能会出现大量冗余数据(不同驾驶员驾驶同一个车)。这时就会产生两个表,一个车辆表,一个驾驶信息表。

哈哈哈 子弹越打越多了
哈哈哈 子弹越打越多了
《刺客信条: 黑旗 记忆重置》回应DLC比本体贵: DLC非必须
《刺客信条:黑旗 记忆重置》的首发表现可以说不错,Steam玩家峰值直逼10万。然而Steam的玩家评价却“褒贬不一”。除了游戏宣发问题外,还有一个原因就是总价超越本体的大量DLC,让玩家觉得育碧“吃相难看”。《刺客…当臭猫扶贫神秘嘉豪号主!
原神: 7.0奥黛塔定位反转! 并非木偶专属, 冰神设计成最大悬念
各位旅行者,今天咱们来聊聊原神7.0版本里一个让人意外的角色调整——奥黛塔的定位变化。千万没想到,原本大家都以为奥黛塔是木偶的专属队友,结果根据她的机制和定位来看,这是一位同时拥有星超导和星扩散的双机制…哪辆车能不被28吨钢卷压成废铁? 哪辆车能不被28吨钢卷压成废铁?
原神: 新超导木偶队顶配配装攻略! 告别刮痧与充能卡顿
很多玩家都有这样的困惑,同样是木偶新超导队伍,部分玩家用四星队友就能打出高额满配伤害,而自己配齐五星阵容,却始终面临伤害刮痧、充能卡顿的问题。其实核心差距并非角色配置,而是多数玩家没有掌握版本更新后,…