Szb pytania



Pobieranie 0.78 Mb.
Strona2/13
Data29.10.2017
Rozmiar0.78 Mb.
1   2   3   4   5   6   7   8   9   ...   13

4. Rachunek relacyjny.


Rachunek predykatów algebry relacyjnej. Zapytanie formułą logiki matematycznej. Posiada zmienne, stałe, opcje porównywania, logiczne połączenia i kwantyfikatory.

Formuły rachunku relacyjnego wyprowadzają poza zakres skończonych relacji (z powodu negacji – uzupełnienia zbioru) jak to jest w przypadku wyrażeń algebry relacyjnej. Konieczne jest ograniczenie formuł do bezpiecznych – określających zawsze skończone relacje. Wówczas rachunki relacyjne i algebra relacyjna są wzajemnie równoważne a także równoważne, jeśli chodzi o ekspresywność, językowi SQL.

Dzieli się na:


    1. Krotkowy rachunek relacyjny(TRC) zmienne przybierają  wartości będące krotkami (wektorami) wartości – rachunek krotkowy TRC. Formuła jest zdefiniowana rekurencyjnie, zaczyna się od prostych atomowych formuł(wybierając krotki z relacji lub porównując wartości) i budując większe i bardziej wyrafinowane formuły za pomocą operatorów logicznych.




    1. Dziedzinowy rachunek relacyjny(DRC zmienne przybierają wartości z dziedzin atrybutów relacji – rachunek dziedzinowy DRC



5. QBE (Query-By-Example).


Graficzny, formularzowy język formułowania instrukcji SQL - wersja tego języka jest używana w MS Access.

  1. Bazuje na DRC

  2. Wymyślony jeszcze przed GUI

  3. Bardzo dogodny przy formułowaniu prostych zapytań

  4. Mało praktyczny przy formułowaniu złożonych zapytań

Użytkownik formułuje zapytanie poprzez wypełnienie przykładowych tabel lub szkieletów tabel.
QBE wstawia nowe unikalne wartości w pustych kolumnach

Eliminacja duplikatów za pomocą opcji UNQ (unikalny).

Złączenia wykonywane poprzez powtarzanie zmiennych

Można użyć znaku negacji w kolumnie relacji. Zmienne pojawiające się w zanegowanej tabeli musza pojawić się również w nie zanegowanej.

QBE zapewnia takie funkcje jak AVG, COUNT, MIN, MAX, SUM

Żadna z nich za wyjątkiem COUNT nie zapewnia eliminacji duplikatów

Posiada również funkcje AVG.UNQ. etc. by wymusić eliminacje duplikatów

Pola warunkowe:używane do precyzowania warunków na dwóch lub więcej kolumnach e.g., _R/_A > 0.2.

Nie można wstawiać lub modyfikować krotek używając wartości z pól innej krotki tej samej tabeli


6. Niezależność danych


Programy aplikacyjne powinny być możliwie jak najbardziej niezależne od szczegółów reprezentacji danych i ich przechowywania na dysku. SZBD dostarcza abstrakcyjnej reprezentacji dla danych używanej w kodzie aplikacji bez odwoływania się do szczegółów technicznych.

Niezależność danych:



  • logiczna – użytkownicy, aplikacje są osłaniane przed zmianami w logicznej strukturze danych jak np. wyborze tabel przy pomocy których będą reprezentowane dane.

  • fizyczna – schemat logiczny osłania użytkowników przed zmianami w schemacie fizycznym gdzie faktycznie i w jaki sposób są zapisane dane na dysku, jakie są używane indeksy.

7. Trzy poziomy abstrakcji schematu bazy danych w SZBD:


  • logiczny (koncepcyjny) – opisuje przechowywane dane w kategoriach modelu danych SZBD np. w modelu relacyjnym zbiór tabel tworzących bazę danych. Na tym poziomie są definiowane niektóre obiekty używane na innych poziomach np. perspektywy, indeksy.

  • fizyczny – szczegóły jak dane (w modelu relacyjnym tabele) są zapisywane na dysku; jak są implementowane indeksy.

  • zewnętrzny - używany przez aplikację, końcowego użytkownika – np. perspektywy – wirtualne tabele.

Każda baza danych ma dokładnie jeden poziom logiczny i jeden poziom fizyczny. Natomiast może mieć wiele poziomów zewnętrznych.

Przykładowa baza danych

Students(sid: string, name: string, login: string, age: integer, gpa:real)

Courses(cid: string, cname:string, credits:integer)

Enrolled(sid:string, cid:string, grade:string)

Poziom zewnętrzny - perspektywa: Course_info(cid:string,enrollment:integer)

8. Modyfikowalne perspektywy, wyzwalacze dla procedur


Perspektywa jest modyfikowalna (ang. updatable) jeśli nie zawiera:

operatorów zbiorowych, operatora DISTINCT, funkcji grupowej lub

analitycznej, klauzul GROUP BY, ORDER BY, CONNECT BY, START WITH,

połączeń (z pewnymi wyjątkami).

• Jeśli perspektywa zawiera formuły lub pseudokolumny to polecenia

INSERT i UPDATE nie mogą dotyczyć tych pseudokolumn.

• Jeśli perspektywa zawiera połączenie to operacja DML musi dotyczyć tylko

jednej relacji bazowej a ponadto:

• Dla operacji INSERT perspektywa musi prezentować wszystkie atrybuty

klucza podstawowego i wszystkie atrybuty wymagane relacji

zachowującej klucz (key-preserved table).

• Dla operacji UPDATE wszystkie modyfikowane atrybuty muszą

pochodzić z relacji zachowującej klucz.

• Dla operacji DELETE operacja połączenia może dotyczyć tylko jednej

relacji zachowującej klucz.

Wyzwalacze dla procedur- typu INSTEAD OF

Dla perspektywy mamy możliwość zdefiniowania specjalnego rodzaju wyzwalacza. wygląda o następująco:

CREATE OR REPLACE TRIGGER nazawa_wyzwalacza

INSTEAD OF specyfikacja_instrukcji

ON perspektywa

blok_PL/SQL

specyfikacja_instrukcji to do trzech instrukcji INSERT, DELETE I UPDATE połączonych spójnikiem OR

Wyzwalacz ten jest odpalany zamiast podanej w definicji instrukcji. Daje to możliwość pełnej realizacji postulatu, aby zmian w bazie danych można było dokonywać z poziomu użytkowego - czyli perspektyw.


9. Transakcje zagnieżdżone


Zaletą użycia takich transakcji jest to, że programista może kilka transakcji zamknąć w jedną większą bez zmiany tekstu programu. Programista może większą transakcję rozbić na mniejsze bez zmiany koncepcji programu

Są następujące dwie filozofie dotyczące transakcji zagnieżdżonych:




  • Zagnieżdżona transakcja jest potwierdzana wyłącznie dla swojej macierzystej transakcji, przez co aktualizacje zrobione przez pod-transakcję stają się widoczne dla innych pod-transakcji. Zamki pod-transakcji są dziedziczone przez jej mamusię. Ostateczne potwierdzenie pod-transakcji i zwolnienie zamków następuje po potwierdzeniu transakcji stojącej najwyżej w hierarchii.




  • Każda pod-transakcja po potwierdzeniu bezpośrednio wprowadza zmiany do bazy danych. Zamki nie są dziedziczone (są zwalniane). Ale każda pod-transakcja posiada bliźniaczą pod-transakcję kompensującą, która określa co robić, jeżeli mamusia nie zostanie potwierdzona. Ta filozofia jest także określana jako saga.

//przykład:

Facet zgłasza się do biura podróży i chce jechać na wczasy na wyspy Hula Gula.

Z punktu widzenia biura podróży jest to jedna transakcja składająca się z wielu podtransakcji,

wykonywanych w większości równolegle:
Jeżeli każdą z tych pod-transakcji można byłoby po prostu zerwać, wówczas mielibyśmy zwyczajną zagnieżdżoną transakcję.

Ale w życiu tak nie ma. Załóżmy, że nie udało się zarezerwować kosza na plażę, a facet mówi: “Nie ma kosza, to nie jadę!” W tej sytuacji powstaje saga: dla potwierdzonych pod-transakcji mogą być potrzebne pod-transakcje kompensujące:


Zwrócenie biletu na pociąg (ze stratą)

Zwrócenie biletu na samolot (ze stratą)

Odwołanie rezerwacji hotelu (ze stratą)

10. Słownik systemowy (danych)


Słownik danych jest zbiorem informacji o obiektach bazy danych. Jest używany zarówno przez system zarządzania bazą danych jak i przez użytkowników. Użytkownik ma prawo tylko do odczytu informacji ze słownika danych. Słownik danych ma postać zbioru tabel i perspektyw. przykładowe perspektywy:

  • przedrostek user- informacje o wszystkich obiektach których właścicielem jest dany użytkownik, user_tables (tabs), user_tab_columns (cols), user_constraintsm user_cons_columns), user_indexes, (ind), user_ind_columns, user_synonyms (syn), user_views

  • przedrostek All dotyczy wszystkich obiektów do których użytkownik ma uprawnienia

  • przedrostek Dba - informacje o obiektach dostępnych dla administratorów systemu.

