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  
理解:假如一个表有一个主键,用另外一个表非主键作为外键连接,并不能决定另外一个表,还要依赖另一个表的主键来决定,这样就会出现  连接  依赖  非主键外键 依赖  外表主键
为了消除传递依赖,所以用另外一个表的主键作为外键连接。
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号