时间: 2021-07-31 作者:daque
嵌套表
一、嵌套表的设置:
嵌套表是表中之表。一个嵌套表是某些行的汇合,它在主表中表白为个中的一列。对主表中的每一条记载,嵌套表不妨包括多个行。在那种意旨上,它是在一个表中保存一对多联系的一种本领。观察一个包括部分消息的表,在任何功夫内每个部分会有很多名目正在实行。在一个庄重的联系模子中,将须要创造两个独力的表department和project。
嵌套表承诺在department表中寄存对于项手段消息。勿需实行共同操纵,就不妨经过department表径直考察名目表中的记载。这种不经共同而径直采用数据的本领使得用户对数据考察越发简单。以至在并没有设置本领来考察嵌套表的情景下,也不妨很领会地把部分和名目中的数据接洽在一道。在庄重的联系模子中,department和project两个表的接洽须要经过外部要害字(外键)联系本领实行。
二、举例证明嵌套表的运用:
假如有一个对于众生豢养员的表,蓄意个中具备她们豢养的众生的消息。用一个嵌套表,就不妨在同一个表中保存豢养员和其豢养的十足众生的消息。
1、创造典型animal_ty:此典型中,对于每个众生都包括有一个记载,记录了其种类、称呼和出华诞期消息。
create type animal_ty as object (
breed varchar2(25),
name varchar2(25),
birthdate date);
2、创造animals_nt:此典型将用作一个嵌套表的普通典型。
create type animals_nt as table of animal_ty;
3、创造表breeder:豢养员的消息表
create table breeder
(breedername varchar2(25),
animals animal_nt)
nested table animals store as animals_nt_tab;
4、向嵌套表中插入记载
insert into breeder
values('mary',animal_nt(animal_ty('dog','butch','31-mar-97'),
animal_ty('dog','rover','31-mar-97'),
animal_ty('dog','julio','31-mar-97')));
insert into breeder
values('jane',animal_nt(animal_ty('cat','an','31-mar-97'),
animal_ty('cat','jame','31-mar-97'),
animal_ty('cat','killer','31-mar-97')));
commit;
5、查问嵌套表
select name,birthdate from
table(select animals from breeder);
select name,birthdate from
table(select animals from breeder
where breedername=’mary’)
where name=’dog’;
三、嵌套表的特性:
1、东西复用:即使编写面向东西的代码,就普及了重用往日编写的代码模块的时机。同样,即使创造面向东西的数据库东西,也就普及了数据库东西不妨被重用的时机。
2、规范扶助:即使创造规范的东西,那么它们被重用的时机就会普及。即使有多个运用或多个表运用同一数据库东西汇合,那么它即是既成究竟的数据库东西规范。
3、设置考察路途:对于每一个东西,用户可设置在其上运转的进程和因变量,进而不妨使数据和考察此数据的本领共同起来。有了用这种办法设置的考察路途,就不妨规范化数据考察的本领并普及东西的可复用性。
可变数组
一、可变数组的设置:
可变数组与嵌套表一致,也是一种汇合。一个可变数组是东西的一个汇合,个中每个东西都具备沟通的数据典型。可变数组的巨细由创造时确定。在表中创造可变数组后,可变数组在主表中动作一个列周旋。从观念上讲,可变数组是一个控制了行汇合的嵌套表。
可变数组,承诺用户在表中保存反复的属性。比方:假如用户有一个project表,并在名目中指定了处事职员,一个名目不妨有多个工人,而一个工人也不妨为多个名目处事。在庄重的联系模子中,用户不妨创造一个project表,一个worker表和保存它们之间联系的穿插表project_worker。
用户可运用可变数组在project表中保存工人的名字。即使名目控制的工人头不胜过10人,不妨创造一个以10个数据项为限的可变数组。接下来就可处置此可变数组,进而对于每一个名目,不妨采用个中一切工人的名字,而勿需查问表worker。
二、举例证明可变数组的运用:
1、创造典型comm_info
create type comm_info as object ( /*此典型为通信办法的汇合
no number(3), /*通信典型号
comm_type varchar2(20), /*通信典型
comm_no varchar2(30)); /*号子
2、创造可变数组comm_info_list
create type comm_info_list as
varray(50) of comm_info;
3、创造表
create table user_info
(user_id number(6), /*用户id号
user_name varchar2(20), /*用户称呼
user_comm comm_info_list); /*与用户接洽的通信办法
4、向可变数组插入记载
insert into user_info
values(1,'mary',comm_info_list(comm_info(1,'手机','13651401919'),
comm_info(2,'寻呼机','1281234567')));
insert into user_info
values(2,'carl',comm_info_list(comm_info(1,'手机','13901018888'),
comm_info(2,'寻呼机','1281234567')));
commit;
5、查问可变数组
select user_comm from user_info
where user_id=1;
select comm_type,comm_no
from table(select user_comm from user_info
where user_id=1)
where no=1;
与一位用户接洽的办法有很多种,比方:手机、寻呼机、座机等。在一个庄重的联系模子中,将须要两个独力的表:用户消息和通信办法,而在可变数组中,承诺在表user_info市直接考察用户的接洽办法,这种不经共同而径直采用数据的本领使得用户对数据的考察越发简单。
三、可变数组的特性:
1、东西复用:即使编写面向东西的代码,就普及了重用往日编写的代码模块的时机。同样,即使创造面向东西的数据库东西,也就普及了数据库东西不妨被重用的时机。
2、规范扶助:即使创造规范的东西,那么它们被重用的时机就会普及。即使有多个运用或多个表运用同一数据库东西汇合,那么它即是既成究竟的数据库东西规范。
3设置考察路途:对于每一个东西,用户可设置在其上运转的进程和因变量,进而不妨使数据和考察此数据的本领共同起来。有了用这种办法设置的考察路途,就不妨规范化数据考察的本领并普及东西的可复用性。