Obiektowe modelowanie systemów informatycznych



Pobieranie 8,01 Mb.
Strona12/113
Data23.10.2017
Rozmiar8,01 Mb.
1   ...   8   9   10   11   12   13   14   15   ...   113

Język SQL-3


Dowolny model danych (relacyjny czy obiektowy) łączy w sobie następne trzy aspekty:

  • Strukturalny, deklarujący zasady organizacji struktury bazy danych;

  • Poprawnościowy, wyznaczający wewnętrzną poprawność danych, zgodność z więzami integralności;

  • Manipulacyjny, Wyznaczający zasoby do manipulowania danymi w bazie danych.

Struktura obiektowego modelu jest stworzona za dopomogą następnych konceptualnych pojęć :

  • Inkapsulacja

  • Dziedziczenie

  • Polimorfizm.

Integralność obiektowego modelu bazy danych jest zrealizowana za dopomogą:

  • Realizacji o dziedziczenia pomiędzy klasami odpowiednich obiektów w sposób automatyczny na poziomie zarządzania OBD

  • Możliwością zrobić niewidocznymi oddzielnie atrybuty i metody dla innych obiektów

  • Stworzenia procedur kontroli wewnętrznej .

Manipulacja danymi musi być zrealizowana na poziomie dowolnego języka obiektowego.

Zalety OBD:



  1. Naturalny sposób prezentacji danych światu rzeczywistego. W modelu relacyjnym wszystkie relacji są na jednym poziomie bez możliwości wykorzystania danych z typem hierarchicznym. To uniemożliwi się przekształcenie podobnych związków hierarchicznych modelu „Encja-związek” do modelu relacyjnego. Oprócz tego model obiektowy może być wykorzystany na różnych poziomach abstrakcji.

  2. Możliwość wykorzystania dowolnych typów danych oraz metod skojarzonych z nimi.

Wady OBD:

  1. Są nieobecne zasoby nieproceduralne do wywołania obiektów z OBD. Wszystkie wywołania obiektów muszą być zrealizowane przez odpowiednie procedury stworzone przez programistę. Optymalizacja tych procedur jest przełożona na programistę.

  2. Są nieobecne możliwości w sposób deklaratywny definiować warunki integralności OBD :

  • Definicji integralności encji i odwołań za dopomogą klucze pierwotnych i obcych (przy pomocy słów kluczowych PRIMARY KEY i REFERENCES);

  • Tworzenia trygerów.

Dla realizacji integralności OBD trzeba pisać odpowiedni kod proceduralny.

Język SQL-3 (SQL-99) jest nowym standardem języka SQL, opracowany przez ANSI (American National Standard Institute) oraz ISO. SQL-3 jest następcą i rozszerzeniem SQL-92. W założeniu, ma to być uniwersalny język programowania dla relacyjnych baz danych z elementami obiektowości. Specyfikacja SQL-3 przewiduje następne główne obiektowe rozszerzenia SQL2 (Major Object-Oriented SQL Extensions – MOOSE):



  • Rozszerzenie obecnego systemu typów SQL o abstrakcyjne typy danych (abstract data type ADT). ADT mogą być typami wartościowymi oraz typami obiektowymi. Typy wartościowe działają jako typy domenie (Domain) w SQL2. Typy obiektowe obsługują obiekty z identyfikatorem niezależnym od wartości.

  • W deklaracji struktury ADT mogą być zastosowane konstruktory typu sekwencja (LIST), zbiór(SET), wielozbiór (MULTISET).

  • Tabela może być zdefiniowana jako podtabela jednej lub kilka innych tabel (Hierarchia tabel jako forma specjalizacji).

  • Wywołania metod i funkcji z wnętrza wyrażenia SELECT.

Te rozszerzenia włączają metody, identyfikatory obiektów, podtypy i dziedziczenie, polimorfizm i integrację z językami zewnętrznymi. Pewne usprawnienia zostały także dodane do konstrukcji definiujących tablice, typy wierszy, identyfikatory wierszy oraz mechanizm dziedziczenia.

