SQL3 Nowy standard jezyka SQL 1998 (1)

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 1

Luty 1998

SQL3:

Nowy standard języka SQL

Kazimierz Subieta

Instytut Podstaw Informatyki PAN,
Warszawa

subieta@ipipan.waw.pl
http://www.ipipan.waw.pl/~subieta

Polsko-Japońska Wyższa Szkoła
Technik Komputerowych,
Warszawa

Luty 1998

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 2

Luty 1998

Terminologia, pojęcia

Niniejsza prezentacja zakłada znajomość podstawowych
konstrukcji SQL.
Prezentacja nie obejmuje wielu cech SQL3 (nie jest w
stanie).

Wyjaśnienie większości terminów z zakresu
obiektowości, które wystąpią w tej prezentacji, znajduje
się w pracy:

Kazimierz Subieta

Słownik często spotykanych

terminów dotyczących

obiektowości

Prace IPI PAN

Nr 839

Instytut Podstaw Informatyki PAN

Warszawa, wrzesień 1997

Słownik jest również dostępny na Webie (nieodpłatnie) w wersji postscript (140 stron):

http://www.ipipan.waw.pl/~subieta

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 3

Luty 1998

Geneza SQL3

Informix Universal Server (połączenie systemu Illustra i
Informix OnLine),

DB2 Universal Database (firmy IBM, połączenie Starburst i
DB2),

Oracle8 (firmy ORACLE),

OSMOS (firmy Unisys),

OpenIngres (firmy Computer Associates),

Sybase Adaptive Server (firmy SYBASE)

......

SQL3 powstaje w wyniku przenikania koncepcji obiektowych
do systemów relacyjnych. Jednocześnie, podjęto zadanie
ulepszenia poprzednich wersji SQL.

Intencją nowego standardu jest poprawa istniejących,
sprawdzonych cech relacyjnej technologii bez wprowadzania
zbyt rewolucyjnych zmian.
Nie jest pewne, czy ta intencja jest zachowana, bo zmiany są jednak
rewolucyjne...

Adresatem SQL3 są systemy określane jako “obiektowo-

relacyjne”:

Systemy obiektowo-relacyjne powstają w wyniku
ostrożnej ewolucji systemów relacyjnych w kierunku
obiektowości, liczą na pozycję systemów relacyjnych
na rynku i odwołują się do ich wiernej klienteli.

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 4

Luty 1998

Obecny status standardyzacji SQL

SQL3 rozszerza poprzedni standard SQL-92 w następujących

kierunkach:

SQL3 jest kontynuacją linii SQL-92, rozwijaną przez
ANSI (
American National Standard Institute), komitet X3H2,
oraz ISO (
International Standard Organization) .

Obiektowość: SQL3 reprezentuje podejście “hybrydowe”, dodajac
niektóre cechy obiektowości (takie jak ADT) do tablic znanych z
systemów relacyjnych.

Rozszerzalność: umożliwienie użytkownikom deklarowania
własnych typów.

Niekonwencjonalne typy danych: multimedialne, przestrzenne,
temporalne.

Pełne możliwości uniwersalnego języka programowania dla
definiowania i zarządzania trwałymi, złożonymi obiektami.
Rozszerzenia w zakresie aktywnych reguł, interfejsów do innych
języków programowania, autoryzacji, procedur bazy danych, ewolucji
schematu, i inne.

Deklarowana jest zgodność ‘w dół” ze standardem SQL-92.

(Praktyka jednak dowodzi, że ze „zgodnością w dół” bywa bardzo różnie...)

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 5

Luty 1998

Stan zaawansowania prac, krytyka

Wg planów, prace nad standardem miały być zakończone w IV kwart. 1998.
Wygląda jednak na to, że bedą nieco opóźnione (rok lub nawet 2-3 lata).

Głównym powodem jest fakt, że standard jest ogromny,
według różnych szacunków 1200 - 1600 stron, zaś jego
poszczególne części są niezbyt spójne.

Krytykę powoduje również fakt, że standard jest zbyt eklektyczny, łączy w
sobie wiele koncepcji i pojęć, często redundantnych i niespójnych.
Obciążeniem standardu jest deklarowana zgodność z SQL-92 (czyli
konieczność pogodzenia się z niektórymi wadami SQL-92).

