I.
Wprowadzenie do  języków zapytań (1)
II.
Wprowadzenie do  języków zapytań (2)
III.
Pojęcia obiektowości w bazach danych (1)
IV.
Pojęcia obiektowości w bazach danych (2)
V.
Podstawy semantyczne języków zapytań
  Wstęp
  1. Składnia, semantyka i pragmatyka języka formalnego
  2. Składnia abstrakcyjna i semantyka kierowana składnią
  3. Semantyka języka zapytań z lotu ptaka
  4. Optymalizacja zapytań
  5. Zasady języków zapytań
  6. Zapytania eliptyczne
  7. Typowe wady teorii języków zapytań
  8. Czym jest (lub powinna być) teoria języków zapytań?
  9. Założenia semantyczne podejścia stosowego
  10. Nazwy, zakresy i wiązanie
  11. Operacyjna semantyka zapytań i programów
  Podsumowanie
  Zadania
VI.
Modele składu obiektów
VII.
Stos środowisk, rezultaty zapytań, funkcja nested
VIII.
Język SBQL (Stack-Based Query Language) (1)
IX.
X.
Dalsze własności SBQL
XI.
Operatory order by i group by
XII.
Przetwarzanie struktur nieregularnych
XIII.
Rozszerzenie języków zapytań o konstrukcje imperatywne
XIV.
Procedury, procedury funkcyjne, metody, reguły zakresu
XV.
Parametry procedur i metod, procedury rekurencyjne, optymalizacja poprzez modyfikację zapytań

 

2. Składnia abstrakcyjna i semantyka kierowana składnią

Do anegdot przeszły dawne spory twórców języków komputerowych, kłócących się np., czy zdania języka programowania lepiej kończyć kropką czy może raczej średnikiem. Od tego czasu składnia wzbudza odruch lekceważenia u specjalistów, którzy ukuli termin "lukier syntaktyczny" (syntactic sugar) na oznaczenie semantycznie nieistotnych elementów zdań lub wyrażeń.

Nie jest tak, że lukier syntaktyczny jest całkowicie nieważny i że całość gramatyki języka to "lukier syntaktyczny". Lukier jest często istotny z punktu widzenia pragmatyki języka. Np. jeżeli mamy zdanie

P5.1.

select Nazwisko from Osoba where Stan = "analityk"

to słowa kluczowe select, fromwhere są bez wątpienia lukrem syntaktycznym, i nie ma większego sensu dyskusja, czy ten zapis jest lepszy czy gorszy od zapisu np.:

P5.2.

search Osoba with Stan = "analityk" then retrieve Nazwisko

gdzie search, withthen retrieve są analogicznym (jakkolwiek innym) lukrem syntaktycznym. Oba powyższe zdania niosą ładunek pragmatyki ustalający, do czego takie zdania mogą być użyte, co je zasadniczo różni od semantycznie równoważnego zdania z innym lukrem syntaktycznym, np.

P5.3.

Nazwisko <- Osoba : Stan = "analityk"


W odróżnieniu od pragmatyki, semantyka nie zależy od lukru syntaktycznego. W naszym wykładzie będziemy więc ten lukier redukować do minimum, starając się oczywiście nie wpaść w drugą skrajność, w której zdania języka będą przypominać wojskowy szyfr. Składnia pozbawiona lukru syntaktycznego nosi nazwę składni abstrakcyjnej. Dla przykładu, składnia abstrakcyjna zdania SQL:

P5.4.

select A from B where C

może mieć postać select(A; B; C), gdzie select jest operatorem, zaś A, B i C są jego argumentami.


Podany wyżej zapis składni zdania select jest uproszczony, gdyż nie uwzględnia sposobu budowania semantyki. W istocie, powyższe zdanie jest złożeniem operatora selekcji i operatora rzutowania (projekcji); zatem prawidłowy zapis składni tego zdania będzie miał postać:

P5.5.

(select A from (B where C))


Taka postać rozbioru gramatycznego tego zdania jest prawidłowa, gdyż umożliwia przypisanie do składni reguł semantycznych (które brzmią: oblicz B, odrzuć te krotki, które nie spełniają C, następnie dokonaj rzutowania tego co pozostało na A). Analogiczna składnia (prowadząca do dokładnie tego samego zbioru napisów tego języka):

P5.6.

((select A from B) where C)

jest niepoprawna, gdyż uniemożliwia prawidłowe przyporządkowanie reguł semantycznych. Tę zależność pomiędzy składnią a semantyką nazywa się często semantyką kierowaną składnią (syntax-driven semantics). W semantyce kierowanej składnią reguły semantyczne są bezpośrednio przypisane do reguł składniowych. Oznacza to, że reguły składniowe nie mogą być dowolne, ale muszą być budowane w taki sposób, aby odwzorować reguły semantyczne. Dla wszystkich znanych języków programowania i języków zapytań semantyka (o ile jest prawidłowo zdefiniowana) jest kierowana składnią, przy czym definicja staje się prostsza, o ile składnia ma postać składni abstrakcyjnej. Tę metodę będziemy stosować w niniejszym wykładzie.

Copyrights © 2006 PJWSTK
Materiały zostały opracowane w PJWSTK w projekcie współfinansowanym ze środków EFS.