11. Organizacja bazy danych: schemat, katalog, klaster, sesja, połączenie.


Schemat

Transakcje dotyczą wykonywania ciągu instrukcji INSERT, DELETE i UPDATE. Odpowiednikiem transakcji dla instrukcji definiujących obiekty i uprawnienia jest pojęcie schematu. Schemat tworzy grupę powiązanych obiektów. Jest realizowany za pomocą instrukcji:

CREATE SCHEMA nazwa_schematu

ciąg instrukcji CREATE TABLE, CREATE VIEW i GRANT (bez rozdzielających średników);


Przy wykonywaniu instrukcji CREATE SCHEMA ciąg składowych instrukcji jest realizowany jako jedna transakcja. To znaczy, albo są wykonywane wszystkie instrukcje albo żadna. W instrukcjach składowych mogą być odwołania cykliczne REFERENCES między tabelami (tabela A zawiera odwołanie do tabeli B, a tabela B zawiera odwołanie do tabeli A) - co przy normalnej implementacji nie byłoby możliwe do zrealizowania za pomocą samych instrukcji CREATE TABLE (bez ALTER TABLE).
W Standardzie jest też instrukcja (nie ma jej w Oracle)

DROP SCHEMA nazwa_schematu CASCADE;


która usuwa wszystkie obiekty danego schematu z bazy danych.
W Standardzie nie występuje w sposób jawny pojęcie bazy danych, za to obok pojęcia schematu występuje jeszcze pojęcie katalogu jako zbioru schematów oraz klastra jako zbioru katalogów. Klaster może być traktowany jako rozproszona baza danych składająca się ze zbioru katalogów, do których użytkownik ma dostęp w ramach jednej sesji. Schemat ma jednego właściciela. W skład katalogu mogą wchodzić schematy mające różnych właścicieli. Dla każdego katalogu powinien być określony jeden schemat nazywany schematem informacyjnym pełniący rolę słownika danych dla całego katalogu.
Zewnętrzne obiekty LOB - zapisywane w pliku systemu operacyjnego - obiekt bazy danych - katalog DIRECTORY
W Oracle został wprowadzony nowy rodzaj obiektu bazodanowego katalog związany z typem danych BFILE. Mianowicie katalog jest to obiekt bazodanowy reprezentujący katalog systemu operacyjnego - w celu administrowania dostępem do obiektów bazy danych typu BFILE przechowywanych w plikach poza bazą danych. Fizyczny katalog jest tworzony pod systemem operacyjnym z uprawnieniami odczytu dla procesów Oracle. Pliki te nie mogą być ani zmieniane ani usuwane przez Oracle - tylko przez operacje na plikach w systemie plików.
Na przykład instrukcja:
CREATE DIRECTORY Videos AS '/oracle/lob/';

