第三十二章——数据库打包和三大范式
Posted 缘来狠狂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三十二章——数据库打包和三大范式相关的知识,希望对你有一定的参考价值。
package程序包和程序体
package---包头
package body---包体
dbms_output.put_line();
上面的输出语句就是一个程序包加存储过程
dbms_output是包的名字, 调用里面的某个方法
包头的语法:
create or replace package 包头名 as
变量的说明...
存储过程或者函数的声明(不需要写实现的代码块)
end;
声明了一个包头, 就要有一个包体与之对应, 去实现包头中写明的存储过程或者函数
包体的语法:
create or replace package body 包体名(这里的这个包体名要和上面定义的包头名字一模一样) as
存储过程或者函数的实现...
end;
调用过程:
declare
begin
包头名.存储过程名或者函数名
end;
代码示例:
create or replace package print_stu is TYPE stucursor IS REF CURSOR; --CURSOR ss IS SELECT......... PROCEDURE aaaaa(snum IN NUMBER); PROCEDURE put_stuinfo(sclass IN NUMBER, stuinfo OUT stucursor); end print_stu; / create or replace package body print_stu is PROCEDURE aaaaa(snum IN NUMBER) AS s_name student.sname%TYPE; BEGIN SELECT s.sname INTO s_name FROM student s WHERE s.sno=snum; dbms_output.put_line(s_name); END; PROCEDURE put_stuinfo(sclass IN NUMBER, stuinfo OUT stucursor) AS BEGIN OPEN stuinfo FOR SELECT * FROM student s WHERE s.class=sclass; END; end print_stu; /
oracle三大范式
范式: 就是一个设计数据库定义的一个规则, 为什么叫范式, 因为想出来的这个人姓范
三大范式, 灵活运用, 人的思想是活的
一范式
1, 不存在冗余数据
同一个表中的记录不能有重复----所以主键(必须有)
2, 每个字段必须是不可再分的信息(列不可再分)
根据具体情况, 比如一个身份证号, 保存了许多信息, 但实际上把身份证号整个保存下来就可以了, 这个时候没必要再分了
另一种情况, 需要存两个同样类型的数据, 也是根据具体情况, 再细分
信息的冗余另一种情况:
一个字段是年龄, 一个字段是生日, 信息内容的冗余
二范式(前提: 首先符合第一范式):
消除部分依赖
主要是针对多对多关联的表
第三范式(前提: 首先满足第二范式):
消除传递依赖
主要是针对于 一对多的关系
数据库建表三大范式
1 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、 删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不 需要的冗余信息。
2 第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型 、日期型等。
3 第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些 字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
4 第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段ss对任一候选关键字段的传递函数依赖则符合第三范式。所 谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依 赖关系: s 关键字段 → 非关键字段x → 非关键字段y
以上为三大范式官方版
以下为自己的理解:
三大范式:
第二范式,消除部分依赖。。
理解:假如一个表有一个联合主键,拿其中一列当作外键连接其他表,而这一列不能独自决定这个表,所以会依赖另外一个主键来决定这个表,为了消除这种部分依赖,用中间表连接。
第三范式,消除传递依赖。。 连接 依赖 主键1外键 依赖 主键2
理解:假如一个表有一个主键,用另外一个表非主键作为外键连接,并不能决定另外一个表,还要依赖另一个表的主键来决定,这样就会出现 连接 依赖 非主键外键 依赖 外表主键
为了消除传递依赖,所以用另外一个表的主键作为外键连接。
以上是关于第三十二章——数据库打包和三大范式的主要内容,如果未能解决你的问题,请参考以下文章
第三十二章 elk- broker架构 + 引入logback