两年多以后,还是会想起曾经的那个问题。范式的本质是什么?到现在我也只能弱弱的写上自己浅薄的理解,本质大概应该就是为了更加规范。设计数据库时会遵循不同的设计规范,进而设计出更加合理的关系型数据库,这些规范就是范式。
(前言:有关函数依赖以及码、主码、外码的相关知识可自行查找)
范式简介:
第一范式(1NF):每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式。
第二范式(2NF):若R属于1NF,且每一个非主属性完全函数依赖于码,则R属于2NF。
第三范式(3NF):在1NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。
巴斯-科德范式(BCNF):在1NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)。
不同数据库的分页技术:
为什么需要分页技术?
在查询情况下,最经常的情况就是我们需要查询几条数据,而不是全部的查询出结果,比如最为经典的情况就是在我们写一个查询结果列表的情况,我们希望结果是分页显示,也就是查询出一段记录集。
Mysql:Mysql是最为方便的,由一个limit关键字来完成。
Oracle:Oracle数据库为我们提供了两个很重要的字段:RowId和RowNumber,来完成分页查询。
MSsql:SQL Server 2005以上可以使用ROW_BUNMER()函数实现分页。SQL server分页实现起来比较复杂,也有多种方式进行分页。具体各种分页方式的性能比较可参考:
——————————————再更新——————————————————————
关系型数据库系统的查询优化:查询优化在关系数据库系统中有着非常重要的地位。关系查询优化是影响RDBMS性能的关键因素,也是关系型数据库取得巨大成功的关键所在。查询优化的优点在于用户不必考虑如何最好的表达查询以获得较好的效率,也在于系统可以比用户程序的优化做得更好。
关系型数据库系统的查询优化就是选择一个高效执行的查询处理策略,有多种方法。按照优化的层次可分为代数优化和物理优化。其中代数优化指关系代数表达式的优化,即按照一定的规则,改变代数表达式中操作的次序和组合,使查询执行更加高效;物理优化指存储路径和底层操作的选择。可基于规则、代价或语义进行选择。
查询优化经验:
1、尽量避免全表扫描
2、查询时先过滤,再关联
3、使用游标、索引等技术来提高查询效率