Wyklad6 2005

background image

Wyk

ład

6

background image

Aplikacja bazodanowa,

więzy spójności,

SQL*Plus

background image

Aplikacja

bazodanowa

• Tworząc aplikację, należy podjąć decyzję, jaka

jej część ma się znajdować, na:

• serwerze bazy danych (czyli po stronie

serwera),

• komputerze użytkownika (czyli po stronie

klienta).

• Dane oraz mechanizm wykonywania instrukcji

SQL – po stronie serwera.

• “Przyjazny” interfejs użytkownika – po stronie

klienta.

• Przetwarzanie danych:

• na serwerze – centralna kontrola nad

spójnością danych,

• na stacji klienckiej – precyzyjniejsza

diagnostyka i obsługa błędów.

background image

Aplikacja

bazodanowa

Elementy aplikacji umieszczane po stronie

serwera:

– deklaratywne więzy spójności,
– procedury, funkcje i pakiety,
– wyzwalacze bazy danych,
– procedury/klasy (serwlety) hipertekstowe

tworzące dynamiczne strony WWW,

– rozproszone komponenty jak klasy Javy, EJB.

background image

Rozszerzenie języka SQL o

elementy języka programowania

• SQL/PSM – Standard SQL:1999

(

SQL/PSM stands for

Structured Query Language

/Persistent

Stored Modules, and was developed by the

American National Standards Institute

(ANSI) as an extension

to

SQL

.

[1]

It was first adopted in 1996,

[2]

and it provides

procedural programmability

in addition to the querying

commands of SQL.

The SQL/PSM extension is defined by

ISO

/IEC 9075-4:2003.

SQL/PSM standardizes procedural extensions for SQL,
including flow of control, condition handling, statement
condition signals and resignals, cursors and local variables,
and assignment of expressions to variables and parameters. In
addition, SQL/PSM formalizes declaration and maintenance of
persistent

database

language routines (e.g., "stored

procedures").

)

• Oracle PL/SQL

background image

Więzy spójności

• Zadaniem więzów spójności jest

zagwarantowanie tego, aby dane w bazie
danych wiernie odzwierciedlały świat
rzeczywisty, dla którego baza danych została
zaprojektowana.

• System bazy danych ma zapewnić, aby więzy

spójności pozostawały prawdziwe przy
wszystkich operacjach wykonywanych na bazie
danych w postaci transakcji, wyzwalaczy,
ładowania danych do bazy danych czy
ich importu.

background image

Deklaratywne więzy spójności

• Więzy spójności mogą być sprawdzane zarówno po

stronie serwera jak i po stronie klienta:

• Bardziej naturalnym miejscem sprawdzania jest

serwer, który obsługuje wszystkie możliwe
aplikacje utworzone dla bazy danych. Lepiej jest
mieć jeden mechanizm gwarantujący spełnienie
więzów spójności niż wiele, potencjalnie
niespójnych.

• Podstawowe metody określania więzów spójności na

serwerze:

deklaratywne więzy spójności – w definicjach

tabel (instrukcje

CREATE TABLE i ALTER

TABLE

),

wyzwalacze bazy danych,
• osobny interfejs programistyczny API.

background image

Więzy spójności encji

Ograniczają możliwe wartości w wierszu tabeli:

Więzy klucza głównego

PRIMARY KEY

– wartości w

określonych kolumnach jednoznacznie identyfikują wiersz.
W kolumnach klucza głównego nie jest dopuszczalna
wartość NULL. Na kolumnach tworzących klucz główny
jest automatycznie zakładany indeks. W tabeli może być
tylko jeden klucz główny.

Więzy klucza jednoznacznego

UNIQUE

– wartości w

określonych kolumnach jednoznacznie identyfikują wiersz.
W kolumnach klucza jednoznacznego jest dopuszczalna
wartość NULL. Na kolumnach tworzących klucz
jednoznaczny jest automatycznie zakładany indeks. W
tabeli może być więcej niż jeden klucz jednoznaczny.

background image

Więzy spójności encji

Więzy

NOT NULL

– w kolumnie nie jest

dozwolona wartość NULL.

Więzy

CHECK

– warunek, który ma być

prawdziwy dla wszystkich wierszy w tabeli. Nie
może zawierać podzapytania ani funkcji
zmiennych w czasie jak Sysdate lub User. Może
zawierać nazwy jednej lub więcej kolumn.

background image

Więzy spójności

referencyjnej

• Zbiór wartości w kolumnach klucza obcego jest

zawsze podzbiorem zbioru wartości
odpowiadającego mu klucza głównego lub
jednoznacznego.

• Wartością klucza obcego może być NULL –

wówczas klucz obcy nie wskazuje na żaden
obiekt.

• System zapewnia, aby obiekt wskazywany przez

wartość klucza obcego zawsze istniał, przy
wszystkich możliwych operacjach na tabelach, w
których biorą udział
klucze główne, jednoznaczne i obce.

background image

Klucze obce

• Przy definiowaniu klucza obcego nie można się

odwoływać ani do synonimu tabeli ani do tabeli
znajdującej się w innej (odległej) bazie danych.

• Na kolumnach klucza obcego nie jest

automatycznie tworzony indeks.

• Aby przyśpieszyć wyszukiwanie i złączanie,

projektant bazy danych może sam zaplanować
założenie indeksu na kluczu obcym używając
instrukcji

CREATE INDEX

.

background image

Składnia więzów w-linii

[NOT] NULL
{UNIQUE|PRIMARY KEY}
CHECK (warunek)
REFERENCES tabela[(kolumna)][ON DELETE

CASCADE]

REFERENCES tabela[(kolumna)][ON DELETE

SET NULL]

background image

Składnia więzów poza-

linią

{UNIQUE|PRIMARY KEY} (kolumna,…)
CHECK (warunek)
FOREIGN KEY (kolumna,…) REFERENCES

tabela(kolumna,…)[ON DELETE [CASCADE|SET
NULL]]

CONSTRAINT nazwa_więzów

• Nadanie nazwy, przy pomocy której można się do

nich odwoływać, np. włączając je, wyłączając lub
usuwając.

background image

CREATE TABLE Pożyczki(
Num_konta NUMBER(6,0),
Num_pożyczki NUMBER(6,0),
Typ_pożyczki VARCHAR2(8)

CONSTRAINT ck_Typ_poż

CHECK (Typ_pożyczki IN ('AUTO', 'DOM',
'OSOBISTE')),
Wielkość NUMBER(8,0)

CONSTRAINT nn_Wielk

NOT NULL,

Data_pożyczki DATE

DEFAULT Sysdate

,

Zaakceptowana VARCHAR2(25)

CONSTRAINT ko_Zaakcept

REFERENCES Kierownicy
(Nazwisko_kier),

CONSTRAINT kg_Poż

PRIMARY KEY(Num_konta,
Num_pożyczki),

CONSTRAINT ko_Num_konta

FOREIGN KEY (Num_konta)
REFERENCES
Klienci
(Num_konta)
);

Przykład

background image

DEFAULT

DEFAULT Sysdate

• Ustala datę pożyczki na dzień bieżący, czyli

dzień wprowadzania informacji o pożyczce do
bazy danych.

• W specyfikacji wartości domyślnej mogą

występować
stałe i funkcje SQL także User, Sysdate.

• Nie mogą występować ani nazwy kolumn ani

funkcje PL/SQL ani sekwencje.

background image

CHECK

• W przypadku warunku występującego w

CHECK akceptowane są wiersze, których
wartością jest

TRUE

lub

NULL

System nie pozwala, aby w tabeli pojawił się

wiersz dający
wartość FALSE (sygnalizowany jest błąd).

background image

Akcje referencyjne przy DELETE

• Domyślnie ustawiona jest opcja

RESTRICT

. Jeśli

ma być usunięty wiersz tabeli nadrzędnej, do
którego są odwołania przez klucz obcy z tabeli
podrzędnej, jest błąd i DELETE nie zostaje
wykonane.

ON DELETE CASCADE

– razem z wierszem tabeli

nadrzędnej zostają usunięte wszystkie wiersze
tabeli podrzędnej, w których wartości klucza
obcego wskazują na usuwany wiersz,

• pod warunkiem, że usunięcie tych wierszy jest

możliwe bez naruszenia innych więzów
referencyjnych.

ON DELETE SET NULL

– przy usuwaniu wiersza,

do którego są odwołania przez wartości kluczy
obcych, następuje wstawienie pseudo-wartości
NULL jako wartości klucza obcego.

background image

Inne akcje referencyjne

Standardu (nie realizowane przez

Oracle)

ON DELETE SET DEFAULT

oznaczająca

wstawienie wartości domyślnej jako wartości
klucza obcego;

ON UPDATE [CASCADE|SET NULL|SET

DEFAULT]

• W Oracle można je zaprogramować za pomocą

wyzwalaczy bazy danych, pod warunkiem, że
nie zdefiniujemy deklaratywnych więzów
klucza obcego.

background image

CHECK

• Gdy klucz obcy składa się z kilku kolumn i w

jednej z nich jest wartość NULL, wtedy system
akceptuje taką wartość wiersza bez żadnych
dodatkowych sprawdzeń.

• Gdybyśmy chcieli realizować semantykę

polegającą na tym, że albo wszystkie wartości
klucza obcego są NULL albo żadna z nich nie
jest, wówczas należałoby zagwarantować to za
pomocą odpowiedniego warunku CHECK np. :

CONSTRAINT A_B_ck CHECK (((A IS NOT

NULL) AND (B IS NOT NULL)) OR((A IS NULL)
AND (B IS NULL)))

background image

Operacje na więzach

ALTER TABLE Emp
ADD (CONSTRAINT Sal_ck CHECK

(sal >500));

 
ALTER TABLE Emp
ENABLE CONSTRAINT Sal_ck;
 
ALTER TABLE Emp
DISABLE CONSTRAINT Sal_ck; 

ALTER TABLE emp
DROP CONSTRAINT Sal_ck;

Więzy klucza głównego
i jednoznacznego
można włączać,
wyłączać i usuwać
używając ich
naturalnych nazw
PRIMARY KEY i
UNIQUE.

background image

SQL*Plus – prosty interfejs do

bazy danych

SET AUTOCOMMIT ON

– wykonywanie operacji

zatwierdzania COMMIT po każdej zmianie danych
(a nie tylko na koniec pomyślnej transakcji);

HOST polecenie

– wykonanie polecenia systemu

operacyjnego;

EXIT

– zakończenie sesji SQL*Plus – wylogowanie

się z Oracle;

DESCRIBE nazwa

– wyświetlenie schematu

obiektu (tabeli, perspektywy, procedury, funkcji) o
podanej nazwie;

EXECUTE nazwa_procedury (...)

– wykonanie

procedury.

background image

Pliki

w SQL*Plus

START

nazwa_pliku

– wykonaj skrypt poleceń SQL i

SQL*Plus zapisany w pliku o podanej nazwie
(zamiast START można użyć@);

ED

nazwa_pliku

– wywołaj standardowy edytor (np.

notepad albo vim);

SPOOL

nazwa_pliku

– zapisuj kolejne polecenia i

ich wyniki w pliku o podanej nazwie;

SPOOL OFF

– zamknij poprzednio otwarty przez

SPOOL plik.

background image

Formatowanie

w SQL*Plus

COLUMN

nazwa

FORMAT

An

– szerokość

wyświetlania kolumny napisowej o podanej nazwie;

COLUMN

nazwa

FORMAT 99999

– szerokość

wyświetlania kolumny liczbowej o podanej nazwie (9
reprezentuje jedną cyfrę);

SET PAGESIZE

n

– ustalenie długości jednej strony

na n linii;

SET LINESIZE

n

– ustalenie maksymalnej liczby

znaków w linii;

SET PAUSE ON

– zatrzymywanie przewijania

wyświetlania wyników po wyświetleniu zawartości
ekranu;

background image

Inne zmienne systemowe w

SQL*Plus

HEADING ON

– wyświetlanie nagłówków kolumn w

tabelach zawierających wyniki zapytań;

NULL tekst

– ustalanie tekstu wyświetlanego

zamiast NULL;

SQLPROMPT

tekst

– ustalenie znaku zachęty;

TIME ON

– włączanie wyświetlania bieżącej godziny

przed znakiem zachęty;

TIMING ON

– włączanie wyświetlania czasu

wykonania instrukcji SQL;

background image

Zmienne w SQL*Plus

VARIABLE X NUMBER

(lub

CHAR(n)

lub

VARCHAR2(n)

, (n>0) – deklaracja zmiennej

wiązania;

EXECUTE :X := wyrażenie;

– przypisz na zmienną

wiązania

:X

wartość wyrażenia. Po ustaleniu

wartości można zmienne wiązania poprzedzone
dwukropkiem używać w instrukcjach SQL i PL/SQL.

PRINT X

– wypisz wartość zmiennej wiązania X;

ACCEPT Zmienna PROMPT 'Podaj wartość

zmiennej: '

– utworzenie zmiennej podstawienia i

wczytanie na nią wartości. Następnie można
zmienne podstawienia poprzedzone znakiem &
używać w instrukcjach SQL i PL/SQL.


Document Outline


Wyszukiwarka

Podobne podstrony:
Wyklad3 2005
Wyklad2 2005
Stosowana wyklad 6 2005
C Wykład V 2005 2006 s
Farmakogenetyka wyklad 2005 ze srodowiskiem i chronofarmakoterapia 2
Wyklad7 2005
Wyklad1 2005
Integracja Europejska - Wykłady - 2005 - Mucha-Leszko (44), Nowy folder
Analiza Finansowa - wyklady 2005, FIR UE Katowice, SEMESTR V, Analiza finansowa, Analiza finansowa1,
Wyklad5 2005
Pedagogika specjalna - wykłady 2005-2006, niepełnosprawność intelektualna
rmf wykład2 (9 3 2005) MNZMYDR5RVWYSYOFGM4WYTKCOAN52ECPQCE2JJI
Wyklad4 2005
POSTĘPOWANIE KARNE – wykład 2005 BULSIEWICZ, III rok, postępowanie karne
Wyklad8 2005

więcej podobnych podstron