Są opinie, że nad całością tego standardu nikt nie
panuje.
Zaznacza się bardzo silnie “syndrom komitetu”
(koń-
wielbłąd).
Są opinie, że nawet jeżeli ten standard powstanie,
nikt nie zaimplementuje go w całości, co podważy
sens standardyzacji.
Duże kontrowersje wzbudza fakt, że prace badawczo-
rozwojowe nad konstrukcją całkowicie nowego języka
programowania są podejmowane przez ciało
standardyzacyjne, statutowo powołane do innych celów.

Konkurencją jest standard ODMG (Object Database Management Group),

zawierający niecałe 250 stron, bardziej spójny i jednorodny, ale też o

znacznie mniejszym zakresie.

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 6

Luty 1998

Obiektowy model SQL3

Rozszerzenia w kierunku struktur obiektowych dotyczą
następujacych cech:

Typy definiowane przez użytkownika

(abstrakcyjne typy

danych (ADT), nazwane typy wierszy, oraz typy rozróżnione
(distinct)

Konstruktory typów dla wierszy

(row types) i

referencji

(reference types)

Konstruktory typów dla kolekcji:

zbiorów, list

(sekwencji) i wielozbiorów

Definiowane przez użytkownika funkcje i procedury

Wspomaganie dla dużych obiektów

(Binary Large OBject - BLOB, Character Large OBject - CLOB)

Wbudowane typy skalarne

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 7

Luty 1998

Rozszerzenia systemu typów

Rozszerzalność: definiowanie nowych typów “zrozumiałych” dla
SZBD.

Zwiększenie potencjału modelowania pojęciowego (złożone
obiekty).

Ponowne użycie istniejących bibliotek typów.

Integracja pojęć obiektowych i relacyjnych w jednym języku.

Abstrakcyjne typy danych (ADT)

+ Mocna kontrola typów

+ Podtypy i dziedziczenie

+ Hermetyzacja

+ Atrybuty wirtualne

+ Zamienialność

(substitutability

)

+ Procedury polimorficzne

+ Dynamiczne wiązanie (dyzpozycja funkcji podczas czasu wykonania)

+ Kontrola typu podczas kompilacji

+ Przywileje: kto może używać ADT

Typy rozróżnione (distinct): zwiększenie skuteczności mocnej kontroli typów i wydajności.

Typy wierszy:

+ Są podobne do struktur lub zapisów (records) w innych językach

+ Umożliwiają określenie typów wierszy w tablicach

+ Umożliwiają zagnieżdżanie wierszy

Typy kolekcji:

+ Wbudowane, parametryczne typy SET(T), LIST(T), MULTISET(T)

+ Odwzorowanie do tablic

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 8

Luty 1998

Procedury, operatory, podtablice,

programy

Funkcje definiowane przez użytkownika.

Przeciążanie funkcji.

Dynamiczna dyzpozycja (dispatch) funkcji.

Kontrola typologiczna wołania funkcji podczas kompilacji.

Procedury zapamiętane w bazie danych definiowane przez użytkownika.

Operatory definiowane przez użytkownika (z przeciążaniem i zmianą pierwszeństwa)

Podtablice:

+ Zwiększają możliwości w zakresie modelowania i moc wyszukiwawczą języka

+ Są środkiem do modelowania hierarchii kolekcji

+ Zapytanie działające na tablicy działa jednocześnie na podtablicach i v/v.

Inne rozszerzenia:

+ Dodatkowe predykaty (FOR ALL, FOR SOME, SIMILAR TO)

+ rozszerzenia możliwości kursorów

+ punkty składowania (savepoints)

+ rozszerzenia w zakresie aktualizacji perspektyw (view updating)

Zdania sterujące języka programowania (dotyczy SQL/PSM):

+ bloki begin/end, podstawienia, wołania procedur i funkcji, zdania
case, if, loop, for,
signal/resignal, zmienne, wyjątki;

+ wiele zdań SQL w jednym EXEC SQL;

Rozszerzenia w zakresie przetwarzania danych temporalnych.

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 9

Luty 1998

Typy definiowane przez użytkownika

Najprostsza forma: typy rozróżnione:

Nowa nazwa dla już zdefiniowanego typu, traktowana jako oddzielny
(nieporównywalny) typ:

CREATE DISTINCT dolar_usa AS DECIMAL(9,2)
CREATE DISTINCT polski_zl AS DECIMAL(9,2)

Porównanie wartości typu dolar_usa z wartością polski_zl powoduje błąd typu.

Typ wiersza:

ciąg par <nazwa_pola, typ_danej>, przypominający

deklarację tablicy.
Typ wiersza może być użyty do deklarowania tablic, wartości kolumn,
zmiennych, parametrów.
Typ wiersza może być być nazwany; jest wtedy równoważny delaracji typu
(struktury).

CREATE ROW TYPE TypKoduPoczt (rejon CHAR(2) lokacja CHAR(3));

CREATE TABLE pracownicy
(nazwisko CHAR(30),
adres ROW( ulica CHAR(30),nr_domu CHAR(4), miasto CHAR(20),

kod_poczt TypKoduPoczt));

INSERT INTO pracownicy VALUES
(‘Nowak’, (‘Ordona’, ‘21’, ‘Warszawa’, (‘01’,‘237’)));

distinct types, row types

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 10

Luty 1998

Abstrakcyjne typy danych, ADT

ADT definiują atrybuty i operacje zakapsułowane w jednostce danych.

CREATE TYPE TypPracownika
(PUBLIC

nazwisko

CHAR(20),

adres

TypAdresu,

kierownik

TypPracownika,

data_zatrudn DATE,

PRIVATE

zar_brutto

DECIMAL(7,2),

potracenia

DECIMAL(7,2),

PUBLIC

FUNCTION lata_pracy(p TypPracownika) RETURNS INTEGER

<kod obliczający lata pracy>,

PUBLIC

FUNCTION zarobek(p TypPracownika) RETURNS DECIMAL

<kod oblicząjacy aktualny zarobek>

);

Pełna hermetyzacja

(encapsulation): dostęp do wartości typu

TypPracownika

jest możliwy wyłącznie poprzez własności określone jako PUBLIC.

abstract data type

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 11

Luty 1998

Dalsze własności ADT

ADT może być zdefiniowany jako podtyp innego ADT. Podtyp
dziedziczy wszystkie własności nadtypu (atrybuty i operacje),
dokładając własne atrybuty i operacje. Wspomagane jest wielo-
dziedziczenie.

Wystąpienia ADT (czyli obiekty) mogą być trwale zapamiętane w
bazie danych jako wartości kolumn tablic.

Możliwe jest zadeklarowanie atrybutów wirtualnych (takich jak
lata_pracy)

Dla każdego atrybutu automatycznie są definiowane dwie
funkcje:

* obserwator (funkcja czytająca atrybut)
* mutator (funkcja zmieniająca atrybut)

Wystąpienia ADT są tworzone przez zdefiniowane systemowo
konstruktory.
Atrybuty mogą być inicjalizowane poprzez wołanie mutatorów.
Możliwe jest definiowanie wyspecjalizowanych konstruktorów.

BEGIN
DECLARE
p TypPracownika;
SET
p..nazwisko = ‘Kowalski’;
SET
p..data_zatrudn = ‘96/02/11’;
.....
END

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 12

Luty 1998

Typy referencyjne

reference type

Nazwany typ wiersza może być użyty jako typ referencyjny.
Wartość typu referencyjnego jest unikalnym identyfikatorem wystąpienia typu wiersza.
Jest on trwały, niezmienny dla całego życia danego wystąpienia.

Wartość typu referencyjnego może być zapamiętana w tablicy i
nastepnie użyta jako bezpośrednia referencja
(wskaźnik, pointer) do
specyficznego wiersza w innej tablicy. W efekcie, możliwe jest
tworzenie powiązań asocjacyjnych pomiędzy obiektami, tak jak w
modelu obiektowym ODMG.

CREATE ROW TYPE TypKonta
(nr_konta INTEGER,
klient REF(TypKlienta),
typ_konta CHAR(1),
data_otwarcia DATE,
oprocentowanie DOUBLE PRECISION,
bilans DOUBLE PRECISION,
);

CREATE TABLE Konto OF TypKonta
(PRIMARY KEY nr_konta
);

typ

referencyjny

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 13

Luty 1998

SELECT k.klient -> nazwisko
FROM Konto k
where k.klient->adres..miasto = “Kraków”
AND k.bilans > 10000;

Użycie referencji w zapytaniach

Referencje mogą być użyte w zapytaniach w postaci tzw.
wyrażeń ścieżkowych
(path expressions), podobnych do
analogicznych wyrażeń w innych językach.

CREATE ROW TYPE TypKlienta
(nr_klienta INTEGER,
nazwisko CHAR(30),
adres ROW( ulica CHAR(30),nr_domu CHAR(4),

miasto CHAR(20), kod_poczt TypKoduPoczt));

Deklaracja typu

TypKlienta

Zdanie select

dereferencja

k.klient->adres..miasto

wyrażenie ścieżkowe

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 14

Luty 1998

Kolekcje

Kolekcje są to wartości zawierające pewną liczbę
jednorodnych elementów, od zera do dowolnej dużej liczby.
Liczba elementów może się dowolnie zmieniać w czasie
istnienia bazy danych. SQL3 przewiduje następujące
kolekcje:
- zbiory
(sets): zestaw elementów bez powtórzeń, kolejność
nieistotna,
- listy
(lists): zestaw elementów z ew.powtórzeniami, kolejność
istotna,
- wielozbiorów (multisets): zestaw elementów z powtórzeniami,
kolejność nieistotna

collection

Kolumny tablic mogą zawierać kolekcje.

CREATE TABLE pracownicy
(id INTEGER PRIMARY KEY,
nazwisko VARCHAR(30),
adres ROW( ulica VARCHAR(40),

nr_domu CHAR(4),
miasto CHAR(20),
kod_poczt INTEGER),

projekty SET(INTEGER),
dzieci LIST(TypOsoby),
zainteresowania SET(VARCHAR(20)));

}

