【刷题】数据库三大范式
数据库 刷题 三大 范式
2023-09-14 08:59:08 时间
属性不可分割;主键约束;外键约束。
第一范式就是属性不可分割,每个字段都应该是不可再拆分的。
比如一个字段是姓名(NAME),在国内的话通常理解都是姓名是一个不可再拆分的单位,这时候就符合第一范式;但是在国外的话还要分为FIRST NAME和LAST NAME,这时候姓名这个字段就是还可以拆分为更小的单位的字段,就不符合第一范式了。
第二范式就是要求表中要有主键,表中其他其他字段都依赖于主键,因此第二范式只要记住主键约束就好了。
比如说有一个表是学生表,学生表中有一个值唯一的字段学号,那么学生表中的其他所有字段都可以根据这个学号字段去获取,依赖主键的意思也就是相关的意思,因为学号的值是唯一的,因此就不会造成存储的信息对不上的问题,即学生001的姓名不会存到学生002那里去。
第三范式就是要求表中不能有其他表中存在的、存储相同信息的字段,通常实现是在通过外键去建立关联,因此第三范式只要记住外键约束就好了。
比如说有一个表是学生表,学生表中有学号,姓名等字段,那如果要把他的系编号,系主任,系主任也存到这个学生表中,那就会造成数据大量的冗余,一是这些信息在系信息表中已存在,二是系中有1000个学生的话这些信息就要存1000遍。因此第三范式的做法是在学生表中增加一个系编号的字段(外键),与系信息表做关联。
范式并非硬性要求,而是设计时尽可能遵守的大原则。
因此,数据库设计存在不符合范式规定
相关文章
- 存储过程系列之存储过程sql数据库调用和程序代码调用
- SQL SERVER数据库开发必备技能实战
- MySQL数据库学习笔记(四)----MySQL聚合函数、控制流程函数(含navicat软件的介绍)
- 【刷题】面筋-mysql-如何对数据库进行备份
- 【刷题】面筋-数据库-mysql的优化
- 【刷题】数据库三大范式
- 数据库内核月报 - 2015 / 09-PgSQL · 答疑解惑 · 诡异的函数返回值
- thinkphp6: 数据库查询分页(thinkphp 6.0.9/php 8.0.14)
- 数据库助手 SoftTree SQL Assistant 12.0
- Python将JSON格式数据转换为SQL语句以便导入MySQL数据库
- linux下用OCI库访问oracle数据库返回错误Cannot create OCI environment!;
- 【SQL Server备份恢复】维护计划实现备份:每周数据库完整备份、每天差异备份、每小时日志备份
- Neutron数据库同步错误 NotImplementedError: No support for ALTER of constraints in SQLite dialect
- 分布式锁的几种使用方式(redis、zookeeper、数据库)
- 登录和访问EI(Engineering Village)数据库查找文献