tworzy obiekt bazodanowy reprezentujący katalog /oracle/lob


Sesje i połączenia

Zarówno w Standardzie, jak i w Oracle istnieją możliwości zmiany ustawień dla danej sesji użytkownika.

W Standardzie z każdą sesją jest związany zbiór połączeń z różnymi bazami danych, z których tylko jedno jest aktywne. Stosowane są następujące polecenia:

uzyskiwanie nowego połączenia CONNECT TO nazwa_serwera;

zmiana istniejącego połączenia SET CONNECTION nazwa_serwera;

rozłączenie połączenia DISCONNECT nazwa_serwera;


Niektóre własności sesji mogą być zmieniane w trakcie połączenia. W Oracle zmiany wprowadza się za pomocą instrukcji ALTER SESSION, na przykład:

ALTER SESSION SET ISOLATION_LEVEL=SERIALIZABLE;


powoduje ustawienie poziomu izolacji transakcji w sesji na SERIALIZABLE.
Klaster (Oracle)

Klaster to zbiór powiązanych ze sobą tabel, które zwykle w aplikacji są przetwarzane jednocze śnie i dlatego wskazane jest aby ich wiersze były przechowywane obok siebie na dysku. Powiązanie tabel odbywa się za pomocą kolumn o wspólnych wartościach. Kolumny te tworzą indeks klastra. Najpierw tworzy się klaster, następnie tabele w klastrze i w końcu indeks klastra. Dopiero w tym momencie można rozpocząć wstawianie wierszy do tabel w klastrze.