Deklaracje

atrybutów, których

wartości są

kolekcjami

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 15

Luty 1998

Operacje wyszukiwania na kolekcjach

SELECT *
FROM
pracownicy p
WHERE ‘podróże’ IN (SELECT *

FROM TABLE(p.zainteresowania) z)

AND 5 > (SELECT count(*) FROM TABLE (p.dzieci) d)

W zapytaniach wystąpienia typów
SET, LIST i MULTISET
są traktowane jak tablice.

Końcowy rezultat zapytania jest zawsze
tablicą

(w danym przypadku - fragmentem tablicy
pracownicy).

Podaj informacje o pracownikach, którzy interesują sie
podróżami i mają więcej niż pięcioro dzieci.

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 16

Luty 1998

Duże obiekty: BLOB i CLOB

W odróżnieniu od istniejących rozwiązań, wystąpienia dużych
obiektów nie są odrębnymi plikami, ale są zapamietane w
bazie danych na zasadzie identycznej do zapamietywania
prostych wartości.

W stosunku do wartości BLOB i CLOB maja zastosowanie wszystkie
mechanizmy bazy danych, w szczególności mechanizmy bezpieczeństwa,
prywatności, transakcji, cofania i odtwarzania.

CREATE TABLE pracownicy
(id INTEGER PRIMARY KEY,
nazwisko VARCHAR(30),
zarobek polski_zl,
.....
opinia CLOB(75K),
podpis BLOB(1M),
zdjecie BLOB(12M));