Dodatkowe udogodnienia włączają struktury sterujące i typy parametryzowane. Dzięki temu SQL-3 może zostać uniwersalnym językiem programowania do tworzenia, utrzymywania i wyszukiwania trwałych obiektów. Jednocześnie, deklarowana jest kompatybilność „w dół” ze standardem SQL-2. Każda tablica w SQL-3 ma predefiniowaną kolumnę (nazwaną IDENTITY), która zawiera identyfikatory jej wierszy. Daje to możliwość używania tych identyfikatorów w innych tablicach, czyli tworzenia ( de facto) powiązań wskaźnikowych.

Abstrakcyjny typ danych (Abstract Data Types - ADT) to jest typ danych definiowany przez użytkownika. Ten typ danych także nazywa się typem danych użytkownika (User Defined Types UDT). ADT mogą być wykorzystane jako typy wbudowane (np.,CHAR, INT, FLOAT). ADT zawierają dwie kategorii: typy rozróżnione (distinct type) oraz typy strukturalne. Typem rozróżnionym jest typ uzyskany poprzez nadanie nowej nazwy dla już zdefiniowanego typu. Nowy typ jest traktowany jako oddzielny (nieporównywalny) typ. Koncepcja typów rozróżnionych jest oparta na nazwowej zgodności typów. Np. W SQL3 można podać następujące deklaracje:

CREATE DISTINCT dolar_usa AS DECIMAL(9,2);

CREATE DISTINCT polski_zl AS DECIMAL(9,2);

Po takiej deklaracji porównanie wartości typu „dolar_usa” z wartością typu „polski_zl” powoduje błąd typu. Abstrakcyjne typy danych oznaczają, że wartości przechowywane w ramach tablic użytkownik może skojarzyć z metodami. W takim przypadku wartości te nie są dostępne bezpośrednio, lecz wyłącznie poprzez te metody (co stanowi istotę hermetyzacji). Metody mogą być pisane w SQL-3 lub w innych językach. Możliwe jest deklarowanie atrybutów obliczanych (lub inaczej, metod funkcyjnych).

Przykład stworzenia nowego typu danych w SQL-3:

Create type Address (

number char (6),

street char (30),

aptno integer,

city char (30),

state char (2),

zip integer

);

Przykład stworzenia tablicy z wyznaczonym typem danych:



Create table Addresses of Address;

Nowe typy danych mogą wykorzystane w kolumnach w postaci nie atomarnej. W następnym listingu jest zdefiniowana tablica „People” z nowym typem danych „Person”:

Сreate table People of new type Person (

name char (30),

address Address,

birthdate date,

);

Przykład stworzenia obiektowego typu danych:



CREATE OBJECT TYPE Osoba

( Nazwisko VARCHAR (30),

Wiek INT,

Adresa Address);

W SQL 3 jest wyznaczony nowy typ danych Row (krotka). To jest konsekwencja elementów danych „nazwa pola / typ danych”, które mogą składać wiersz tablicy. Wartość zmiennej typu ROW potrzebuje jedną kolumnę w tabeli. Przykład wykorzystania typu Row:

CREATE TABLE oddzial (

id VARCHAR (3)

localaddress ROW( street VARCHAR(25),

city VARCHAR(15),

pcode ROW( city_id VARCHAR(3),

part_id VARCHAR(3))));

INSERT INTO oddzial

VALUES (‘b01’,(‘Sniadeckich 2’, ‘Koszalin’,(‘75’, ‘453’)));

Dziedziczenie może być realizowane prze frazę „under”. W poniższym listingu nowy typ „Employee” zawiera odwołanie do obiektu, który jest w tablice „Departament”. Odwołanie zawiera identyfikator (OID) jednego z obiektów tej tablicy:

