关系数据库(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的索引设计原则以及常见索引的区别
索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索 ...
随机推荐
- 浏览器行为模拟之requests、selenium模块
requests模块 前言: 通常我们利用Python写一些WEB程序.webAPI部署在服务端,让客户端request,我们作为服务器端response数据: 但也可以反主为客利用Python的re ...
- weblogic补丁安装失败(Patch B25A is mutually exclusive and cannot coexist with patch(es): UIAL)
由于曝出漏洞(CVE-2017-3248)需要将weblogic补丁更新至B25A,但是出现报错.如下: Conflict(s) detected - resolve conflict conditi ...
- Ubuntu 14.04下如何更换更新源(更新为163源)
之前的安装ubuntu桌面版的之后安装yum,vim等会遇到一些问题, 比如:Ubuntu 14.04下如何更换更新源(更新为163源) 解决: http://jingyan.baidu.com/ar ...
- 如何搭一个vue项目
1.yarn global add @vue/cli (vue/cli是webpack的二次开发) 2.vue create 自定义项目名称 3.选择Manually select featu ...
- learning at command AT+CIMI
AT command AT+CIMI [Purpose] Learning how to get the International Mobile Subscriber Identity ...
- 关于java Collections.sort 排序
public static void main(String[] args) { int[] dd = {12,34,46,123,23,2,35,13,543231,65,5645,57}; Arr ...
- Python pycharm 引入需要使用的包
第一步 第二步 第三步
- ไม่มีวันเช่น--会有那么一天--电影《初恋这件小事》插曲--IPA--泰语
小清新的泰国的<初恋这件小事>插曲.
- Git超实用总结
Git 是什么? Git 是一个分布式的代码管理容器,本地和远端都保有一份相同的代码. Git 仓库主要是由是三部分组成:本地代码,缓存区,提交历史,这几乎是所有操作的本质,但是为了文章更加简单易懂, ...
- Ubuntu16.04 安装Teamviewer
有时需要远程控制ubuntu系统的电脑,Teamviewer在linux下也可以进行安装,大致看了下向日葵在linux下配置好像比较麻烦,而且Teamviewer远程控制的流畅性一直不错,就选择安装T ...