Proceduralne i nieproceduralne języki manipulowania danymi (języki algebry relacyjnej i rachunku predykatów)

From Obrona

Revision as of 22:35, 10 July 2006 by Magda (Talk | contribs)
(diff) ←Older revision | view current revision (diff) | Newer revision→ (diff)

Contents

[edit] Język proceduralny

Język proceduralny (ang. procedural language) – język programowania umożliwiający tworzenie oprogramowania w postaci programu głównego oraz wielu procedur (lub podprogramów), z których każda realizuje określoną funkcję i może być wywoływana wielokrotnie przez program główny. Każda z procedur pobiera określoną liczbę parametrów oraz opcjonalnie zwraca wartość wynikową w jednej ze zmiennych (procedura) lub jako wartość zwracaną (funkcja). Istnienie mechanizmu zmiennych lokalnych oraz parametrów wywołania umożliwia zagnieżdżanie odwołań do procedury, co w efekcie pozwala na stosowanie technik rekurencyjnych. Języki proceduralne wspomagają proces przygotowywania uniwersalnych bibliotek procedur i funkcji, dołączanych do nowo tworzonych programów, co przyspiesza proces tworzenia nowego programu oraz poprawia jakość tworzonych aplikacji.

[edit] Język nieproceduralny

Język nieproceduralny (ang. non-procedural language) - język programowania pozwalający na pisanie programów jedynie w postaci ciągłej sekwencji instrukcji (niepodzielonej na procedury). Możliwe jest wykonywanie skoków warunkowych i bezwarunkowych oraz wykonywanie podprogramów, nie istnieje jednak pojęcie parametrów wywołania procedury, wartości zwracanej przez funkcję oraz zmiennych lokalnych i globalnych. Tworzenie współdzielonych przez wiele programów bibliotek funkcji (do powtórnego wykorzystania) oraz stosowanie takich technik programistycznych jak rekurencja jest znacznie utrudnione lub niemożliwe.

[edit] Pochodzenie tekstu

Tekst pochodzi z polskiej Wikipedii lub opiera się na haśle z Wikipedii i udostępniony jest na licencji GFDL.

  • Co to GFDL? - artykuł na pl.wikipedia.org
  • GFDL - licencja GFDL w witrynie gnu.org

[edit] Opracowanie

INT08: Proceduralne i nieproceduralne języki manipulacji danymi (języki algebry relacyjnej i rachunku predykatów)

Algebra relacyjna (używana w j. proceduralnych):

  • operatory mnogościowe:
    • suma – krotka należy do relacji (tabeli) R lub S
    • różnica – krotka należy do relacji R i nie należy do S
    • przekrój – krotka należy do relacji R i S
    • dopełnienie – krotka uzupełnia informacje relacji R (razem tworzą całość)
  • relacyjne:
    • projekcja (rzutowanie) – usunięcie określonych kolumn (wiersze w tabeli po **projekcji nie mogą się powtarzać)
    • konkatenacja – złączenie tych krotek 2 relacji, które mają te same wartości na **wspólnych kolumnach relacji
    • selekcja – wybór krotek spełniających określony warunek
    • dzielenie – dzięki konkatenacji krotki ze zbioru relacji R pomniejszonej o zbiór Z i pewnej krotki z Z uzyska się relację R (dzielenie R przez zbiór Z będący podzbiorem relacji R)

Języki manipulacji danymi:

  • proceduralne (użytkownik opisuje pewną procedurę wyszukiwania i uzyskiwania danych na pewnym poziomie szczegółowości) – np. ISBL:
  • wyszukiwanie jednostkowe (sieciowa baza danych),
  • wyszukiwanie grupowe (np. definicja ciągu operacji algebry relacji)
  • nieproceduralne (użytkownik podaje jedynie warunki, jakie powinien spełniać żądany przez niego wynikowy zbiór wymagań) – rachunek predykatów. Wyrażenia nieproceduralne muszą być przetłumaczone w systemie na ciąg wyrażeń języka proceduralnego.
  • rachunek krotek (SQL)
  • rachunek domen (QBE)

ISBL Proceduralne – użytkownik buduje zapytanie w postaci procedury, którą można przedstawić jako ciąg kroków, takich jak selekcja, rzut, złączenie. ISBL jest przykładem języka opartego na „czystej” algebrze relacji.

Przykładowo dana jest relacja L-P i schemat {LEKARZ, PACJENT, CHOROBA}. Pytanie o nazwiska wszystkich pacjentów z rozpoznaną anemią i nazwiska leczących ich lekarzy można zapisać:

