当前位置:网站首页>简单明了,数据库设计三大范式
简单明了,数据库设计三大范式
2022-08-04 05:28:00 【不负卿@】
范式:简单的说,就是规范数据库表设计,需要满足的一些规范,以优化数据数据存储方式。
在关系型数据库中这些规范就可以称为范式。
第一范式
1、每一列属性都是不可再分的属性值,确保每一列的原子性
2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。
例:
如果需求是需要地址拆分省、市,并按其分类,那么显然第一个表格是不容易满足需求的,也不符合第一范式。
拆分后,例:
拆分后,符合第一范式。
第二范式
每一行的数据只能与其中一列相关,即一行数据只做一件事。
只要数据列中出现数据重复,就要把表拆分开来。
例:
一个人同时订几个房间,就会出来一个订单号多条数据,这样子联系人都是重复的,就会造成数据冗余。我们应该把他拆开来。
例:
拆分后,符合第二范式。
第三范式
数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。
像:a–>b–>c 属性之间含有这样的关系,是不符合第三范式的。
比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)
这样一个表结构,就存在上述关系。学号–> 所在院校 --> (院校地址,院校电话)
这样的表结构,我们应该拆开来,如下。
(学号,姓名,年龄,性别,所在院校)–(所在院校,院校地址,院校电话)
边栏推荐
猜你喜欢
随机推荐
(十四)平衡二叉树
实际开发中,如何实现复选框的全选和不选
跳转页面实时调用后台接口,更新页面数据
页面刷新没有执行watch?
二月、三月校招面试复盘总结(二)
关于事件捕获和事件冒泡的顺序,以及如何处理事件冒泡带来的影响
(十五)B-Tree树(B-树)与B+树
BUUCTF——MISC(一)
关于 for in与for of 的差别以及如何使用
k3s-轻量级Kubernetes
实际开发中左菜单自定义图标点击切换
自动化运维工具Ansible(1)基础
纳米级完全删除MYSQL5.7以及一些吐槽
Lombok的一些使用心得
剑指 Offer 2022/7/11
编程Go:内置打印函数 print、println 和 fmt 包中 fmt.Print、fmt.Println 的区别
剑指 Offer 2022/7/5
多项式回归(PolynomialFeatures)
(六)递归
【树 图 科 技 头 条】2022年6月27日 星期一 今年ETH2.0无望