数据库原理及应用的目录

上周,我那个朋友花了两天时间,把《数据库原理及应用》这本书的前六章都看完了。
第一章绪论讲的是数据管理技术的发展,从人工管理阶段到数据库管理阶段,内容挺有意思的。
第二章数据模型,介绍了E-R模型和面向对象模型,挺抽象的。
第三章关系数据库,关系数据模型的基础知识,挺重要的。
第四章结构化查询语言SQL,讲的是SQL语言的特点和基本概念,这部分挺实用的。

2 02 3 年,我那个朋友说他觉得第四章里的数据操纵部分挺有意思的,他说他在实际操作中经常会用到。
第五章存储过程、触发器和数据完整性,这部分内容比较难理解,但他已经尽力去学习了。

我那个朋友说他刚刚想到另一件事,就是数据库设计。
第八章讲的是数据库设计,从需求分析到物理设计,这个过程挺复杂的。
他说他准备重点学习这部分内容。

至于后面的章节,比如数据库安全、数据库保护、数据库技术新进展等,我那个朋友说他还没有开始看,但他觉得这些内容也很重要。

算了,我就先说到这里吧,你看着办。
如果你对某个部分感兴趣,我可以帮你详细解释一下。

《数据库原理及应用?河南城建》学习笔记(8)

行吧,这章笔记我帮你捋捋,咱们就用大白话聊哈~
上周有个同学问我数据库规范化的这部分,感觉挺绕的,尤其是这几个范式,你给我捋捋?我看看笔记,帮你整明白了哈。

1 NF(第一范式)
这玩意儿最简单,就像咱们买东西,不能有啥"一堆东西"这种组合货,必须得分开列。
比如你那个"学生"表里,"专业"不能是"计算机科学与技术"这种整串文字,得拆成"专业代码"和"专业名称"俩列。
要是"部门成员"这种能拆分的,那肯定不满足1 NF,必须拆开。
2 02 3 年我在上海某商场做培训的时候,就见过有人把"地址"拆成"省"、"市"、"区"三列,这就是典型的1 NF应用。
反正,只要表里的每个字段都是最小单元,没组合的,就满足1 NF。

2 NF(第二范式)
这步就得看主键了。
假设"学生"表主键就是"学号",那"姓名"、"年龄"、"性别"这些非主键字段,必须完全依赖"学号",不能只依赖"学号"的一部分。
比如你要是加个"学院代码"列,然后"专业"只依赖"学院代码"不依赖"学号",那就不满足2 NF。
我记得2 02 2 年在郑州搞系统测试的时候,有个表"课程"主键是"课程号",但"课程名称"只依赖"课程号"里的"专业代码"部分,这就属于部分依赖,不满足2 NF。
你得把"课程名称"也关联到"课程号"主键上。

3 NF(第三范式)
这更严格了。
除了满足2 NF,还得保证非主键字段之间不能互相依赖。
比如"学生"表里,如果"专业"不依赖"学号",但"学院"又依赖"专业"(通过"专业代码"),那"学院"就通过"专业"间接依赖"学号",这就是传递依赖,不满足3 NF。
我在2 02 1 年帮某公司做数据库优化时,就发现他们"教师"表里"职称"依赖"学历",而"学历"又依赖"教师ID",导致"职称"间接依赖"教师ID",最后把"学历"独立成表才解决。
反正,就是非主键字段不能绕着弯子依赖主键。

BCNF(BC范式)
这玩意儿可以看作是3 NF的加强版。
它要求表里每个能决定其他列的属性,都必须是候选键。
简单说,就是关系模式里的属性全是主属性,那肯定满足BCNF。
比如一个"学生选课"表,如果所有列都是候选键,那它自然是BCNF。
我在做毕业设计的时候,见过有人把所有列都设为主键,结果发现查询效率贼低,最后又改回来了。
但理论上,BCNF就是比3 NF更狠一点,对候选键要求更死。

总结
说白了,数据库规范化就是为了解决数据冗余、插入删除异常这些问题。
你想想,要是表设计不好,比如一个"员工"表把"部门名称"也直接存进去,结果部门改名字了,表里所有员工都得改,多麻烦。
2 02 3 年我在西安培训时,就见过这种事,最后通过规范化拆分成"员工"和"部门"两个表才搞定。

所以学习这些范式,关键是要理解为啥要这么做,怎么避免数据不一致。
你那个笔记总结挺到位的,但实际操作中,要根据业务需求灵活处理,别死板套用。
反正,理解了核心思想最重要。

数据库系统原理与应用的图书目录

那天,我在图书馆里无意间翻到了一本关于数据库的书,封面是韩耀军写的《数据库系统原理与应用》。
翻开书的第一章,我看到了一个表格,上面列出了数据库系统的发展历程,从2 0世纪5 0年代中期的人工管理阶段,到6 0年代的文件系统阶段,再到现在的数据库系统阶段。
我突然想到,如果用这些阶段来比喻人生,那会是怎样的呢?
等等,还有个事,我记得有一次在课堂上,老师讲到一个例子,说一个数据库管理系统DBMS的功能包括数据定义、数据操纵、数据管理和数据保护。
那时候,我就在想,这就像是一个国家的治理,需要各种功能的支撑。

我看了看书里的目录,发现最后一章是数据库技术新发展,我突然好奇,现在的数据库技术又有哪些新的突破呢?比如,有没有什么新技术能让数据库更智能,或者更安全?
走的时候,我随手把书放进了书包,心想,也许在未来的某个时刻,我会翻开这本书,继续探索数据库的奥秘。