数据库范式:掀起你的盖头来(1)

简介:

1                 介绍

凡是做过数据库设计的,只要不是大菜鸟,听到范式两个字,马上就会在脑海中浮现1NF2NF3NFBCNF这些术语,但是若要大家详细的将这几个东东的专业定义描述出来。。。。。。呵呵,至少大部分人都会晕的,什么功能依赖、函数依赖,~@#¥%……&*my god!反正我是记不住:)

 

但既然上了IT这条贼船,就无法避免和数据库设计打交道,丑媳妇总是要见公婆的:)既然无法避免,那就让我们勇敢的面对,揭开数据库范式的神秘面纱,看看到底是一个丑媳妇还是一个俊媳妇!!

 

2                 一句话范式

数据库范式本身的定义这里就不啰嗦了,大家随便上网搜索或者找本教材看看,保证随处可见,我在这里给大家用通俗的语言描述出来。

在详细探讨之前还是啰嗦一句:千万要注意:范式只是在设计表的时候用的原则,数据库其它的设计例如索引、视图、触发器、存储过程等都和范式没有关系。

2.1                                 第一范式1NF

1NF在数据库设计中其实很简单:“列不可再分”。

什么叫列不可再分呢?意思就是每一列只包含一个属性,所有属性的类型都是一样的。

可能有人看到这里会说:晕,这还用说,谁设计的数据库表的列还可以再分呢?其实这句话只对了一部分,下面我们详细分析为什么叫只对了一部分。

我们目前说的和用的数据库都是关系数据库,而关系数据库中是不可能设计一个列能够包含两个不同类型的属性的;但大千世界,无奇不有,除了关系数据库,还有其它的数据库,例如面向对象数据库、XML数据库,这种数据库就可以设计一个属性再包含多个子属,所以1NF在关系数据库中是天然满足的,而在其它类型数据库就不一定了。

看了上面这段话,你是不是长吁一口气,心里踏实了,以为就可以从此不管1NF了呢?非也,数据库只做了第一层保证,但你还是可以设计不符合1NF的表来。下面我们给几个简单的例子,看看我们如何不遵守1NF

例子1Student表有一个属性name,类型为字符串。

这个是最简单的例子,估计很多人都如此设计过,数据库也不会拒绝我们创建这样的表,但这个设计是不符合1NF的,为什么?很简单的,名字其实是“有名有姓”的,这其实就是两个属性。比如我们要查找姓“李”的同学有多少,或者查询同名(例如“狗剩”)的有哪些。这样的查询如果只有一个name列,呵呵,只能用like来查询了,这样不同的名字方式(例如中国人姓在前,美国人姓在后),like都需要修改,而且like还不能利用索引加快查询速度。

例子2Custom表中有一个属性Address

大家可以自己按照上面的例子自己分析一下,看看会有什么问题……..

 

担心一次写太多,大家会晕,故分几次来写,未完待续。。。。。。

相关实践学习
MySQL数据库快速部署实践
本场景主要介绍如何在一台配置了CentOS 7.7版本的ECS实例(云服务器)上安装mysql,执行mysql的常用操作,学习基本的SQL语句。
相关文章
|
2月前
|
人工智能 运维 关系型数据库
云栖大会|AI时代的数据库变革升级与实践:Data+AI驱动企业智能新范式
2025云栖大会“AI时代的数据库变革”专场,阿里云瑶池联合B站、小鹏、NVIDIA等分享Data+AI融合实践,发布PolarDB湖库一体化、ApsaraDB Agent等创新成果,全面展现数据库在多模态、智能体、具身智能等场景的技术演进与落地。
|
5月前
|
数据库
数据库三范式
数据库设计中的三范式(1NF、2NF、3NF)用于规范数据结构,减少冗余。1NF 要求字段不可再分,保证原子性;2NF 消除部分依赖,确保非主键列完全依赖主键;3NF 消除传递依赖,非主键列只能依赖主键。遵循三范式可提升数据库的完整性与效率。
154 1
|
5月前
|
SQL 安全 关系型数据库
数据库安全管理新范式:DBKEEPER一体化数据库权限管控堡垒机解决方案
在数字化时代,数据库安全至关重要。DBKEEPER提供一站式数据库安全访问与权限管控解决方案,支持多种数据库,具备精细化权限管理、数据脱敏、高危操作拦截、全面审计等功能,助力企业实现智能、安全的数据治理,满足金融、医疗、互联网等行业合规需求。选择DBKEEPER,让数据库安全管理更高效!
数据库安全管理新范式:DBKEEPER一体化数据库权限管控堡垒机解决方案
|
存储 数据库
数据库设计三范式
三范式设计的最终目的都是为了减少我们的工作量,所以说,尽管三范式是一种很好的指导规范,但在实际应用中,我们也不需要太局限在三范式中,更多的是应该从项目中出发,设计出合理的表结构。
|
存储 数据库
数据库设计三范式
数据库设计三范式
123 0
|
存储 关系型数据库 数据库
关系型数据库设计范式:深入理解与实践
【7月更文挑战第20天】关系型数据库设计范式是数据库设计中的重要指导原则,它通过一系列规范来减少数据冗余、提高数据一致性和优化查询性能。在实际应用中,我们应该根据具体需求和数据特点,灵活选择和应用不同的范式级别,以构建高效、可靠和可扩展的数据库系统。同时,也需要注意范式设计带来的挑战和限制,根据实际情况进行权衡和调整。
|
存储 Java 数据库连接
数据库三范式详解及应用
数据库三范式详解及应用
|
存储 Java 数据管理
数据库三范式设计与规范化过程详解
数据库三范式设计与规范化过程详解
|
存储 算法 Java
数据库范式与设计原则
数据库范式与设计原则
242 0
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计

热门文章

最新文章