Create type Employee under Person (

empno char(10),

dept ref(Department)

);

W instrukcji Create table można zdefiniować typy danych oraz metody dostępu do nowych typów danych:



Create table People of new type Person (

name char(30),

address Address,

birthdate date

function age(:р ref(Person)) return date;

begin


current_age:=:р.birthdate-current_date;

return current_age;

end;

);

Architektura ORSZBD PostgreSQL


PostgreSQL to jest System zarządzania bazami danych opracowany na uniwersytecie w Berkeley przez profesora Stonebrakera. ORSZBD PostgreSQL został stworzony w ramach projektów badawczych, dlatego nie jest produktem komercyjnym i może być pobierany za darmo dla wykorzystania w projektach nie komercyjnych. Może być realizowany na platformach UNIX oraz Windows. W PostgreSQL są wprowadzone następne cechy obiektowości do modelu relacyjnego:

  • Abstrakcyjne typy danych

  • Dani typu „Procedura”

  • Reguły (trygery).

ORSZBD PostgreSQL podtrzyma temporalny model przechowywania danych oraz dostępu do tych danych. To znaczy, że dla dowolnego obiektu, który był stworzony w moment t1 oraz został usunięty w moment t2 , w BD są przechowywane wszystkie stany tego obiektu pomiędzy momentami t1 oraz t2. Modele nie temporalne przechowają tylko ostatnie modyfikowane stany obiektów. Jakakolwiek zmiana stanu obiektu w moment t nie pozwoli odczytać dani w poprzedni moment.

Architektura ORSZBD PostgreSQL realizuje model Klient – Serwer. Sesja z SZBD zawiera następne wspólnie działające procesy:



  • Postmaster – to jest proces, który steruje wszystkimi zewnętrznymi oraz wewnętrznymi procesami (proces – demon).Ten proces może wydzielić pamięć operatywną dla innych procesów oraz inicjalizuje procesy.

  • Postgres - to jest wewnętrzny proces serwera, który realizuje polecenia klienta. Postmaster zawsze inicjalizuje nowy Postgres – proces dla każdej aplikacji klienta. Ten proces może być uruchomiany tylko na serwerze.

  • Aplikacja klienta – to jest program, który może być uruchomiany na stacji klienta. Aplikacja może być połączona z Postgres tylko przez Postmaster.

Jeden proces Postmaster może sterować mnóstwem baz danych które są instalowane na serwerze. Aplikacja dla dostępu do bazy danych musi wywołać bibliotekę funkcji API C++ LIBPQ. Za dopomogą tych funkcji polecenie klienta jest skierowano do Postmastera, który tworzy proces serwera oraz łączy aplikację z serwerem. Od tego momentu procesy klienta oraz serwera współdziałają pomiędzy sobą bez pomocy Postmastera. Postmaster jest aktywny cały czas, przy tym oczekuje polecenia na dostęp aplikacji do baz danych oraz lub na ich odłączenie. API LIBPQ C++ pozwoli aplikacji klienta zrealizować w ciągu jedną sesji dużo połączeń z serwerem BD.

PostgreSQL pozwoli realizować dostęp aplikacji klientów do baz danych nie tylko w trybie lokalnym, ale i w trybie oddalonym przez protokół TCP/IP. System bezpieczeństwa ograniczy dostęp do baz danych. Użytkownik oddalony musi mieć w pliku pq_hba konto z IP adresem swojej stacji. Schemat współdziałania procesów PostgreSQL zawiera następne czynności (rys. 27):



  1. Aplikacja użytkownika wywoła Postmaster przez wyznaczony socket;

  2. Postmaster inicjalizuje proces serwera (Postgres);

  3. Aplikacja łączy bezpośrednio z procesem serwera;

  4. Aplikacja łączy się z wielu procesami.

Rys. 27




1   ...   8   9   10   11   12   13   14   15   ...   113


©operacji.org 2017
wyślij wiadomość

    Strona główna