LIST [ΠLEKARZ(ΣCHOROBA=’anemia’(L-P))] – zapytanie w języku naturalnym WYNIK=L=P:CHOROBA=’anemia’%LEKARZ, PACJENT - zapytanie w ISBL LIST WYNIK

QBE (Query-By-Example) – język ten zyskał popularność z powodu swojego „dialogowego i wizualnego” charakteru. Podstawową ideą jest dostarczenie bazie danych interfejsu w postaci menu lub formularza. Użytkownik rozpoczyna dialog z interfejsem QBE od wyboru tabel z wyświetlonego menu tabel. Następnie wyświetla się szablon tabeli dla każdej wybranej tabeli. Użytkownik wypełnia puste miejsca w tym szablonie używając stałych lub wcześniej zdefiniowanych poleceń. Przez takie wpisywanie definiuje on kryteria wyszukiwania lub aktualizuje wartości danych komórek.

Język QBE jest pełny, gdyż można wykonać w nim 5 operacji algebry relacji. Istotnym rozszerzeniem języka są operatory agregujące: SUM, AVG, MAX, MIN, CNT. Są to operatory wyższego rzędu, ponieważ działają na relacjach dając w wyniku wartość skalarną. QBE jest też wyposażony w mechanizmy typowe dla języków DML (Data Manipulation Language), pozwalające zmieniać zawartość bazy danych (dołączać nowe krotki, usuwać istniejące, zmieniać wartości atrybutów) oraz mechanizmy typowe dla języków DDL (Data Definition Language), pozwalające definiować nowe tablice, dodawać atrybuty do istniejących tablic lub je usuwać.

SQL SQL powstał w latach 70 i nosił początkowo miano SEQUEL (Structured English QUEry Language). Jest on językiem obsługi baz danych implementowanym przez praktycznie wszystkie SZBD (częściowo ze względu na fakt, że uzyskał akceptację ANSI i ISO).

Instrukcje SQL dzieli się z reguły na 4 grupy zwane również językami:

  • Instrukcje definiowania danych DDL (Data Define Language)

Służą do tworzenia, modyfikowania i usuwania obiektów tworzących bazę danych. Obiektami tymi są tabele, perspektywy, synonimy, indeksy, schematy, katalogi. CREATE obiekt – tworzenie obiektu ALTER obiekt – modyfikowanie obiektu DROP obiekt – usuwanie obiektu

Do instrukcji definiowania danych włączona jest integralność danych, gdyż możliwe jest np. ustalenie typu danych kolumny (integer) oraz jej obowiązkowości (NULL, NOT NULL), unikalności (UNIQUE) czy zatwierdzenie jako klucza (PRIMARY KEY). Perspektywa – logiczna struktura umożliwiająca dostęp do podzbioru danych tabeli lub grupy tabel. Perspektywy budowane są na podstawie zapytań i traktowane jako tabele. W bazie składowana jest jedynie definicja perspektywy, a zatem nie jest alokowane żadne dodatkowe miejsce na dane. Synonim – alias do innego obiektu w tabeli (upraszcza dostęp do obiektu) Assercja – więzy, np. CREATE ASSERTION NrPracCheck; CHECK (NrPrac BETWEEN 100 AND 200);


  • Instrukcje manipulowania danymi DML (Data Manipulation Language)

Służą do wprowadzania, modyfikowania lub usuwania danych w bazie (rekordów) – reprezentują dynamikę tabeli INSERT, UPDATE, DELETE

  • Zapytania – uzyskiwanie informacji z tabeli

SELECT – połączenie operatorów projekcji, konkatenacji i selekcji LIKE – gdy wartość określonego pola spełnia określony wzorzec (np. zaczyna się na „A”) BETWEEN, AND, GROUP BY (zagnieżdżanie grup), ORDER BY (sortowanie wyświetlania wierszy), SUM ()

  • Instrukcje zarządzania danymi

Zapewniają kontrolę danych i funkcji SZBD. Wiążą się z przyznawaniem praw dostępu do danych i do narzędzi operowania danymi GRANT typ_uprawnień ON nazwa_tabeli TO użytkownik REVOKE – odbieranie uprawnień Stosowanie klas użytkowników (CONNECT, RESOURCE, DBA) różniących się przywilejami lub przypisywanie użytkownikom ról (zestawów przywilejów)

Personal tools