Professional Documents
Culture Documents
Wydział Matematyczno-Przyrodniczy
Szkoła Nauk Ścisłych
Uniwersytet Kardynała Stefana Wyszyńskiego
Część I
Plan prezentacji
1 Wprowadzenie
Bazy danych
Baza Oracle
Podstawy Administracji
2 SQL*Plus
Łączenie z bazą
Wykonywanie poleceń
3 Język SQL
Polecenie wyboru SELECT
Wybór wierszy WHERE
Sortowanie ORDER BY
Baza danych
Architektura 2-warstwowa
Architektura 3-warstwowa
Strukturalny
Relacyjne
Obiektowe
Relacyjno-obiektowe
Funkcjonalny
OLTP On Line Transaction Processing
OLAP On Line Analytical Processing
Liczba węzłów
Bazy rozproszone
Bazy scentralizowane
ρ ⊂ X1 × X2 × . . . × Xn
Tabela
Operacje na tabelach
Sumowanie
Odejmowanie
Przecinanie
Selekcja kolumn
Selekcja wierszy
Łączenie
Example
Id Imię Nazwisko Id Płaca
1 Grzegorz Schytyna 1 20000
2 Donald Tesk 2 15000
3 Lew Rewin 3 2500
4 Piotr Kaczyński 4 500
RDBMS Oracle
Kopie zapasowe
Program SQL*Plus
Podłączanie do bazy
Polecenie connect
Należy podać użytkownika (user) i hasło (password)
Wyjście poleceniem exit
Standardowy użytkownik i hasło w laboratorium
Użytkownik: student
Hasło: bd
Podłączanie bez interaktywnego logowania
connect user/password
Polecenia SQL
Polecenia w języku zapytań SQL lub administracyjne
Każde polecenie musi być zakończone ”;”
Brak średnika przenosi do kolejnej linii
Example
SQL> s e l e c t ∗ from a s d f g
2 where k = 2
3 ;
Ćwiczenie
Podłącz się do bazy danych i wykonaj zapytanie
s e l e c t t a b l e n a m e from a l l t a b l e s ;
Wykonywanie skryptów
Ćwiczenie
Wykonaj skrypt sql createdb.sql
Język SQL
Structured Query Language
Język deklaratywny a nie proceduralny
Mówimy co chcemy zobaczyć, a nie jak
Miał być bliski językowi naturalnemu
Czasami rozróżnia, czasami nie rozróżnia wielkich liter (zależy
od RDBMS)
Polecenia dzielimy na trzy grupy
DML Data Modification Language - polecenia
modyfikujące lub wyszukujące dane (SELECT,
INSERT, UPDATE, DELETE)
DDL Data Definition Language - polecenia definiujące
dane (CREATE, DROP, ALTER)
DCL Data Control Language - polecenia określające
dostęp do danych (GRANT, REVOKE)
Piotr Kaczyński Bazy danych
Wprowadzenie Polecenie wyboru SELECT
SQL*Plus Wybór wierszy WHERE
Język SQL Sortowanie ORDER BY
Example
SELECT p e n s j a FROM p r a c o w n i c y ;
GRANT c o n n e c t TO p k a c z y n s k i ;
CREATE TABLE s t u d e n c i ( I m i e VARCHAR( 2 0 ) , N a z w i s k o VARCHAR( 3 0 ) ) ;
Polecenie SELECT
Podstawowe polecenie SQL, wybiera dane z tabeli
Możliwe określenie kolumn, które zostaną wybrane
Wynikiem jest tabela
Składnia
SELECT kolumna1, kolumna2, ... FROM tabela
Wybranie wszystkich kolumn: znak *
Wybranie tylko różnych wierszy: klauzula DISTINCT
Zmiana nazw kolumn w tabeli wynikowej (aliasy)
SELECT kol1 alias1, kol2 alias2 , ... FROM tabela
Example
SELECT ∗ FROM p r a c o w n i c y ;
SELECT n a z w i s k o , p l a c a FROM p r a c o w n i c y ;
SELECT n a z w i s k o surname , p l a c a s a l a r y FROM p r a c o w n i c y ;
SELECT DISTINCT ∗ FROM s t u d e n c i ;
Ćwiczenie
Wybierz wszystkie dane z tabeli studenci
Wybierz tylko imiona z tabeli studenci
Wybierz wszystkie dane z tabeli studenci tak, aby kolumna z
imieniem nazywała się ”name”
Ile różnych imion jest wśród studentów w tabeli studenci?
Klauzula WHERE
Ćwiczenie
Wybierz wszystkich studentów o imieniu Piotr
Wybierz wszystkich studentów, których imię zaczyna się od
litery P lub dalszej (w alfabecie)
Ile imion wśród studentów zaczyna się od litery ’P’ lub dalszej
(w alfabecie)
Ilu jest studentów, których nazwisko zaczyna się na ”B” lub
”D”?
Piotr Kaczyński Bazy danych
Wprowadzenie Polecenie wyboru SELECT
SQL*Plus Wybór wierszy WHERE
Język SQL Sortowanie ORDER BY
Klauzula ORDER BY
Sortuje wiersze według kolumn
Dodawana na koniec polecenia SELECT (już po WHERE, o ile
jest)
Kolejne kolumny wymieniane w liście oddzielanej przecinkami
Kolejność kolumn dyktuje priorytet sortowania
Najpierw sortuj po x potem po y
Po każdej kolumnie można dodać ASCENDING (rosnąco) lub
DESCENDING (malejąco)
Example
SELECT ∗ FROM p r a c o w n i c y ORDER BY n a z w i s k o , i m i e ;
SELECT i m i e FROM p r a c o w n i c y ORDER BY n a z w i s k o ;
SELECT i m i e name FROM p r a c o w n i c y ORDER BY name ;
SELECT ∗ FROM p r a c o w n i c y WHERE i m i e = ’ P i o t r ’ ORDER BY n a z w i s k o ;
Ćwiczenie
Wypisz listę studentów posortowaną po nazwiskach i imionach
Wypisz listę studentów któych nazwiska zaczynają się na ’A’
posortowaną po imionach
Example
SELECT ∗ FROM STUDENCI WHERE Imie LIKE ’A\%’ORDER BY Nazwisko;
Część II
Funkcje i agregacje
Plan prezentacji
4 Funkcje
Funkcje znakowe
Funkcje liczbowe
Funkcje czasu
5 Konwersja typów
6 Agregacje
Funkcje agregujące
Podgrupy
Filtrowanie podgrup
Funkcje
Funkcje znakowe
Konkatenacja ciągów - operator ||
Example
SELECT I m i e | | N a z w i s k o t x t FROM s t u d e n c i ;
Ćwiczenia
1 Wypisz imiona i nazwiska studentów tak, aby pierwsza litera
Funkcje liczbowe
Można stosować operatory arytmetyczne
abs - wartość bezwzględna
ceil - sufit
floor - podłoga
mod(m,n) - reszta z dzielenia m przez n
power(m,n) - mn
round(m,n) - zaokrągla m do n miejsc po przecinku
trunc(m,n) - obcina m do n miejsc po przecinku
sign - zwraca znak liczy (−1,0 lub 1)
√
sqrt(n) - n
Example
SELECT r o u n d ( 2 ∗ s q r t ( l e n g t h ( N a z w i s k o ) ) +
3∗ s i g n ( l e n g t h ( I m i e ) ) , 2 ) l i c z b a FROM S t u d e n c i ;
Ćwiczenia
1 Wypisz wszystkich studentów, którzy mają ocenę 4 lub 4.5
Czas
Example
09/10/29 21:57:01,552000 +01:00
Odczyt czasu
Example
SELECT c u r r e n t d a t e , c u r r e n t t i m e s t a m p FROM S t u d e n c i ;
Znaczniki czasu
Literały czasowe
Poprzedzone DATE i podawane jako ciąg znaków
Poprzedzone TIMESTAMP i podawane jako ciąg znaków
Example
SELECT I m i e , N a z w i s k o FROM s t u d e n c i WHERE
d a t a u r o d z e n i a >= DATE ’ 1989−01−01 ’ ;
SELECT I m i e , N a z w i s k o FROM s t u d e n c i WHERE
o s t a t n i e l o g o w a n i e >= TIMESTAMP ’ 2009−10−29 2 3 : 0 0 : 0 0 ’ ;
Przedziały czasu
Example
INTERVAL ’ 25 ’ YEAR
INTERVAL ’ 19−3 ’ YEAR TO MONTH
INTERVAL ’ 1 2 : 1 6 ’ DAY TO MINUTE
INTERVAL ’ 2 3 : 1 2 : 1 2 . 1 5 ’ HOUR TO SECOND
Działania na czasie
Example
SELECT ( c u r r e n t t i m e s t a m p − INTERVAL ’ 168 ’ HOUR)
FROM S t u d e n c i ;
Example
SELECT e x t r a c t (DAY FROM c u r r e n t t i m e s t a m p ) FROM S t u d e n c i ;
SELECT ( e x t r a c t (YEAR FROM c u r r e n t t i m e s t a m p ) +
e x t r a c t (MONTH FROM c u r r e n t t i m e s t a m p ) +
e x t r a c t (DAY FROM c u r r e n t t i m e s t a m p ) ) AS n r
FROM s t u d e n c i ;
Ćwiczenia
1 Wypisz wszystkich studentów, którzy urodzili się przed
Konwersja typów
Example
SELECT c a s t ( ’ 2009−01−01 ’ AS DATE) d a t a FROM S t u d e n c i ;
SELECT c a s t ( e x t r a c t (YEAR FROM c u r r e n t d a t e ) | |
e x t r a c t (MONTH FROM c u r r e n t d a t e ) | |
e x t r a c t (DAY FROM c u r r e n t d a t e ) AS NUMBER) l i c z b a
FROM S t u d e n c i ;
Wyrażenie CASE
Składnia
CASE w y r a z e n i e
WHEN x1 THEN y1
WHEN x2 THEN y2
[ ELSE y3 ]
END
Wyrażenie CASE
Example
SELECT CASE s u b s t r ( I m i e , 1 , 1 )
WHEN ’A ’ THEN ’OK! ’
WHEN ’B ’ THEN ’NOT OK ’
ELSE ’MAYBE OK ’
END FROM S t u d e n c i ;
SELECT CASE s u b s t r ( I m i e , 1 , 1 )
WHEN ’A ’ THEN c u r r e n t d a t e
WHEN ’B ’ THEN ’AHA ’
END FROM S t u d e n c i ;
Operatory zbiorowe
Tabele są relacjami a relacje zbiorami
Można wykonać operacje teoriomnogościowe
UNION - Suma zbiorów z eliminacją powtórzeń
UNION ALL - Suma wszystkiego
MINUS - Różnica zbiorów
INTERSECT - Przecięcie zbiorów
Operacje muszą być wykonywane na tabelach o tej samej
liczbie kolumn i takich samych typów
Example
SELECT ∗ FROM s t u d e n c i WHERE I m i e LIKE ’A% ’
UNION
SELECT ∗ FROM s t u d e n c i WHERE I m i e LIKE ’B% ’ ;
Ćwiczenia
1 Wypisz studentów, których imie zaczyna się na ’A’, ale druga
Agregacje
Służą do wyliczania „statystyk”
Grupują wiersze według zadanej kolumny (kategorii)
Dostępne funkcje agregujące
COUNT(*) - liczba wierszy
COUNT(distinct wyr) liczba niepustych wystąpień wyr
MAX, MIN, AVG - wartość maksymalna minimalna, średnia
SUM - suma elementów
Example
SELECT COUNT( ∗ ) FROM S t u d e n c i ;
Grupy i podgrupy
Można agregować dla więcej niż jednej grupy
Tworzona jest „hierarchia” ze względu na kolumny
Klauzula GROUP BY
Każda kolumna, która znajdzie się w wyrażeniu SELECT musi
albo być wewnątrz funkcji agregującej albo w klauzuli GROUP
BY
Example
SELECT I m i e , AVG( Ocena ) FROM S t u d e n c i
GROUP BY( I m i e ) ;
Filtrowanie grup
Example
SELECT I m i e , COUNT( ∗ ) FROM S t u d e n c i
WHERE COUNT( ∗ ) >= 3 GROUP BY I m i e ; −− Błąd ! !
Ćwiczenia
Ćwiczenia
1 Wyświetl maksymalną ocenę uzyskaną przez studentów,
Część III
Złączenia
Plan prezentacji
7 Złączenia
Złączenia wewnętrzne
Połączenia zewnętrzne
Wiele tabel
Złączenia tabel
Iloczyn kartezjański
Tabele są relacjami
Relacje są zbiorami
Można wykonać iloczyn kartezjański zbiorów
Każdy wiersz jednej tabeli łączony jest z każdym wierszem
drugiej
Można wykonać iloczyn więcej niż dwóch tabel
Wynik może mieć bardzo dużo wierszy
Łączone tabele wymieniane po przecinku
Example
SELECT ∗ FROM S t u d e n c i , P r z e d m i o t y ;
Aliasy tabel
Połączenia równościowe
Tabele najczęściej łączy się „po kolumnie”
Jedna z tabel zawiera informacje uzupełniające do infromacji
w drugiej
Wartości w danej kolumnie muszą być równe
Klauzula JOIN tabela ON warunek złączenia
W obu tabelach muszą istnieć odpowiadające wiersze
Jeśli możliwych połączeń jest wiele, zwielokrotnione zostaną
wiersze w tabeli wynikowej.
Warunek złączenia podobny ja w klauzuli WHERE)
Połączenia naturalne
Ćwiczenia
Połączenia zewnętrzne
Połączenia wewnętrzne
Pasujące wiersze muszą istenieć w obu tabelach
Połączenia zewnętrzne
W jednej z tabel nie musi istnieć wiersz pasujący
Odpowiadają zapytaniom typu
Wypisz dane o pracownikach i ich żonach (o ile mają żonę)
Klauzule
LEFT JOIN
RIGHT JOIN
FULL JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
Ćwiczenia
Część IV
Podzapytania
Plan prezentacji
8 Podzapytania
Podzapytania jako źródło zapytań
Podzapytania filtrujące
Podzapytania skorelowane
Podzapytania
Podzapytania wierszowe
Zwracają pojedynczy wiersz (może być klika kolumn)
Możliwe do użycia w klauzuli WHERE
Jako wrunek z operatorem logicznym (=, <= itd)
Warunek = i <> może być używany do wielu kolumn
Liczy się kolejność kolumn w podzapytaniu
Można również użyć bezpośrednio w klauzuli SELECT
Definiuje wartość kolumny
Example
SELECT I m i e , N a z w i s k o FROM S t u d e n c i
NATURAL JOIN Oceny
WHERE Ocena = ( SELECT MIN( Ocena )
FROM Oceny
NATURAL JOIN S t u d e n c i
WHERE I d P r z e d m i o t u = 1 )
AND I d P r z e d m i o t u = 1 ;
Example
Wybierz wszystkich studentów, których średnia ocen jest mniejsza
niż średnia ocen wszystkich studentów ze wszystkich przedmiotów.
SELECT I m i e , Nazwisko , AVG( Ocena )
FROM S t u d e n c i
NATURAL JOIN Oceny
GROUP BY I m i e , N a z w i s k o
HAVING AVG( Ocena ) < (SELECT AVG( Ocena ) FROM S t u d e n c i
NATURAL JOIN Oceny ) ;
Podzapytania tablicowe
Operator ANY
Warunek jest spełniony jeśli zachodzi dla dowolnego wiersza
podzapytania
Operator ALL
Warunek jest spełniony jeśli zachodzi dla każdego wiersza
podzapytania
Jeśli operatorem porównującym jest = to porównania można
robić dla wielu kolumn.
Zagnieżdżanie podzapytań
Każde podzapytanie może mieć podzapytania
Zagnieżdżeń może być nieskończenie wiele
Uwaga na wydajność takich zapytań!
Example
Wypisz tych studentów, którzy mają pożyczoną książkę o tytule,
który zaczyna się na tą samą literę, co książka wypożyczona przez
studenta o największym numerze indeksu wśród studentów
wypożyczających książki.
SELECT I m i e , N a z w i s k o FROM S t u d e n c i
JOIN K s i a z k i ON S t u d e n c i . I n d e k s = K s i a z k i . W y p o z y c z a j a c y
WHERE s u b s t r ( T y t u l , 1 , 1 ) =
(SELECT s u b s t r ( T y t u l , 1 , 1 ) FROM K s i a z k i
WHERE W y p o z y c z a j a c y =
(SELECT MAX( W y p o z y c z a j a c y ) FROM K s i a z k i ) ) ;
Ćwiczenia
Podzapytania skorelowane
Example
Wypisz studentów (imię i nazwisko), którzy mają wypożyczoną
książkę o tytule, który zaczyna się na literę większą niż pierwsza
litera tytułu dowolnej książki autora, którego nazwisko zaczyna się
na tą samą literę co nazwisko studenta.
SELECT I m i e , N a z w i s k o FROM S t u d e n c i s
JOIN K s i a z k i ON s . I n d e k s = K s i a z k i . W y p o z y c z a j a c y
WHERE s u b s t r ( T y t u l , 1 , 1 ) > ALL (SELECT s u b s t r ( T y t u l , 1 , 1 )
FROM K s i a z k i
WHERE s u b s t r ( Autor , 1 , 1 ) =
s u b s t r ( s . Imie , 1 , 1 ) ) ;
Operator EXISTS
Example (Exists)
Wypisz wszystkich studentów, dla których da się znaleźć innego
studenta o nazwisku zaczynającym się na te same trzy pierwsze
litery.
SELECT I m i e , N a z w i s k o FROM S t u d e n c i s
WHERE EXISTS ( SELECT ∗ FROM S t u d e n c i
WHERE s u b s t r ( Nazwisko , 1 , 3 ) =
s u b s t r ( s . Nazwisko , 1 , 3 )
AND s . I n d e k s <> I n d e k s ) ;
Ćwiczenia
Część V
Manipulacja danymi
Plan prezentacji
9 Definiowanie tabel
Typy danych
Polecenia DDL
10 Modyfikacja danych
Wstawianie
Zmiana
Usuwanie
Typy liczbowe
Example
Liczba 12345678.89
NUMBER → 12345678.9
NUMBER(5) → nie wyświetli się (za mała precyzja)
NUMBER(9,1) → 12345678.9
NUMBER(8,1) → nie wyświetli się (za mała precyzja)
NUMBER(7,-1) → 123456780
NUMBER(7,-2) → 123456700
Typy znakowe
Daty i czas
Binarne
Wartości puste
Example
SELECT ∗ FROM S t u d e n c i WHERE P e s e l I S NOT NULL ;
Tworzenie tabeli
Example
CREATE TABLE S t u d e n c i ( I m i e VARCHAR2( 3 0 ) ,
N a z w i s k o VARCHAR2( 3 0 ) ,
Ocena NUMBER( 2 , 1 ) ) ;
CREATE TABLE S t u d e n c i ( I m i e VARCHAR2( 3 0 ) ,
N a z w i s k o VARCHAR2( 3 0 ) ,
Ocena NUMBER( 2 , 1 ) DEFAULT 2 ) ;
Ograniczenia
Example
CREATE TABLE S t u d e n c i ( I m i e VARCHAR2( 3 0 ) NOT NULL ,
N a z w i s k o VARCHAR2( 3 0 ) NOT NULL ,
Ocena NUMBER( 1 , 1 )
CHECK ( Ocena >= 2 AND Ocena <= 5 ) ;
CREATE TABLE P r a c a (Od DATE NOT NULL ,
Do DATE NOT NULL ,
CHECK (Od <= Do ) ;
Modyfikacja tabeli
Example
ALTER TABLE DROP COLUMN Ocena ;
ALTER TABLE S t u d e n c i ADD P e s e l NUMBER( 1 1 ) ;
ALTER TABLE S t u d e n c i MODIFY Ocena NUMBER( 4 , 2 ) ;
ALTER TABLE S t u d e n c i RENAME TO W y n i k i ;
ALTER TABLE S t u d e n c i RENAME COLUMN Ocena RENAME TO Wynik ;
Usuwanie tabeli
Example
DROP TABLE S t u d e n c i ;
Transakcyjność
Wstawianie proste
Wiersz wstawiany jest przez
INSERT INTO nazwa tabeli VALUES(wartości)
Wartości podawane są w kolejności takiej, jak definicja
kolumny
Można podać do których kolumn i w jakiej kolejności
INSERT INTO nazwa tabeli(kolumny) VALUES(wartości)
Nie trzeba podawać wszystkich kolumn (wtedy wstawione
zostaną NULLe)
Example
CREATE TABLE S t u d e n c i ( I m i e VARCHAR2( 3 0 ) ,
N a z w i s k o VARCHAR2( 3 0 ) ,
Ocena NUMBER( 2 , 1 ) ) ;
INSERT INTO S t u d e n c i VALUES( ’ P i o t r ’ , ’ K a c z y n s k i ’ , 5 ) ;
INSERT INTO S t u d e n c i ( Nazwisko , I m i e )
VALUES( ’ P i o t r ’ , ’ K a c z y n s k i ’ ) ;
Wstawianie z zapytania
Example
INSERT INTO Oceny SELECT ∗ FROM Oceny ;
INSERT INTO Oceny ( Ocena ) SELECT Ocena ∗2 FROM Oceny ;
CREATE TABLE W y n i k i AS SELECT ∗ From Oceny ;
CREATE TABLE W y n i k i ( N a z w i s k o VARCHAR2( 3 0 ) ,
Wynik NUMBER( 3 , 1 ) )
AS SELECT Nazwisko , Ocena ∗3 FROM Oceny ;
Zmiana wierszy
Example
UPDATE Oceny SET Ocena = 2 ;
UPDATE Oceny SET Ocena = 2∗ Ocena ;
UPDATE Oceny SET Ocena = 2 ,
Uwagi = ’ I m i e na A ’
WHERE I m i e LIKE ’A% ’ ;
UPDATE Oceny o SET Ocena = ( SELECT AVG( Ocena ) FROM Oceny )
WHERE EXISTS (SELECT Ocena FROM Oceny
WHERE Ocena > o . Ocena ) ;
Usuwanie proste
Example
DELETE FROM S t u d e n c i ;
DELETE FROM S t u d e n c i WHERE I m i e LIKE ’A% ’ ;
DELETE FROM S t u d e n c i s
WHERE s . o c e n a <
SELECT AVG( Ocena ) FROM S t u d e n c i ;
Ćwiczenia
Ćwiczenia
Napisz skrypt, który
1 Utworzy tabelę Pracownicy z kolumnami Imie, Nazwisko,
PESEL, Pensja
2 Wstawi 5 pracowników do tej tabeli (wymyśl dane)
3 Doda kolumnę Kod o takim samym rozmiarze jak PESEL
4 Zakuduje numery PESEL dodając do każdej cyfry 2 (modulo
10) i wstawi wartości do kolumny Kod
5 Usunie wszystkich pracowników, których Kod PESEL kończy
się na 0
6 Podwyższy pozostałym pracownikom pensję o 20%
7 Podwyższy o 10% pensję tym pracownikom, którzy mają
pensję większą niż średnia pensja wszystkich pracowników
Piotr Kaczyński Bazy danych
Model pojęciowy
Model logiczny
Normalizacja
Część VI
Plan prezentacji
11 Model pojęciowy
Diagramy związków encji
Związki
Identyfikacja encji
12 Model logiczny
Przekształcanie modelu pojęciowego
Ograniczenia integralności
Indeksy
13 Normalizacja
Zależności
Postacie normalne
Model konceptualny
Precyzyjne określenie zakresu projektu
Określenie wymagań użytkownika
Modelowanie informacji
Niezbędne dla działania systemu
Niezależne od implementacji
Według określonego modelu danych
Kierujemy się potrzebami użytkownika
Odpowiada na pytanie co? a nie jak?
Encje
Atrybuty
Określają cechy rzeczy, osób itp.
Identyfikują
Opisują
Podają ilości
Klasyfikują
Są typu prostego (atomowego, nie są tablicami)
Muszą mieć precyzyjne nazwy
Rodzaje atrybutów
Należące do unikalnego identyfikatora (znak #)
Obowiązkowe (znak *)
Opcjonalne (znak o)
Związki
Transferowalność i rekurencyjność
Związek tranferowalny
Tą samą instancję związku można przenieść na inne encje
Example
Relacja Producent → Towar nietransferowalna
Relacja Towar → Właściciel transferowalna
Związek rekurencyjny
Jedna instancja encji jest w relacji z inną instancją tej samej
encji
Drzewa, grafy
Example
Każdy pracownik ma szefa, który również jest pracownikiem
Relacja Pracownik → Pracownik
Poprawność związków
Związki muszą sensownie odzwierciedlać rzeczywistość
Związki 1-1 są podejrzane
Związki obustronnie obowiązkowe są podejrzane (zbytnie
obostrzenie)
Związki rekurencyjne muszą być obustronnie opcjonalne
Rozbicie związków n-m (wiele do wielu)
Związki rekurencyjne
Drzewa
Związek obustronnie opcjonalny
Modelują hierarchię
Grafy
Rekurencyjny związek n-m
Ostatecznie - dwa związki 1-n
Identyfikacja encji
Każda encja powinna mieć unikalny identyfikator
Możliwe składniki identyfikatora
Atrybuty
Związki
Atrybuty i związki
Example
Pozycję faktury identyfikuje numer pozycji i związek z odpowiednią
fakturą.
Pierwotny unikalny identyfikator
Identyfikuje wszystkie wystąpienia encji
Wszystkie składniki obowiązkowe
Powinien być niezmienny, łatwy do wyznaczenia, czytelny,
słabo złożony (mała ilość znaków)
Wtórny unikalny identyfikator
Do celów kontrolnych
Pola mogą być opcjonalne
Piotr Kaczyński Bazy danych
Model pojęciowy Przekształcanie modelu pojęciowego
Model logiczny Ograniczenia integralności
Normalizacja Indeksy
Zaprojektowanie
Struktur dcanych
Ograniczeń integralności
Obudowy proceduralnej (wyzwalacze)
Perspektyw
Rozwiązań dla przetwarzania rozproszonego
Brany pod uwagę konkretny SZBD
Projekt logiczny jest podstawą do stworzenia fizycznej bazy
danych
Encje → tabele
Nazwy tabel w liczbie mnogiej
Bez znaków narodowych etc.
Atrybuty → kolumny
Typy dostępne w SZRBD
Obowiązkowość → NOT NULL
Pierwotne identyfikatory unikalne → klucze główne
Wtórne identyfikatory unikalne → ograniczenia unikalności
Związki → klucze obce
Obowiązkowość → NOT NULL
Nietransferowalność → niezmienność klucza
Ograniczenia integralności
Deklaratywne
Wykonywane przezn serwer bd
Dotyczą wszystkich operacji
Dotyczą wszystkich wierszy
Wykonywane bezbłędnie i zoptymalizowane
Proceduralne
Wykonywane przez serwer (dla wszystkich operacji) lub
aplikację
Dotyczą tylko zmienianych danych
Kod może zawierać błędy (pisane przez developerów)
Realizowane przez wyzwalacze (tzw. triggers)
Należy dążyć do ograniczeń deklaratywnych
Wyzwalacze
Ograniczenia deklaratywne
Klucz główny
Funkcja: jednoznaczna identyfikacja wiersza
Tworzenie ograniczeniem deklaratywnym PRIMARY KEY
Dla idetyfikatora z samych atrybutów: odpowiednie kolumny
Dla identyfikatora z atrybutów i związków: kolumny atrybutów
i kolumny kluczy obcych
Sztuczne klucze główne
Klucz numeryczny
Generowane z sekwencji
Klucz główny tworzy indeks
Example
CREATE TABLE STUDENCI ( I m i e VARCHAR( 3 0 ) ,
N a z w i s k o VARCHAR( 3 0 ) ,
Ocena NUMBER( 1 , 1 ) ,
PRIMARY KEY( I m i e , N a z w i s k o ) ) ;
Klucz obcy
Realizują związki
Implementacja:
Dodanie kolumn klucza obcego odpowiadających kolumnom
wskazywanego klucza głównego
Ograniczenie deklaratywne REFERENCES
Sposób obsługi modyfikacji/usuwania wskazywanego klucza
głównego
Kaskada - ON DELETE CASCADE (kasuje/modyfikuje się razem
z kluczem głównym)
Restrykcja - bez klauzuli (usuwanie/modyfikacja niemożliwa,
gdy jest choć jedna instancja encji podrzędnej)
Reprezentacja łuku
Dwa osobne klucze obce opcjonalne
Warunek wykluczania (CHECK)
Na każdy klucz obcy powinien być nałożony indeks
Piotr Kaczyński Bazy danych
Model pojęciowy Przekształcanie modelu pojęciowego
Model logiczny Ograniczenia integralności
Normalizacja Indeksy
Example
CREATE TABLE F a k t u r y ( i d f a k t u r y NUMBER PRIMARY KEY ) ;
CREATE TABLE P o z y c j e ( i d p o z y c j i NUMBER,
i d f a k t u r y REFERENCES F a k t u r y ( i d f a k t u r y )
ON DELETE CASCADE ) ;
Indeksy
Example
CREATE INDEX n a z w a i n d e k s u ON t a b e l a ( kolumny ) ;
CREATE INDEX f k i n d e x p o z y c j e ON P o z y c j e ( i d f a k t u r y ) ;
Zależności funkcyjne
Definition
Mówimy, że zbiór atrybutów Y jest zależny funkcyjnie od zbioru
atrybutów X tej samej relacji, gdy z każdą konfiguracją wartości
atrybutów z X jest związana co najwyżej jedna konfiguracja
wartości w Y . Zależność tą oznaczamy X → Y .
Example
Imię zależy funkcyjnie od id pracownika
Id pracownika nie zależy funkcyjnie od imienia
Imię nie zależy funkcyjnie od nazwiska
Zależność tranzytywna
Definition
Mówimy, że istnieje zależność tranzytywna A do X jeśli istnieje
zbiór Y zależny funkcyjne od X oraz zbiór A jest zależny
funkcyjnie od Y . Przy czym X nie jest zależne funkcyjnie od X
oraz A nie jest podzbiorem sumy X i Y .
Zależności wielowartościowe
Definition
Mówimy, że zbiór atrybutów Y jest zależny wielowartościowo od
zbioru X gdy z każdą konfiguracją wartości atrybutów z X jest
związany zbiór konfiguracji wartości z Y niezależnie od wartości
pozostałych atrybutów. Zależność tą oznaczamy X →→ Y .
Example
Zajęcia Wykładowca Podręcznik
BD Kaczyński XYZ
BD Kwasowiec XYZ
BD Kaczyński UVW
Podręczniki nie zależą od wykładowców
Nie ma zależności funkcyjnych
Zależności wielowartościowe Z →→ W oraz Z →→ P
Piotr Kaczyński Bazy danych
Model pojęciowy
Zależności
Model logiczny
Postacie normalne
Normalizacja
Definition
Relacja jest w 1NF gdy wszystkie atrybuty są atomowe – prostych
typów
Definition
Relacja jest w 3NF gdy każdy atrybut niekluczowy jest
bezpośrednio zależny funkcyjnie od całego klucza właściwego
Example
Dana jest następująca relacja
#Id pracownika Nazwisko Stanowisko Pensja
Relacja jest w 2NF (klucz jednoatrybutowy)
Isnieje zależność tranzytywna I → S → P
Rozkład na INS oraz SP sprowadza do 3NF
Definition
Relacja jest w BCNF gdy każda nietrywialna zależność funkcyjna
jest zależnością od klucza (niekoniecznie właściwego)
Example
Dana jest następująca relacja
Miasto Ulica Kod pocztowy
Istnieją tu klucze MU, UK (nazwy ulic mogą się powtarzać w
różnych miastach)
Występują zależności MU → K , K → M
Anomalie: usuwając ulicę możemy utracić informację o mieście
Relacja jest w 3NF: brak atrybutow niekluczowych
Relacja nie jest w BCNF: K nie jest kluczem
Relacja jest nierozkładalna do BCNF bez utraty zależności
Definition
Relacja jest w 4NF gdy jeśli każda nietrywialna zależność
wielowartościowa jest zależnością od klucza (niekoniecznie
właściwego)
Example
Dana jest następująca relacja
Zajęcia Wykładowca Podręcznik
Istnieją zależności Z →→ W oraz Z →→ P
Nie ma zależności funkcyjnych, a więc jest BCNF
Występuje nadmiar informacji: powtórzone dane dla
podręczników i wykładowców
Rozkład ZW , ZP doprowadza do 4NF
Piotr Kaczyński Bazy danych
Model pojęciowy
Zależności
Model logiczny
Postacie normalne
Normalizacja
Wymagania
Część VII
PL/SQL
Plan prezentacji
14 PL/SQL - Wstęp
Podstawy
Zmienne i typy danych
Instrukcje sterujące
15 Kursory
Tworzenie i podstawowe użycie kursora
Kursor a pętla FOR
16 Programy składowane
Procedury i funkcje
Wyzwalacze
Język PL/SQL
Typy danych
Te same co w SQL
Dodatkowo
Typ logiczny BOOLEAN (TRUE lub FALSE)
Typ RECORD
Możliwa deklaracja tablic
Deklaracja zmiennych w sekcji DECLARE
Widoczność zmiennych podobnie jak w C (zagnieżdżanie
bloków)
Stałe deklarowane z CONSTANT
Example
DECLARE
i m i e VARCHAR2 ( 2 0 ) ;
p o c z a t e k DATE ;
p o p r a w n i e BOOLEAN ;
Inicjalizacja zmiennych
Example
DECLARE
i m i e VARCHAR2( 2 0 ) := ’ P i o t r ’ ;
p o c z a t e k DATE NOT NULL := ’ 2010−01−01 ’ ;
p o p r a w n i e BOOLEAN := TRUE ;
s t a l a CONSTANT VARCHAR2( 1 0 ) := ’ Moja S t a l a ’ ;
BEGIN
NULL ;
END;
/
Rekordy
Odpowiednik struktury w C++
Definicja typu
TYPE nazwa typu IS RECORD(lista pól)
Deklaracja zmiennej
nazwa typu nazwa zmiennej
Odwołanie do pól przez kropkę
Example
DECLARE
TYPE ADRES I S RECORD( U l i c a VARCHAR2( 2 0 ) , Numer NUMBER( 3 ) ) ;
m o j a d r e s ADRES ;
BEGIN
m o j a d r e s . U l i c a := ’ D e w a j t i s ’ ;
m o j a d r e s . Numer := ’ 5 ’ ;
END;
/
Sufiksy typów
Example
DECLARE
imie studenta s t u d e n c i . i m i e%TYPE ;
dane studenta s t u d e n c i%ROWTYPE;
BEGIN
imie studenta := ’ P i o t r ’ ;
dane studenta . i m i e := ’ P i o t r ’ ;
dane studenta . n a z w i s k o := ’ K a c z y n s k i ’ ;
END;
/
Example
SET SERVEROUTPUT ON;
DECLARE
x NUMBER( 2 ) := &x ;
BEGIN
DBMS OUTPUT . PUT LINE ( ’ Kwadrat t e j l i c z b y to ’ | | x∗x ) ;
END;
/
Operatory w PL/SQL
Arytmetyczne
+, -, *, /, **
** oznacza potęgowanie
Logiczne
AND, OR
Porównania
=, <, >, <=, >=, <>, !=
IS NULL, IS NOT NULL, LIKE
Instrukcja IF
Wykonuje instrukcje jeśli warunek jest prawdziwy (do END IF)
Możliwa klauzula ELSE
Dodatkowe warunki ELSIF
Example
DECLARE
x NUMBER( 2 ) := &x ;
BEGIN
I F x < 0 THEN
x := −1;
ELSIF x = 0 THEN
x := 0 ;
ELSE
x := 1 ;
END I F ;
END;
/
Instrukcja CASE
Sprawdzanie wielu warunków (porównanie do wielu wartości)
Example
DECLARE
x NUMBER( 2 ) := 2 ;
BEGIN
CASE
WHEN x > 2 THEN
x := −x ;
WHEN x < 2 THEN
x := 2∗ x ;
ELSE
x := x ∗∗ x ;
END CASE ;
CASE x
WHEN 3 THEN
x := 4 ;
WHEN 4 THEN
x := 5 ;
END CASE ;
END; Piotr Kaczyński Bazy danych
PL/SQL - Wstęp Podstawy
Kursory Zmienne i typy danych
Programy składowane Instrukcje sterujące
Pętla LOOP
Podobna do pętli do-while w C
Wyjście z pętli
Po napotkaniu EXIT
EXIT może być z warunkiem (EXIT WHEN)
Example
DECLARE
x NUMBER( 2 ) ;
BEGIN
x := 0 ;
LOOP
x := x +1;
d b m s o u t p u t . p u t l i n e ( ’X = ’ | | x ) ;
I F x = 5 THEN
EXIT ;
END I F ;
EXIT WHEN x = 5 ;
END LOOP ;
END;
/
Piotr Kaczyński Bazy danych
PL/SQL - Wstęp Podstawy
Kursory Zmienne i typy danych
Programy składowane Instrukcje sterujące
Pętla WHILE
Example
DECLARE
x NUMBER( 2 ) ;
BEGIN
x := 0 ;
WHILE x <= 5 LOOP
x := x +1;
d b m s o u t p u t . p u t l i n e ( ’X = ’ | | x ) ;
END LOOP ;
END;
/
Pętla FOR
Podobna do pętli for w C
Wyjście z pętli EXIT i EXIT WHEN
Iterator zmienia się w zadanym zakresie
Iteratora nie można zmieniać
Można iterować od końca (REVERSE)
Example
DECLARE
x NUMBER( 2 ) ;
BEGIN
FOR x IN 1 . . 5 LOOP
d b m s o u t p u t . p u t l i n e ( ’X = ’ | | x ) ;
END LOOP ;
FOR x IN REVERSE 1 . . 5 LOOP
d b m s o u t p u t . p u t l i n e ( ’X = ’ | | x ) ;
END LOOP ;
END;
/
Piotr Kaczyński Bazy danych
PL/SQL - Wstęp Podstawy
Kursory Zmienne i typy danych
Programy składowane Instrukcje sterujące
Użycie SELECT
Example
DECLARE
d a n e a g e n t a a g e n c i%ROWTYPE;
BEGIN
SELECT ∗ INTO d a n e a g e n t a FROM A g e n c i WHERE ID = 1 ;
END;
/
Użycie DML
DELETE identyczne jak deklaratywne;
Można używać zmiennych PL/SQL
Przy UPDATE można użyć pseudokolumny row jeśli zmieniamy
cały wiersz
Example
DECLARE
d a n e a g e n t a A g e n c i%ROWTYPE;
BEGIN
SELECT ∗ INTO d a n e a g e n t a FROM A g e n c i WHERE ID = 1 ;
d a n e a g e n t a . I m i e := ’ A r t u r ’ ;
UPDATE A g e n c i SET row = d a n e a g e n t a ;
d a n e a g e n t a . i d := 1 0 0 ;
INSERT INTO A g e n c i VALUES d a n e a g e n t a ;
END;
/
Kursor
Deklarowanie kursora
W sekcji DECLARE
Aby go użyć należy
1 Otworzyć kursor (wykona się zapytanie z nim związane)
2 Pobrać kolejny rekord
3 Zamknięcie
Kursory mogą mieć argumenty (tak jak funkcje)
Example
DECLARE
CURSOR c u r a g e n c i I S SELECT ∗ FROM A g e n c i ;
CURSOR c u r a g e n c i 2 ( i d a NUMBER( 2 ) ) I S
SELECT ∗ FROM A g e n c i WHERE i d = i d a ;
Używanie kursora
Otwieranie poleceniem OPEN
Można podać ew. argumenty kursora
Zamykanie poleceniem CLOSE
Pobieranie kolejnego rekordu FETCH
Example
DECLARE
CURSOR c u r a g e n c i ( i d a g e n t a a g e n c i . i d%TYPE)
I S SELECT ∗ FROM A g e n c i WHERE i d < i d a g e n t a ;
a g e n t a g e n c i%ROWTYPE;
BEGIN
OPEN c u r a g e n c i ( 5 ) ;
FETCH c u r a g e n c i INTO a g e n t ;
dbms output . p u t l i n e ( agent . nazwisko ) ;
CLOSE c u r a g e n c i ;
END;
/
Atrybuty kursora
%ISOPEN zwraca, czy kursor jest otwarty
%FOUND zwraca prawdę, jeśli ostatnie pobranie zwróciło
cokolwek
%ROWCOUNT zwraca ile wierszy zostało pobranych
Example
DECLARE
CURSOR c u r a g e n c i ( i d a g e n t a a g e n c i . i d%TYPE)
I S SELECT ∗ FROM A g e n c i WHERE i d < i d a g e n t a ;
a g e n t a g e n c i%ROWTYPE;
BEGIN
OPEN c u r a g e n c i ( 5 ) ;
d b m s o u t p u t . p u t l i n e ( ’ Pobrano ’ | | c u r a g e n c i%ROWCOUNT) ;
FETCH c u r a g e n c i INTO a g e n t ;
d b m s o u t p u t . p u t l i n e ( ’ Pobrano ’ | | c u r a g e n c i%ROWCOUNT) ;
END;
Example
DECLARE
CURSOR c u r a g e n c i ( i d a g e n t a a g e n c i . i d%TYPE)
I S SELECT ∗ FROM A g e n c i WHERE i d < i d a g e n t a ;
BEGIN
FOR a g e n t IN c u r a g e n c i ( 1 5 ) LOOP
dbms output . p u t l i n e ( agent . nazwisko ) ;
END LOOP ;
END;
Example
DECLARE
CURSOR c u r a g e n c i ( i d a g e n t a a g e n c i . i d%TYPE)
I S SELECT ∗ FROM A g e n c i WHERE i d < i d a g e n t a
FOR UPDATE ;
BEGIN
FOR a g e n t IN c u r a g e n c i ( 1 5 ) LOOP
UPDATE a g e n c i SET N a z w i s k o = ’AA ’
WHERE CURRENT OF c u r a g e n c i ;
DELETE FROM A g e n c i WHERE CURRENT OF c u r a g e n c i ;
END LOOP ;
END;
Programy składowane
Procedury
Tworzenie procedury
Example
DROP PROCEDURE z m i e n a g e n t a ;
CREATE PROCEDURE z m i e n a g e n t a ( i d a g e n t a IN NUMBER) I S
CURSOR c u r a g e n c i ( i d a g e n t a a a g e n c i . i d%TYPE)
I S SELECT ∗ FROM A g e n c i WHERE i d < i d a g e n t a a
FOR UPDATE;
BEGIN
FOR a g e n t IN c u r a g e n c i ( i d a g e n t a ) LOOP
UPDATE a g e n c i SET N a z w i s k o = ’AA ’ | | N a z w i s k o
WHERE CURRENT OF c u r a g e n c i ;
END LOOP ;
END;
/
execute zmien agenta ( 1 0 ) ;
Funkcje
Zwracają wartość
Mogą być używane w zapytaniach
Blok PL/SQL poprzedzony CREATE FUNCTION
Deklaracja zwracanego typu po RETURN
Wywołanie tylko z zapytań lub innych procedur
Example
CREATE FUNCTION p o l i c z l i t e r y a g e n t o w ( i d a g e n t a IN NUMBER)
RETURN NUMBER I S
x NUMBER := 0 ;
BEGIN
FOR a g e n t IN (SELECT ∗ FROM A g e n c i WHERE i d < i d a g e n t a ) LOOP
x := x + l e n g t h ( a g e n t . n a z w i s k o ) ;
END LOOP ;
RETURN x ;
END;
/
s e l e c t p o l i c z l i t e r y a g e n t o w ( 1 0 ) FROM DUAL ;
Piotr Kaczyński Bazy danych
PL/SQL - Wstęp
Procedury i funkcje
Kursory
Wyzwalacze
Programy składowane
Wyzwalacze
Tworzenie wyzwalacza
CREATE TRIGGER
Wyzwalacz musi mieć nazwę
Kiedy: BEFORE lub AFTER
Wybór zdarzenia UPDATE, INSERT, DELETE
Example
DROP TRIGGER p o u s u n i e c i u ;
CREATE TRIGGER p o u s u n i e c i u
AFTER DELETE ON A g e n c i
BEGIN
d b m s o u t p u t . p u t l i n e ( ’USUNALES AGENTA ! ! Powiadamiam CBA ! ’ ) ;
END;
Wyzwalacz wierszowy
Example
DROP TRIGGER p o u s u n i e c i u 2 ;
CREATE TRIGGER p o u s u n i e c i u 2
AFTER DELETE ON A g e n c i
FOR EACH ROW
BEGIN
d b m s o u t p u t . p u t l i n e ( ’ Usuwasz a g e n t a ’ | | : OLD . n a z w i s k o ) ;
END;
Ćwiczenia
Ćwiczenia
1 Wypisz nazwiska tych agentów, którzy mają nazwisko dłuższe
Część VIII
Plan prezentacji
17 Użytkownicy i schematy
Schematy
Użytkownicy
Przywileje
19 Zagadnienia dodatkowe
Widoki
Przestrzenie tabel
Schematy
Dostęp do obiektów
Example
SELECT ∗ FROM A g e n c i ;
SELECT ∗ FROM PIOTREK . A g e n c i ;
SELECT ∗ FROM PIOTREK . A g e n c i NATURAL JOIN A g e n c i ;
Użytkownicy
Tworzenie użytkownika
CREATE USER nazwa
Metody identyfikacji (IDENTIFIED)
Lokalna (BY hasło)
Zewnętrzna (IDENTIFIED EXTERNALLY)
Globalna (IDENTIFIED GLOBALLY as nazwa)
Blokowanie użytkonika
ACCOUNT LOCK/UNLOCK
Zmuszenie użytkownika do zmiany hasła
PASSWORD EXPIRE
Usuwanie użytkownika
DROP USER nazwa
Użytkownicy - przykład
Example
CREATE USER k r e c i k IDENTIFIED BY c z e c h y ;
DROP USER k r e c i k ;
CREATE USER k r e c i k IDENTIFIED e x t e r n a l l y ;
DROP USER k r e c i k ;
CREATE USER k r e c i k IDENTIFIED g l o b a l l y a s ’ A l a J a n o s z ’ ;
DROP USER k r e c i k ;
CREATE USER k r e c i k IDENTIFIED BY c z e c h y PASSWORD EXPIRE ;
ALTER USER k r e c i k IDENTIFIED BY s l o w a c j a ;
ALTER USER k r e c i k PASSWORD EXPIRE ;
ALTER USER k r e c i k ACCOUNT LOCK ;
ALTER USER k r e c i k ACCOUNT UNLOCK ;
DROP USER k r e c i k ;
Przywileje
Przyznanie przywilejów
GRANT przywileje TO użytkownik
Odebranie przywileju
REVOKE przywileje FROM użytkownik
Nadanie uprawnień do przekazywania uprawnień
Przywileje można wymieniać jako listę oddzieloną przecinkami
Dla uprawnień systemowych WITH ADMIN OPTION
Dla uprawnień obiektowych WITH GRANT OPTION
Example
GRANT CONNECT, SELECT ANY TABLE TO k r e c i k ;
REVOKE SELECT ANY TABLE FROM k r e c i k ;
Przywileje systemowe
Example
GRANT CREATE SESSION TO k r e c i k ;
GRANT CREATE ANY TABLE TO k r e c i k WITH ADMIN OPTION ;
REVOKE CREATE ANY TABLE FROM k r e c i k ;
Przywileje obiektowe
Role
Rola to zbiór uprawnień
Tworzenie/usuwanie ról
CREATE/DROP ROLE nazwa
Dodawanie i odejmowanie uprawnień rolom identyczne jak
użytkownikom
Dodawanie i odbieranie ról użytkownikom identyczne jak
uprawnień
Zmiana roli wpływa na uprawnienia wszystkich użytkowników
ją posiadających
Example
CREATE ROLE p r z e g l a d a c z ;
GRANT SELECT ANY TABLE TO p r z e g l a d a c z ;
GRANT p r z e g l a d a c z TO k r e c i k WITH ADMIN OPTION ;
GRANT SELECT , DELETE ON s t u d e n c i TO k r e c i k ;
DROP ROLE p r z e g l a d a c z ;
Uruchamianie i zatrzymywanie
Uruchamianie i zatrzymywanie
Example
SHUTDOWN;
STARTUP NOMOUNT;
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN ;
ALTER DATABASE CLOSE ;
SHUTDOWN IMMEDIATE ;
Kopie zapasowe
Tryb ARCHIVELOG
Praca w tym trybie wymaga zapisu informacji o każdej
transakcji do dziennika
Pozwala na wykonywanie ciepłych backupów
Spowalnia pracę bazy danych
Umożliwia cofanie i przywracanie zmian (roll back i roll
forward)
Przełączanie trybu tylko przy zamkniętej bazie danych
(MOUNTED)
Po nieudanej próbie odtworzenia otwarcie z opcją RESETLOGS
Example
CONNECT s y s AS SYSDBA ;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG ;
ARCHIVE LOG START ;
SHUTDOWN;
STARTUP MOUNT;
Piotr Kaczyński ;
ALTER DATABASE OPEN RESETLOGS Bazy danych
Użytkownicy i schematy Uruchamianie i zatrzymywanie
Zarządzanie bazą danych Kopie zapasowe
Zagadnienia dodatkowe Metadane
Zimny backup
Ciepły backup
Wymaga trybu ARCHIVELOG
Nie wymaga zamknięcia bazy danych
Można kolejno backupować przestrzenie tabel lub całą bazę
danych
Należy również backupować
Plik kontrolny
Pliki dziennika logu
Example
ALTER TABLESPACE x y z BEGIN BACKUP ;
−− K o p i o w a n i e p l i k u
ALTER TABLESPACE x y z END BACKUP ;
ALTER DATABASE BEGIK BACKUP ;
−− K o p i o w a n i e w s z y s t k i c h p l i k ó w
ALTER DATABASE x y z END BACKUP ;
Metadane
Example
SELECT column name from ALL TAB COLUMNS
WHERE t a b l e n a m e = ’ S t u d e n c i ’ ;
d e s c ALL TAB COLUMNS ;
Widoki
Example
CREATE VIEW n a j l e p s i AS SELECT ∗ FROM S t u d e n c i
WHERE Ocena = 5 ;
Przestrzenie tabel
Przestrzeń tabel to logiczny element bazy danych grupujący
Każdy schemat należy dokładnie do jednej przestrzeni tabel
Każda przestrzeń tabel skojarzona jest z jednym plikiem dbf
Różne typy przestrzeni (zwykła, tymczasowa i undo)
Przy tworzeniu tabeli opcja TABLESPACE;
Tworzenie nowej przestrzeni CREATE TABLESPACE
Example
create tablespace jakas
logging
d a t a f i l e ’d :/ t s s t h . dbf ’
s i z e 32m
a u t o e x t e n d on
n e x t 32m m a x s i z e 2048m
e x t e n t management l o c a l ;
CREATE USER k r e c i k i d e n t i f i e d by c z e c h y DEFAULT TABLESPACE j a k a s ;
CREATE TABLE STUDENCI ( I m i e VARCHAR( 3 0 ) , N a z w i s k o VARCHAR( 3 0 ) ,
Ocena NUMBER( 1 , 1 ) ) TABLESPACE j a k a s ;
Piotr Kaczyński Bazy danych