Zanim rozpocznie się korzystać z tabel w klastrze należy explicite utworzyć indeks klastra:

W tym momencie można zacząć wstawiać dane do obu tabel znajdujących się w utworzonym klastrze.


12. Tabele tymczasowe.


Zarówno w Standardzie jak i w Oracle występuje konstrukcja tabeli tymczasowej, która jest częścią schematu bazy danych, ale której zawartość jest niszczona przy każdym zakończeniu sesji użytkownika (opcja ON COMMIT PRESERVE ROWS) lub już przy każdej operacji COMMIT (opcja ON COMMIT DELETE ROWS).
Przykład
Utwórz tabelę tymczasową

CREATE GLOBAL TEMPORARY TABLE Prac_zatrudniani_dziś

(Nr_kolejny INTEGER PRIMARY KEY,

Imię VARCHAR(40) NOT NULL,

Nazwisko VARCHAR(50) NOT NULL,

Informacja VARCHAR(1000))

ON COMMIT PRESERVE ROWS;
Tabele tymczasowe stosuje się do zapisu tymczasowych wynik ów, które następnie są używane wielokrotnie w ramach tej samej transakcji lub sesji. Wyniki mogą by ć wyliczane przez więcej niż jedną instrukcję SELECT.
Instrukcja zakładająca konto użytkownika z określeniem dwóch przestrzeni tabel: domyślnej - na dane i tymczasowej - do przeprowadzania roboczych operacji jak sortowanie:
CREATE USER Filip -- lub ALTER USER

IDENTIFIED BY xyz

DEFAULT TABLESPACE Human_resources -- domyślnie SYSTEM

TEMPORARY TABLESPACE Temp -- domyślnie SYSTEM

QUOTA 10M ON Cases_ts

QUOTA 5M ON Temp;




Pobieranie 0.78 Mb.

Share with your friends:
1   2   3   4   5   6   7   8   9   ...   13




©operacji.org 2020
wyślij wiadomość

    Strona główna