Binary Large OBject, Character Large OBject

Tego rodzaju atrybuty mogą być używane w zdaniach
select, ale oczywiście, nie wszystkie operacje maja
zastosowanie. Działają na nich wyspecjalizowane funkcje
oraz operacje, takie jak wyszukiwanie wartości, predykat
LIKE, itd.

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 17

Luty 1998

Dziedziczenie

inheritance

ADT może być zdefiniowany jako podtyp jednego lub więcej ADT
poprzez zdanie UNDER.
Podtyp dziedziczy wszystkie atrybuty i operacje (behawior) jego nadtypów;
mogą być zdefiniowane dodatkowe atrybuty i operacje. Przesłanianie
(overriding): w ramach podtypu może być zdefiniowana operacja o tej
samej nazwie co odziedziczona; w takim przypadku ta operacja
“przesłania” odziedziczoną. Podtyp może zmienić nazwy dziedziczonych
własności.

Wystąpienie podtypu jest uważane za wystąpienie wszystkich jego
nadtypów.

Zasada zamienialności (substitutability): wystąpienie podtypu może być
użyte wszędzie tam, gdzie może być użyte wystąpienie nadtypu.

CREATE TYPE posiadłość
(areał

DECIMAL(5,2),

lokalizacja

adres,

opis

VARCHAR(1024),

zdjęcie_frontu

BLOB,

dokument

CLOB);

