BAZY DANYCH W APLIKACJACH SIECIOWYCH

Transkrypt

BAZY DANYCH W APLIKACJACH SIECIOWYCH
Kolekcje
Atrybut typu obiektowego lub kolumna tabeli może być: typu
prostego lub typu zbiorowego (kolekcji).
Rodzaje kolekcji:
VARRAY – typ tablicy jednowymiarowej (jak wektor);
NESTED TABLE – (lista) typ tabeli zagnieżdżonej, wartością
atrybutu może być cała tabela.
Tablica asocjacyjna - w języku PL/SQL jest to tablica, która
indeksuje poszczególne elementy za pomocą klucza będącego
liczbą lub ciągiem tekstowym. Kolekcja ta jest odpowiednikiem
tablicy haszującej lub mapy haszowanej w innych językach
programowania.
BAZY DANYCH
W APLIKACJACH
SIECIOWYCH
Wykład 6
Kolekcje cd. Operacje na dużych obiektach.
(Wybrane materiały)
Dr inż. E. Busłowska
Copyright © 2014-2015 E. Busłowska
1
Kolekcji o nazwie Lista - tablica VARRAY projektów.
Jako argument VARRAY podajemy górne ograniczenie liczby
projektów – np. liczba 4.
CREATE TYPE Lista
AS VARRAY(4) OF Projekt;
Definicja typu obiektowego o nazwie Projekt.
CREATE TYPE Projekt AS OBJECT
( Num_proj NUMBER(3),
Tytuł VARCHAR2(35),
Koszt NUMBER(7,2));
3
Definicja tabeli
Copyright © 2014-2015 E. Busłowska
4
Inicjacja wartości kolekcji
Jeden z atrybutów tabeli tzn. Projekty jest typu tablicowego
Lista.
CREATE TABLE Wydziały
( Id_wydz NUMBER(2),
Nazwa VARCHAR2(15),
Budżet NUMBER(11,2),
Projekty Lista);
Copyright © 2014-2015 E. Busłowska
2
Definicja typ kolekcji
Przykład zastosowania typu VARRAY
Copyright © 2014-2015 E. Busłowska
Copyright © 2014-2015 E. Busłowska
5
Używamy funkcji konstruktora o tej samej nazwie co typ
kolekcji.
Do tabeli Wydziały wstawiamy wartości atrybutów pamiętając
aby zgodnie ze specyfikacją tablica Projekty nie miała więcej niż
cztery elementy (ale może mieć mniej).
INSERT INTO Wydziały VALUES(1,'Informatyka',100000,
Lista(Projekt(1,'Analiza',123), Projekt(2,'Projekt',456)));
Copyright © 2014-2015 E. Busłowska
6
1
Typ referencyjny
Dostęp do wartości kolekcji w PL/SQL
Dla każdego typu obiektowego Type jest automatycznie
definiowany jego typ referencyjny oznaczany przez REF Type.
Daje możliwość wiązania wartości atrybutu bądź wartości w
kolumnie z innym obiektem podobnie jak klucz obcy odwołuje
się do klucza głównego.
Jest to alternatywny sposób tworzenia powiązań.
W kodzie PL/SQL do poszczególnych elementów
kolekcji można dostawać się używając składni:
Nazwa_kolekcji(wskaźnik)
Copyright © 2014-2015 E. Busłowska
7
Bardzo duże obiekty
9
CLOB - służy do przechowywania w bazie danych bardzo dużych bloków
danych znakowych.
BLOB - służy do przechowywania w bazie danych bardzo dużych,
strukturalnych lub niestrukturalnych obiektów binarnych (np. zdjęć).
BFILE - służy do przechowywania w bazie danych bardzo dużych plików
binarnych. W odróżnieniu od innych obiektów typu danych LOB, obiekty
typu BFILE nie są przechowywane w bazie danych, lecz poza nią.
NCLOB służy do przechowywania w bazie danych bardzo dużych bloków
jedno-lub wielobajtowych (o stałej długości) danych typu NCHAR.
Copyright © 2014-2015 E. Busłowska
10
Pakiet DBMS_LOB
Praca z obiektami LOB
Większą część operacji na obiektach typu LOB wykonywane są
przez procedury i funkcje pakietu DBMS_LOB.
Do pracy z obiektami typu LOB należy posiadać uprawnienie
systemowe CREATE ANY DIRECTORY i uprawnienie obiektowe
EXECUTE do biblioteki DBMS_LOB.
Copyright © 2014-2015 E. Busłowska
8
Typy danych LOB
Obiekty (LOB) umożliwiają zapisanie w bazie danych wielkich
ilości (do 4 GB) danych nieustrukturalizowanych (np. pliki
graficzne, muzyczne).
Wewnętrzna struktura tych obiektów jest niedostępna dla SQL,
a dostęp realizowany jest dzięki odpowiednim podprogramom
bazy danych Oracle.
Typy danych LOB umożliwiają wydajny, bezpośredni i
fragmentaryczny dostęp do danych i mogą stanowić atrybuty
typów obiektowych.
Copyright © 2014-2015 E. Busłowska
Copyright © 2014-2015 E. Busłowska
11
Pakiet służy do obsługi typów LOB z poziomu PL/SQL.
Najważniejsze podprogramy tego pakietu:
APPEND() - parametry: cel IN OUT typ; typ::= {BLOB|CLOB}. Dolacza
dane obiektu zródlo do obiektu cel.
CLOSE() - parametry: lob IN OUT typ; typ::= {BLOB,CLOB,BFILE}.
Zamyka otwarty wcześniej obiekt.
COMPARE() - parametry: lob1 IN typ, lob2 IN typ, ilosc INTEGER,
offset1 INTEGER, offset2 INTEGER; typ::= {BLOB|CLOB|BFILE}.
Porównuje dwa obiekty LOB lub ich czśćci. Jeśli obiekty są równe,
wówczas zwraca wartość 0, w przeciwnym wypadku wartość różną od 0.
COPY() - parametry: cel IN OUT typ, zródlo IN typ, ilosc IN INTEGER,
cel_offset IN INTEGER, zródlo_offset IN INTEGER; typ::= {BLOB|CLOB}.
Kopiuje całkowicie lub częsciowo zawartość obiektu zródlo do obiektu cel.
Copyright © 2014-2015 E. Busłowska
12
2