RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewMantošana ir process, kas atļauj tipam vai tabulai...
Transcript of RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewMantošana ir process, kas atļauj tipam vai tabulai...
Relāciju – objektu DBS iespējas
Objektu-relāciju DB papildus relāciju tehnoloģijai ļauj:
1) veidot lietotāja definētus saliktus datu tipus (piemēram,
adrese (pilsēta, iela, mājas numurs);
2) izmantot atribūtus, kuriem var būt vairākas vērtības
(multivalued attributes);
3) realizēt datu tipu mantošanas (inheritance) mehānismus;
4) realizēt datu tabulu mantošanas mehānismus;
5) DB glabāt (store) un izmantot saliktu datu tipu objektu
apstrādes metodes;
6) realizēt metožu mantošanas mehānismus.
1
Relāciju – objektu datu bāzes sistēmas
Daffodil Software, Ltd. (Daffodil DB);
EnterpriseDB Corporation (EnterpriseDB);
FirstSQL, Inc. (FirstSQL/J);
The GigaBase Project (GibaBase);
IBM (Informix and DB2) (1/5 daļa);
InterSystems Corporation (Cache);
Micro Data Base Systems, Inc. (TITANIUM);
OpenLink Software, Inc. (Vituoso Universal Server);
Oracle Corporation (Oracle) (1/3 daļa);
Paradigma Software (Valentina);
PostgreSQL Global Development Group (PostgreSQL);MS (MS SQL Server 2010).
2
Relāciju – objektu DBS Oracle datu glabāšanas
struktūrasa) objektu tabula ar metodēm un norādēm
b) tabula ar objektu kolonnu
c) tabula ar kolekciju
d) objektu tabula ar kolekciju
e) tabula ar heterogēniem objektiem
f) objektu skats
3
Objektu saišu veidošana relāciju-objektu DBS Oracle
4
Datu bāzes sistēma Informix
Unikālais (distinct) datu tips ir iekapsulēts datu tips, kas tiek izveidots ar komandu
CREATE DISTINCT TYPE priekšrakstu. Unikālajam datu tipam ir tāds pats attēlojums kā
datu tipam uz kuru tas ir bāzēts, bet ir noteikta forma. Unikālo datu tipu var izveidot no
iebūvētajiem datu tipiem, neskaidrajiem (opaque) tipiem, nosauktajiem rindas tipiem vai
citiem noteiktajiem tipiem. Kad unikālais datu tips tiek izveidots tiek netieši definēta datu tipa
struktūra, jo unikālais datu tips manto struktūru no tā avota tipa. Unikālajam datu tipam var
definēt funkcijas, operatorus, un agregātus, kas darbojas ar šo tipu.
Necaurredzamais (opaque) datu tips ir iekapsulēts datu tips, kas tiek izveidots ar CREATE
OPAQUE TYPE priekšrakstu. Kad tiek veidots necaurredzamais datu tips, skaidri ir
jānodefinē tā struktūra, funkcijas, operatori un agregāti, kas darbojas ar necaurredzamo datu
tipu. Necaurredzamo datu tipu var izmantot lai definētu kolonnas un programmas mainīgos,
līdzīgi kā izmantojot iebūvētos datu tipus.
Datulapas (DataBlade) datu tips, kaut arī patiesībā tas nav datu tips, tas ir lietotāja izveidotu
datu tipu un lietotāja izveidotu rutīnu komplekts, kas nodrošina rīkus specifiskiem
lietojumiem. Piemēram, attēlu un dinamisko rindu apstrādei.
a) Lielie objekti(smart large objects).
Lielie objekti(smart large objects) ir objekti, kas ir definēti kā BLOB vai CLOB datu
tipi. Lielie objekti atļauj lietojumprogrammām brīvi piekļūt kolonnas datiem, kas
5
nozīmē, ka var nolasīt vai ierakstīt jebkuru BLOB vai CLOB kolonnu patvaļīgā
kārtībā. BLOB un CLOB kolonnās var glabāt bināros vai rakstzīmju datus.
Saliktie datu tipi (Complex data type) parasti ir veidoti no citiem datu tipiem. Piemēram,
var izveidot saliktu datu tipu, kura komponentes ir iebūvētie datu tipi, necaurredzamie datu
tipi noteiktie datu tipi vai citi salikti datu tipi. Salikto datu priekšrocība ir tā, ka var piekļūt un
darboties ar atsevišķām saliktā tipa komponentēm. Salīdzinājumā, iebūvētie un lietotāja
definētajiem tipi ir iekapsulēti datu tipi. Kā rezultātā vienīgais veids kā piekļūt necaurredzamā
datu tipa komponenšu vērtībām ir caur funkcijām kas nodefinētas necaurredzamajam datu
tipam.
Kolekcijas datu tips ļauj glabāt un vadīt datu kolekcijas tabulas vienas šūnas ietvaros.
Kolekcijas datu tipam ir divas komponentes:
1) tipa konstruktors, kurš nosaka vai kolekcijas tips ir SET, MULTISET vai LIST;
2) elementa tips, kurš nosaka datu tipu ko satur kolekcija. Kolekcijas elementa tips var attēlot
vienu datu tipu (kolonnu) vai rindas tipa elementu, kas satur vairākus datu tipus.
Kolekcijas tips SET ir nesakārtota elementu kolekcija, kurā katrs elements ir unikāls. Kolekcijas tips MULTISET ir elementu kolekcija, kurā elementiem var būt vienādas vērtības.Kolekcijas tips LIST ir sakārtota elementu kolekcija, kura pieļauj vienādas vērtības. LIST atšķiras no MULTISET ar to, ka katram elementam LIST kolekcijā ir kārtas pozīcija.Iekļautais kolekcijas tips satur citu kolekcijas tipu. Jebkuru kolekcijas tipu var iekļaut citā kolekcijas tipā.
Kolekcijā nevar iekļaut datu tipus: TEXT, BYTE, SERIAL, SERIAL8. Nevar izmantot
CREATE INDEX priekšrakstu lai izveidotu indeksu kolekcijai, un nevar izveidot funkcionālu
indeksu kolekcijas kolonnai. Lai izveidotu kolekciju, definējot tabulu kolekciju izvēlas kā
atribūta tipu. Tabulā Vadītāji kolonna Darbinieki ir vienkārša kolekcija, kolonna Projekti ir
iekļauta kolekcija. Iekļauta kolekcija ir kolekcija, kas satur citu kolekciju.
6
Tabulas veidošana Informix DBS
create table VADITAJI (
Vards varchar(30),
Nodala varchar(12),
Darbinieki SET(varchar(30) NOT NULL),
Projekti LIST(ROW(nosaukums VARCHAR(15),
dalibnieki SET(VARCHAR(20) NOT NULL) ) NOT NULL));
insert into VADITAJI(Vards, Nodala, Darbinieki, Projekti) values (
‘Andis’,’Projektu’,”SET{ ‘Miezis’,’Skara’,’Liepa’ }”,
”LIST{ ROW(‘Zelta projekts’,SET(‘Miezis’,’Skara’)), ROW(”Stadiona
projekts”,SET(‘Miezis’,’Liepa’))}” );
insert into VADITAJI(Vards, Nodala, Darbinieki, Projekti) values (
‘Leons’,’Uzturesanas’,”SET{ ‘Abele’,’Oga’,’Sotnieks’ }”,
”LIST{ ROW(‘Baseina_projekts’,SET(‘Abele’,’Oga’)), ROW(”Jumta
projekts”,SET(‘Oga’,’Sotnieks’))}” );
7
Datu izgūšana no DBS Informix tabulas1. Vienkāršās kolekcijas izgūšana
select Nodala, Darbinieki from VADITAJI;
Nodala DarbiniekiProjektu Miezis,Skara,LiepaUzturesanas Abele,Oga,Sotnieks
2. Iekļautās kolekcijas izgūšana
select Projekti from VADITAJI where Vards=’Andis’;
ProjektiLIST(ROW(Zelta projekts,SET(Miezis,Skara)))LIST(ROW(Stadiona projekts,SET(Miezis,Liepa)))
8
Nosauktā (named) rindas tipa izmantošana
Nosauktais rindas tips ir lauku grupa, kas tiek definēta zem viena
nosaukuma. Nosauktais rindas tips var saturēt citus nosauktos rindas tipus.
Nosauktā rindas tipa laukiem lietotājs vienmēr var tieši piekļūt, atšķirībā
no necaurredzamā (opaque) datu tipa. Tajā komponenšu vērtības ir
iekapsulētas, un tām var piekļūt tikai izmantojot funkcijas.
create row type Adrese_t (
Pilseta varchar(20),
Iela varchar(20),
Numurs integer );
create row type Darbinieks_t (
Uzvards varchar(30),
Alga integer,
Adrese Adrese_t);
create table Darbinieki of type Darbinieks_t;
9
Datu izgūšana no tabulas ar nosaukto rindas tipu
select * from Darbinieki;
Uzvards Alga AdreseMiezis 200 Liepaja,Parka,9Auzins 500 Ludza,Alejas,12
select Adrese from Darbinieki;
AdreseLiepaja,Parka,9Ludza,Alejas,12
select Adrese.Pilseta from Darbinieki;
PilsetaLiepajaLudza
10
Tabulas ar nosauktā datu tipa kolonnu izveidošana
create table Klienti(
Nosaukums varchar(30),
adrese Adrese_t);
11
Nenosauktais rindas tipsNenosauktais rindas tips ir lauku grupa, kas tiek izveidota ar rindas (row)
konstruktoru.
Nenosaukto rindas tipu nevar piesaistīt tabulai (rakstam). Nenosauktais
rindas tips tiek lietots tikai, lai definētu tabulas kolonnu.
create table Studenti (
Vards varchar(30),
Adrese ROW( iela varchar (20),
numurs integer,
Pilseta varchar(20)) );
12
Tipu mantošanaMantošana ir process, kas atļauj tipam vai tabulai iegūt īpašības no cita tipa vai tabulas.
Tips vai tabula, kas manto īpašības tiek saukta par apakš tipu vai apakš tabulu. Mantošana
atļauj pieaugošu modifikāciju kas nozīmē ka tips vai tabula manto pamata īpašību kopu un
pievieno savas specifiskas īpašības. Informix dinamiskais serveris atļauj mantošanu
nosauktajam rindas tipam un tipu tabulai. Informix pieļauj tikai vienreizēju mantošanu, kas
nozīmē, ka katrai apakštabulai vai apakštipam ir tikai viena virstabula, vai virstips.
Tipu mantošana ir atļauta tikai nosauktajam rindas tipam. Mantošana grupē nosauktos
rindas tipus tipu hierarhijā, kurā katrs apakš tips manto attēlojumu(datu laukus) un
uzvedību( funkcijas, agregātus un operatorus) no virs tipa zem kura tas ir definēts. Tipu
hierarhijas priekšrocības ir datu modeļa modulāra attēlojuma veicināšana, nodrošina shēmas
komponenšu atkārtotu izmantošanu, nodrošina, ka datu lauki netiek atstāti ārpusē, atļauj tipam
mantot funkcijas, kas ir definētas citam datu tipam.
13
Tipu mantošanas hierarhijas piemērs
create row type persona_t (
vards varchar(30) NOT NULL,
adrese varchar(20),
Pilseta varchar(20),
Dz_datums date );
create row type darbinieks_t (
alga integer,
vaditajs varchar(30) )
under persona_t;
create row type pardosanas_atsk_t (
atskaites_num int8,
regions_num integer,
komisija decimal )
under darbinieks_t;
14
Tabulu mantošana
1. Mantošanu atbalsta tikai tās tabulas, kas ir definētas balstoties uz
nosaukto rindas tipu.
2. Tabulas mantošana ir īpašība, kas ļauj tabulai mantot uzvedību
(ierobežojumus, glabāšanas opcijas, trigerus) no virstabulas tabulu
hierarhijā.
3. Tabulu mantošana ļauj veidot vaicājumus, kuru darbības lauks var būt
dažas vai visas tabulas tabulu hierarhijā.
create table personas of type persona_t;
create table darbinieki of type darbinieks_t under personas;
create table pardosana of type pardosanas_atsk_t under darbinieki;
15
Datu bāzes sistēma DB2 (IBM)
create type Adrese_t AS (
Iela varchar(30),
Nummurs char(15),
Pilseta varchar(30))
mode DB2SQL;
create type Persona_t AS
( Vards varchar(20),
Vecums int,
Adrese Adrese_t)
mode DB2SQL;
Objektu tabulas izveidošana
create table Personas of Persona_t
(REF is Oid user generated); --nosaka ka objekta identifikators ir lietotāja
izveidots
16
Datu ievade objektu tabulāinsert into Personas(Oid,Vards,Vecums,Adrese) values (Persona_t(‘a’),
’Juris’,20, Adrese_t( )..Iela(‘Sporta’)..Numurs(10)..Pilseta(‘Limbazi’))
insert into Personas(Oid,Vards,Vecums,Adrese) values (Persona_t(‘b’),
’Marija’, 30, Adrese_t( )..Iela(‘Rigas’)..Numurs(31)..Pilseta(‘Aluksne’))
SELECT * FROM Personas
Oid Vards Vecums Adrese
a Juris 20 Sporta,10,Limbazi
b Marija 30 Rigas,31,Aluksne
SELECT *
FROM Personas
WHERE Vards=’Juris’;
Oid Vards Vecums Adrese
a Juris 20 Sporta,10,Limbazi
SELECT Adrese
FROM Personas
WHERE Vards=’Juris’;
SELECT Adrese..Iela
FROM Personas
WHERE Vards=’Juris’;
17
Adrese
Sporta,10,Limbazi
Iela
Sporta
Tabula ar objektu kolonnuObjektu var izmantot arī kā kolonnas datu tipu. Lai objektu izmantotu kā kolonnas tipu, no
sākuma jāizveido objekta tips.
CREATE TYPE Adrese_t AS
(Iela VARCHAR(30),
Nummurs CHAR(15),
Pilseta VARCHAR(30))
MODE DB2SQL;
Veidojot tabulu ar objektu kolonnu, kolonnai, kura būs objekts par tipu tiek izvēlēts iepriekš
definēts strukturēts tips. Tabulā Rekviziti objektu kolonna būs Adrese kuras tips būs iepriekš
definētais tips Adrese_t.
CREATE TABLE Rekviziti
(SutijumaNumurs INT,
Adrese Adrese_t)
Ad re s e _ t
Ie la N um u rs P ils e ta
Ad re s e _ t
Ie la N um u rs P ils e ta
SutijumaNumurs
SutijumaNumurs
Datu ievadīšana tabulā ar objektu kolonnu.
INSERT INTO Rekviziti (SutijumaNumurs,Adrese)
VALUES
(1,Adrese_t( )..Iela('Parka')..Nummurs('5')..Pilseta('Ventspil
s'));
INSERT INTO Rekviziti (SutijumaNumurs,Adrese)
VALUES (2,
Adrese_t( )..Iela('Gildes')..Nummurs('8')..Pilseta('Liepaja'))
;
Datu izgūšana.18
2.17 att. Tipa Adrese_t struktūra
1) Izgūti visi dati no tabulasSELECT *
FROM Rekviziti;
SutijumaNumurs Adrese
1 Parka,5,Ventspils
2 Gildes,8,Liepaja
2) Izgūts viss objekts.SELECT Adrese
FROM Rekviziti;
Adrese
Parka,5,Ventspils
Gildes,8,Liepaja
3) Izgūta daļa no objekta.SELECT Adrese..Pilseta
FROM Rekviziti;
Pilseta
Ventspils
Liepaja
19
DBS DB2 objektu tipu hierarhijas definēšanaDB2 DBS atbalsta tipu mantošanu. Tips manto visus atribūtus no virstipa
un pievieno vēl savus individuālos atribūtus.
create type Darbinieks_t AS (
ID integer,
VARDS varchar(12),
UZVARDS varchar(12),
NODALAS_ID char(4),
ALGA decimal(7,2),
ADRESE address_t)
REF USING integer
mode DB2SQL;
create type Pardevejs_t under Darbinieks as (
Piemaksa decimal(7,2))
mode DB2sql;
create type Inzenieris_t under Darbinieks as (
Pakape varchar(12))
mode DB2sql;
20
CREATE TABLE Darbinieki of Darbinieks_t
(ref is oid user generated);
CREATE TABLE Pardeveji of Pardevejs_t under Darbinieki inherit
select privileges
CREATE TABLE Inzenieri of Inzenieris_t under Darbinieki
inherit select privileges
INSERT INTO Inzenieri (oid, id, vards, uzvards, nodalas_id,
alga, pakape, adrese) values (Inzenieris_t(1), 22, 'Juris',
'Liepa', 'Z004', 650.00, ‘vecakais’, adrese () ..iela(‘Liepu’)
..numurs(8) ..pilseta('Priekule'));
INSERT INTO Pardeveji (oid, id, vards,uzvards, nodalas_id,
alga, Piemaksa, adrese) values (Pardevejs_t(2), 33, 'Laima',
'Mieze', 'C012', 490.00, 150.00,
address_t() ..iela('Meza') ..numurs(8) ..pilseta('Ogre'));
SELECT * FROM Darbinieki;
oid id vards uzvards nodalas_id alga adrese
1 22 Juris Liepa Z004 650.00 Liepu,8,Priekule
2 33 Laima Mieze C012 490.00 Meza,8,Ogre
SELECT* FROM Inzenieri;
oid id vards uzvards nodalas_id alga pakape adrese
1 22 Juris Liepa Z004 650.00 vecakais Liepu,8,Priekule
SELECT* FROM Pardeveji;
oid id vards uzvards nodalas_id alga Piemaksa adrese
2 33 Laima Mieze C012 490.00 150.00 Meza,8,Ogre
21
Objektu skatsCREATE TYPE Persona_t AS (
Vards VARCHAR(20),
Vecums INT,
Adrese Adrese_t)
INSTANTIABLE
REF USING VARCHAR(13) FOR BIT DATA
MODE DB2SQL;
CREATE TABLE Personas OF Persona_t
(REF IS Oid USER GENERATED);
CREATE TYPE SK_Personas_t AS (Vards VARCHAR(20))
MODE DB2SQL;
CREATE VIEW SK_Personas OF SK_Personas_t MODE DB2SQL
(REF IS ObjektaID USER GENERATED)
AS SELECT SK_Personas(VARCHAR(Oid)), Vards FROM Personas;
OF teikums CREATE VIEW priekšrakstā nosaka skata pamata kolonnas. Piemērā, skata
kolonnas tiks bāzētas uz strukturēto tipu SK_PERSONAS. Skata kolonnai ObjektaID ir tips
REF(SK_Personas). Tādēļ, ka nevar tieši veidot REF(SK_Personas) no REF(Personas),
vispirms jāizveido Objekta identifikatora kolonna no tabulas Personas datu tipā VARCHAR,
un tad no datu tipa VARCHAR jāveido REF(SK_Personas).
USER GENERATED teikums nosaka, ka Objekta identifikatora kolonnu aizpildīs lietotājs
kad pievienos jaunu rindu. Objekta identifikatoru nevar izmainīt.
22
Datu bāzes sistēma PostgreSQL
Tiek izmantoti dažādi datu tipi:
1) iekļautie datu tipi (skaitļi, simbolu virknes, datumi, laika intervāli,
ģeometriskie tipi (punkts, līnija, pologons), XML datu tipi, UUID –
interneta adreses;
2) lietotāja definētie datu tipi (create type ...).
23
PostgreSQL datu bāzes datu struktūras
Tabula ar objektu kolonnu
CREATE TYPE Prece_t AS (
Nosaukums text,
Piegadataja_id integer,
Cena numeric );
CREATE TABLE Preces (
Prece Prece_t,
skaits integer );
INSERT INTO Preces VALUES (ROW(’Kresls’, 42, 200), 200);
INSERT INTO Preces VALUES (ROW(’Skapis’, 43, 300), 34);
INSERT INTO Preces VALUES (ROW(’Durvis’, 42, 10), 50);
INSERT INTO Preces VALUES (ROW(’Lampa’, 43, 10), 240);
24
Datu izgūšana no tabulas ar objektu kolonu
SELECT * FROM Preces;
Prece SkaitsKresls, 42, 200 200Skapis, 43, 300 34Durvis, 42, 10 50Lampa, 43, 10 240
SELECT (Prece) FROM Preces.
PreceKresls, 42, 200Skapis, 43, 300Durvis, 42, 10Lampa, 43, 10
SELECT (Prece).NosaukumsFROM Preces;
PreceKreslsSkapisDurvisLampa
25
Ģeometriskie datu tipi
Tips Atmiņas apjoms Attēlojums Aprakstspoint 16 baiti Punkts plaknē (x,y)line 32 baiti Neierobežota līnija ((x1,y1),(x2,y2))lseg 32 baiti Ierobežots līnijas
segments((x1,y1),(x2,y2))
box 32 baiti Taisnstūra logs ((x1,y1),(x2,y2))path 16+16n baiti Slēgta daļa ((x1,y1),...)path 16+16n baiti Atvērta daļa [(x1,y1),...]polygon 40+16n baiti Daudzstūris ((x1,y1),...)circle 24 baiti Riņķis <(x,y),r> (centrs un
rādiuss)
Funkcija Atgriežamais tips Apraksts Piemērs
area(object) double precision
objekta laukums
area(box '((0,0),(1,1))')
center(bject) point objekta centrs
center(box '((0,0),(1,2))')
diameter(circle) double precision
riņķa diametris
diameter(circle '((0,0),2.0)')
height(box) double precision
taisnstūra augstums
height(box '((0,0),(1,1))')
length(object) double precision
objekta garums
length(path '((-1,0),(1,0))')
npoints(path/polygon) int punktu skaits
npoints(path '[(0,0),(1,1),(2,0)]')
radius(circle) double precision
riņķa radiuss
radius(circle '((0,0),2.0)')
width(box) double precision
taisnstūra garums
width(box '((0,0),(1,1))')
26
Kolonas ar masīva datu tipuPostgreSQL ļauj tabulas kolonnas definēt kā mainīga garuma daudz dimensiju masīvus.
Masīvi var tikt veidoti no iebūvētiem vai lietotāja izveidotiem datu tipiem. Masīvus nevar
veidot no saliktiem datu tipiem. Masīvs tiek veidots nosaucot datu tipu un kvadrātiekavās
ierakstot masīva izmēru: DATU_TIPS[ ][ ]. Kvadrātiekavu pāru skaits nosaka masīva
dimensiju skaitu. Ja masīva izmērs ir noteikts tad kvadrātiekavās raksta masīva izmēru, ja
masīva izmērs nav noteikts tad kvadrātiekavas atstāj tukšas.
CREATE TABLE mas_tabula(masivs integer[3][3]);
INSERT INTO mas_tabula VALUES(masivs{{1,2,3},{4,5,6},{7,8,9}});
Operators Apraksts Piemērs Rezultāts= vienāds MASIVS[1.1,2.1,3.1]::int[] =
MASIVS[1,2,3]patiess
<> Nav vienāds MASIVS[1,2,3] <> MASIVS[1,2,4] patiess< Mazāks MASIVS[1,2,3] < MASIVS[1,2,4] patiess> lielāks MASIVS[1,4,3] >MASIVS[1,2,4] patiess<= Mazāks vai
vienādsMASIVS[1,2,3] <= MASIVS[1,2,3] patiess
>= Lielāks vai vienāds
MASIVS[1,4,3] >= MASIVS[1,4,3] patiess
@> satur MASIVS[1,4,3] @> MASIVS[3,1] patiess@< ietilpst MASIVS[2,7] <@
MASIVS[1,7,4,2,6]patiess
&& Daļēji nosedz MASIVS[1,4,3] && MASIVS[2,1] patiess|| Masīvu
savienošanaMASIVS[1,2,3] || MASIVS[4,5,6] {1,2,3,4,5,6}
|| Elementa un masīva savienošana
3 || MASIVS[4,5,6] {3,4,5,6}
27
Masīvu apstrādes funkcijas
Funkcija Atgrie-
žamais
tips
Apraksts Piemērs Rezultāts
array_append
(masivs,
elements)
masivs Pievieno elementu
masīva beigās
array_append(MASIVS[1,
2], 3)
{1,2,3}
array_cat
(masivs, masivs)
masivs Savieno divus
masīvus
array_cat(ARRAY[1,2,3],
ARRAY[4,5])
{1,2,3,4,5}
array_dims
(masivs)
text Atgriež tekstu kas
raksturo masīva
dimensijas
array_dims(ARRAY[[1,2,
3], [4,5,6]])
[1:2][1:3]
array_lower
(anyarray, int)
int Atgriež apakšējo
robežu pieprasītajai
masīva dimensijai
array_lower('[0:2]={1,2,3}
'::int[], 1)
0
array_prepend
(elements,
masivs)
masīvs Pievieno elementu
masīva sākumā
array_prepend(1,
ARRAY[2,3])
{1,2,3}
array_to_string
(masivs, text)
text Savieno masīva
elementus lietojot
doto atdalītāju
array_to_string(ARRAY[1
, 2, 3], '~^~')
1~^~2~^~3
array_upper
(anyarray, int)
int Atgriež maksimālo
masīva elementu
norādītajā dimensijā
array_upper(ARRAY[1,2,
3,4], 1)
4
string_to_array
(text, text)
Text[] Sadala virkni masīva
elementos lietojot
norādīto atdalītāju
string_to_array('xx~^~yy~
^~zz', '~^~')
{xx,yy,zz}
28
Tabulas struktūras mantošana1. Tabula var mantot atribūtus no vienas tabulas vai vairākām tabulām.
2. Pēcteču tabulām ir tie paši atribūti, kas bāzu tabulām un pievienoti savi
personīgie atribūti. 3. Veidojot vaicājumu bāzu tabulai ir iespējams izgūt
ierakstus:
- tikai no bāzes tabulas;
- arī no atvasinātas tabulas vai tabulām.
4. Atvasinātu tabulu ir iespējams veidot no vairākām bāzu tabulām un
otrādi, no vienas bāzu tabulas ir iespējams izveidot vairākas atvasinātās.
5. Atvasinātās tabulas izveidošanas sintakse ir sekojoša:
CREATE TABLE tabulas_nosaukums( tabulas_definīcija )
INHERITS ( bāzes_tabula [, ... ] );
29
Tabulas struktūras mantošanas piemērs
create table VIDEO ( VIDEO_ID character(8) PRIMARY KEY, NOSAUKUMS varchar(80), ILGUMS interval );
create table DVD( SKANAS_CELINI varchar[ ] ) inherits (VIDEO);
insert into DVD values ( 'AAA-750', -- video_id 'Spriditis, -- nosaukums '121 minutes', -- ilgums '{Latviesu,Anglu}' -- skanas_celini);
select * from DVD;
VIDEO_ID | NOSAUKUMS | ILGUMS | SKANAS_CELINI---------------+--------------------+--------------+-------------------------- AAA-750 | Spriditis | 02:01:00 | {Latviesu,Anglu} select * from VIDEO only;
VIDEO_ID | NOSAUKUMS | ILGUMS ---------------+--------------------+------------- AAA-750 | Spriditis | 02:01:00
Lai izgūtu ierakstus tikai no bāzu tabulas, neiekļaujot ierakstus no pēcteču tabulām,
lieto slēgvārdu ONLY.
30