关系数据库(MySQL)的规范化、以及设计原则
1.了解范式(NF)
为了使得关系数据库能够符合规范理论,所有的数据库表都要满足:范式。
关系数据库的范式有五类:第一范式,第二范式,....第五范式。下面我们来了解一下前三个范式:
第一范式:简单来说就是表中不能嵌套表(使用一个列不能有多个值,列是原子级别的不能在分割)
第二范式:(在介绍第二范式之前,首先要知道什么是主键,如果这一列是主键那么,每一行的的这一列都是不能为空且不能重复的)
简单来说第二范式就是说,你的属性必须完全依赖你的主键,如果你的表里面有一个属性是不依赖你的主键的,或者是依赖你的联合主键中的一个,那么你必须将表进行拆分。
最后最简单来讲就是,你表中的属性要和你的主键相关联,能被主键标识。
第三范式:就是说一张表里面不能存在传递依赖。就是说你这表里面的某一属性不能依赖另外一个属性来传递。
2.数据库的设计原则
1.数据库中的数据应该尽可能的实现共享,减少重复等等。
2.保证输入、修改数据时的一致性和正确性。
3.保证数据与使用数据的程序有较高的独立性。
3.实体的三种关系
1.一对一:一张表中的一个属性只与另外一张表的一个属性匹配。
2.一对多:一张表中的一个属性可以与另外一张表的多个属性匹配。
3.多对多:多对多,需要使用三种表来实现。第三个表为链接表,链接表里面含有另外两张表的主键。
4.数据库的三级模式结构
1.外模式:一个数据库可以有多个外模式,是呈现在用户目前的模式。可以看见数据逻辑和特征描述。
2.模式:数据库只有一个逻辑模式,在数据库的中间层。
3.内部=模式:数据库只有一个内模式,就是对数据库的存储方式在底层的描述。
关系数据库(MySQL)的规范化、以及设计原则的更多相关文章
- MySQL数据库主键设计原则
目录 1. 主键定义... 5 2. 主键设计原则... 5 2.1 确保主键的无意义性... 5 2.2 采用整型主键... 5 2.3 减少主键的变动... 5 2.4 避免重复使用主键... 6 ...
- 「 MySQL高级篇 」MySQL索引原理,设计原则
大家好,我是melo,一名大二后台练习生,大年初三,我又来充当反内卷第一人了!!! 专栏引言 MySQL,一个熟悉又陌生的名词,早在学习Javaweb的时候,我们就用到了MySQL数据库,在那个阶段, ...
- 「MySQL高级篇」MySQL索引原理,设计原则
大家好,我是melo,一名大二后台练习生,大年初三,我又来充当反内卷第一人了!!! 专栏引言 MySQL,一个熟悉又陌生的名词,早在学习Javaweb的时候,我们就用到了MySQL数据库,在那个阶段, ...
- mysql数据库关系表设计原则
三范式https://blog.csdn.net/qq_36432666/article/details/78934073 https://kb.cnblogs.com/page/138526/ ht ...
- MySQL数据库索引的设计原则
为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引. 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录.例如,学生表中学号是具有唯 ...
- Mysql 学习-索引的设计原则
索引的设计不合理或者缺少索引都会对数据库和应用程序的性能造成障碍.高效的索引对获的良好性能非常重要.设计索引是,应该考虑一下准则: (1)索引并非语讹夺越好,若一个表中有大量索引,不仅占用磁盘空间,而 ...
- MySQL三层结构、用户权限、索引设计原则
一.守护进程是什么? Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.它不需要用户输入就能运行而且提供某种服务,不是对 ...
- mySql 数据库设计原则
mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...
- mysql的索引设计原则以及常见索引的区别
索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索 ...
随机推荐
- Hadoop---桥接集群的搭建
Hadoop---桥接群的搭建 集群分配:(一主四从) 我电脑的虚拟机:hadoop4:namenode+datanode+resourceManager 我one-friend的电脑虚拟机:hm ...
- InnoDB表空间、段、区
1. 表空间是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中.默认,InnoDB存储引擎只有一个表空间ibdata1,即所有数据都存放在这个表空间内.如果用户启用了参数innodb_ ...
- C#如何通过反射调用类下的方法
首先模拟一个mvc的项目,创建一个业务类(HomeService),在类下创建3个方法 public class HomeService { /// <summary> /// 无参方法 ...
- 未能加载文件或程序集“Oracle.DataAccess”或它的某一个 依赖项。如何解决?
之前项目做大数据批量添加使用了OracleBulkCopy,这个是引用Oracle.DataAccess.Client的命名空间,所以项目要引用一个Oracle.DataAccess.dll, 但是运 ...
- js--事件冒泡-捕获
什么是事件流: 事件流描述的是从页面中接受事件的顺序,但有意思的是,微软(IE)和网景(Netscape)开发团队居然提出了两个截然相反的事件流概念, IE的事件流是事件冒泡流(event bubbl ...
- CAFFE 调试
在Make.config 文件里将DEBUG=1的注释去掉,再make.可以用IDE如eclipse来import makefile工程.必要时按照IDE的提示将源文件cpp和对应的bin文件对应.
- Generative Model 与 Discriminative Model
[摘要] - 生成模型(Generative Model) :无穷样本==>概率密度模型 = 产生模型==>预测 - 判别模型(Discriminative Model): ...
- DLL的Export和Import及extern "C"
今天使用Unrar.dll,在调用RARProcessFileW时,VS总是提示“error LNK2001: 无法解析的外部符号”. Unrar.dll中是使用 extern "C&quo ...
- LTP(LinuxTest Project)测试工具
LTP(LinuxTest Project)是SGI.IBM.OSDL和Bull合作的项目,目的是为开源社区提供一个测试套件,用来验证Linux系统可靠性.健壮性和稳定性.LTP测试套件是测试Linu ...
- day30 操作系统介绍 进程的创建
今日内容 一.操作系统的简单介绍 二,并发与并行 三.同步异步阻塞非阻塞 四.multiprocess模块 1. 操作系统的简单介绍 多道技术(重点) 空间复用: 时间复用: 进程之间是空间隔离的 分 ...