CREATE TYPE dom UNDER posiadłość
(il_pięter

INTEGER,

il_pokoi

INTEGER,

powierzchnia_domu
DECIMAL(5,2));

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 18

Luty 1998

Tablice z ADT, operacje na ADT

CREATE TABLE info_o_posiadłości
(cena

pieniądze,

właściciel CHAR(40),
własność

posiadłość);

INSERT INTO info_o_posiadłości VALUES
(polski_zl(200000), ‘Jan Nowak’,
posiadłość(1500,... );
INSERT INTO info_o_posiadłości VALUES
(polski_zl(150000), ‘Adam Kowal’, dom(400,... );

może być tu zarówno
posiadłość jak i dom
(zasada zamienialności)

Informacja o typie jest trzymana razem z wartością i może być testowana.

SELECT właściciel, cena_w_zl(cena)
FROM info_o_posiadłości
WHERE cena_w_zl(cena) < polski_zl(180000)
AND TYPE(własność) IN (dom)
AND własność..il_pokoi > 7

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 19

Luty 1998

Podtablice, nadtablice

Jest to mechanizm niezależny od ADT, podtypów i dziedziczenia.

CREATE TABLE osoba
(nazwisko CHAR(30),
płeć CHAR(1),
wiek INTEGER);

CREATE TABLE pracownik UNDER osoba
(zarobek FLOAT);

CREATE TABLE klient UNDER osoba
(konto INTEGER);

Nadtablica

Podtablica

Podtablica

Podtablica dziedziczy wszystkie kolumny
nadtablicy; może mieć własne kolumny.
Maksymalna tablica wraz ze wszystkimi
podtablicami tworzą rodzinę podtablic.
Każdy wiersz podtablicy musi być związany z
dokładnie jednym wierszem nadtablicy. Każdy
wiersz nadtablicy może być związany z co
najwyżej jednym
wierszem podtablicy.
Operatory INSERT, DELETE, UPDATE działają
spójnie i jednocześnie na całej rodzinie
podtablic
.

“Maksymalna” tablica

subtable, supertable

Nadtablica

Podtablica

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 20

Luty 1998

Procedury w SQL3

Zalety:

nie jest potrzebny interfejs pomiędzy SQL i językiem-gospodarzem

wyeliminowana niezgodność impedancji

zachowana jest informacja o typie umożliwiająca mocną kontrole typu

CREATE FUNCTION podaj_info_o_posiadłości( pos posiadłośc)
RETURNS VARCHAR(1024)
BEGIN ATOMIC

/* blok 1 */

DECLARE tekst VARCHAR(1024);
...
BEGIN ATOMIC

/* blok 2 */

DECLARE lok_zm posiadłość;

/* lokalna zmienna */

SET lok_zm = pos;
SET tekst = opis_tekstowy(lok_zm); /* pewna funkcja */
IF TYPE(lok_zm)IN (dom)

THEN ....

END IF;
END;

/* koniec bloku 2 */

...
RETURN tekst;
END;

/* koniec bloku 1 */

• Podstawienie na lokalna zmienną lok_zm zachowuje informacje o typie.

• Ta informacja jest także przekazywana do wnetrza wołanej procedury

opis_tekstowy.

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 21

Luty 1998

Rozszerzenia proceduralne SQL3

Zdania złożone

BEGIN ... END

Deklaracje zmiennych

DECLARE x INTEGER;

Zdanie if

IF x <> 5 THEN ... ELSE ...

Zdanie case

CASE x
WHEN 4 THEN ...
WHEN 5 THEN ...

Zdanie loop

LOOP <ciąg zdań SQL> END LOOP;

Zdanie while

WHILE x <100 DO ... END WHILE;

Zdanie repeat

REPEAT ... UNTIL x <1 END REPEAT;

Zdanie for

FOR rezultat AS ... DO ... END FOR;

Zdanie leave

LEAVE ... ;

Zdanie return

RETURN x;

Wołanie procedury

CALL JakasProcedura(1, 3, 5);

Zdanie podstawienia

SET x = 27;

Sygnalizacja wyjątku

SIGNAL dzielenie_przez_zero;

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 22

Luty 1998

Rozszerzenia w zakresie wyzwalaczy

trigger

Wyzwalacze są nazwanymi obiektami bazy danych, które są
spontanicznie aktywowane po wystąpieniu
odpowiadającego im zdarzenia.

Akcja jest wykonywana, jeżeli spełniony jest warunek.

CREATE TRIGGER aktualizacja_bilansu
BEFORE INSERT ON historia_konta
REFERENCING NEW AS zlec_wyplaty
FOR EACH ROW
WHEN (zlec_wyplaty.autoryzacja = ‘OK’)
UPDATE konta

SET bilans = bilans - zlec_wyplaty.ile
WHERE nr_konta = zlec_wyplaty.nr_konta;

zdarzenie

warunek

akcja

Wyzwalacze mają wiele zastosowań, w szczególności do kontroli
poprawności operacji, do egzekwowania reguł biznesu, do
aktualizowania redundantnych danych (replik), itd. Możliwości
wyzwalaczy w SQL3 są rozszerzone w stosunku do SQL-92.

Zdarzeniami mogą być zlecenia INSERT, DELETE, UPDATE dotyczące
tablic i kolumn.

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 23

Luty 1998

Krytyczne podsumowanie (1)

W nowym standardzie SQL3 twórcy próbują
wyeliminować wszelkie wady jego poprzedników.
Jednocześnie, próbują wszystko z nich pozostawić.

Występuje tendencja do uniwersalizmu, nie przeoczenia
jakiejkolwiek własności, która mogłaby mieć znaczenie
dla organizacji bazy danych lub interfejsu
programistycznego.

Silnie zaznacza się wpływ modnych pojęć obiektowości,
które nakładają się na wymienione (sprzeczne)
tendencje. Jednocześnie obiektowość jest okrojona i
wtłoczona w obce jej mechanizmy. Jest wątpliwe, czy jest
to droga do realizacji misji obiektowości, jaką jest walka
ze złożonością.

Standard tworzy się bez troski o minimalność języka.
Duża liczba konstrukcji jest redundantnych, od strony
syntaktycznej, semantycznej lub koncepcyjnej.

Zaznaczają się wyraźnie prywatne ambicje i koniki
twórców standardu, przez co przemycane są cechy
drugorzędne, egzotyczne, lub z pogranicza
implementacyjnej kuchni.

background image

K.Subieta. SQL3: Nowy standard języka SQL, Folia 24

Luty 1998

Krytyczne podsumowanie (2)

Podejście do mocnej kontroli typów jest naiwne i nie
wróży nic dobrego.

Podejście do programowania ogólnego (SQL/CLI)
zachowuje wady dynamicznego SQL. Brakuje takich
pojęć jak typy/klasy parametryczne, funkcje wyższego
rzędu, itd.

Ortogonalność języka pozostawia wiele do życzenia;
nadal bedą kłopoty ze
“skomplikowanymi” zapytaniami takimi jak 2+2.

Semantyka wielu konstrukcji jest wyjaśniona na prostych
przykładach, co zwykle nie jest wystarczające. Występuje
brak troski o interakcję konstrukcji i zasadę
korespondencji

(np. jak aktualizować referencje, czy można zrobić

grupowanie wg typu lub referencji, ...)

W rezultacie powstaje konstrukcja dość monstrualna.
Jest mało prawdopodobne, aby producenci systemów
implementowali ją w całości.

Prawdopodobnie, producenci systemów uzgodnią pewną
część tego standardu, która będzie implementowana.
Jest pewne, że wykażą oni więcej rozsądku, niż twórcy
tego kontrowersyjnego standardu.


Document Outline


Wyszukiwarka

Podobne podstrony:
Podstawy języka SQL, TYTAN 5
Adobe Photoshop 7 0 wyznacza nowy standard
Podstawy języka SQL Kuśnierz
bd ii cw1 podstawy jezyka sql
Podstawy języka SQL
Bazy Danych Elementy Jezyka SQL cz I
4.2.9 Nowy standard, 4.2 Sygnały i szumy
rozkazy jezyka sql
Bazy Danych Elementy Jezyka SQL cz II
podst języka SQL
Podstawy języka SQL
Podstawy Jezyka SQL
kurs języka sql 4V63FQE2BQUQV6W7NGMCCMNMQIGPG6WCRKIPWMI
Antywzorce jezyka SQL Jak unikac pulapek podczas programowania baz danych

więcej podobnych podstron