Opracowanie Pytan Bazy danych M Nieznany

background image

n224 ;)

1

1.Co to jest model danych? Wymień poznane modele danych. Scharakteryzuj jeden
z nich.

Model bazy danych to zbiór zasad (specyfikacji), opisujących strukturę danych
w bazie danych. Określane są również dozwolone operacje. Definiuje się
strukturę danych poprzez specyfikację reprezentacji dozwolonych w modelu
obiektów (encji) oraz ich związków. W informatyce głównymi modelami baz
danych są:
hierarchiczny model danych,
relacyjny model danych,
grafowy (sieciowy) model danych,
obiektowy model danych,
sieci semantyczne,
obiektowy-relacyjny,

1. Model hierarchiczny:

- W modelu hierarchicznym dane są przechowywane na zasadzie rekordów
nadrzędnych-podrzędnych, tzn. rekordy przypominają strukturę drzewa.
Każdy rekord (z wyjątkiem głównego) jest związany z dokładnie jednym
rekordem nadrzędnym.
Dane w takim modelu są znajdowane na zasadzie wyszukiwania rekordów
podrzędnych względem rekordu nadrzędnego. Przykładem takiego modelu
może być struktura katalogów na dysku twardym komputera.

2. Model relacyjny:

- Dane w takim modelu przechowywane są w tabelach, z których każda ma
stałą liczbę kolumn i dowolną liczbę wierszy. Każda tabela (relacja) ma
zdefiniowany klucz danych (key) - wyróżniony atrybut lub kilka takich
atrybutów, którego wartość jednoznacznie identyfikuje dany wiersz.
Wyszukiwanie danych odbywa się za pomocą odwołania się programu do
danego klucza i identyfikacji danego wiersza za jego pomocą.

Inny podział :
Proste modele danych. Dane zorganizowane są w strukturę rekordów zgrupowanych
w plikach. Głównymi dostępnymi operacjami są operacje na rekordach
(ewentualnie na ich poszczególnych polach). Z tego rodzaju modelem danych
mieliśmy do czynienia dotąd na ćwiczeniach.
Klasyczne modele danych. Należą do nich modele hierarchiczne, sieciowe i
relacyjne. Modele relacyjne stanowią najbardziej popularną obecnie podstawę
architektur systemów baz danych.
Semantyczne modele danych. Semantyka to inaczej znaczenie. Klasyczne modele
danych nie dostarczają łatwego sposobu odczytania informacji o semantyce
danych, stąd podejmuje się próby stworzenia innych modeli, uzupełniających
ten brak. Przykładem częściowej realizacji tego programu są obiektowe modele
danych.

2. Wyjaśnij pojęcia: dane, struktury danych , model danych, krotka, encja,
atrybut, typ danych .
Dane – zbiór liczb i tekstów w różnych formach, dane mogą byc przezentowane
bądź przetwarzane
Struktury danych - sposób uporządkowania informacji w komputerze. Na
strukturach danych operują algorytmy. Strukturami danych mogą byc: rekord,
tablica, lista, stos, kolejka, drzewo, graf
Model danych - to zbiór zasad (specyfikacji), opisujących strukturę danych.
Krotka (ang. tuple) - struktura danych będąca odzwierciedleniem matematycznej
n-tki, tj. uporządkowanego ciągu wartości. Krotki przechowują stałe wartości
o różnych typach danych - nie można zmodyfikować żadnego elementu, odczyt
natomiast wymaga podania indeksu liczbowego żądanego elementu.
Encja (ang. entity) w bazach danych to reprezentacja wyobrażonego lub
rzeczywistego obiektu (grupy obiektów) stosowana przy modelowaniu danych

background image

n224 ;)

2

podczas analizy informatycznej. Formalnie jest to pojęcie niedefiniowalne, a
podstawową cechą encji jest to, że jest rozróżnialna od innych encji.
Atrybut – cecha charakterystyczna encji
Typ danych - opis rodzaju, struktury i zakresu wartości, jakie może
przyjmować dany literał, zmienna, stała, argument, wynik funkcji lub wartość

3. Co to jest normalizacja danych? Czemu ona służy?
- Normalizacja bazy danych jest to proces mający na celu eliminację
powtarzających się danych w relacyjnej bazie danych. Główna idea polega na
trzymaniu danych w jednym miejscu, a w razie potrzeby linkowania do danych.
Taki sposób tworzenia bazy danych zwiększa bezpieczeństwo danych i zmniejsza
ryzyko powstania niespójności (w szczególności problemów anomalii).
Istnieją sposoby ustalenia czy dany schemat bazy danych jest
"znormalizowany", a jeżeli jest to jak bardzo. Jednym ze sposobów jest
przyrównanie danej bazy do schematów zwanych postaciami normalnymi (ang.
normal forms lub NF). Normalizacja bazy danych do konkretnej postaci może
wymagać rozbicia dużych tabel na mniejsze i przy każdym wykonywaniu zapytania
do bazy danych ponownego ich łączenia. Zmniejsza to wydajność, więc w
niektórych przypadkach świadoma denormalizacja (stan bez normalizacji) jest
lepsza - zwłaszcza w systemach niekorzystających z modelu relacyjnego (np.
OLAP).
- Normalizacja nie usuwa danych, tylko zmienia schemat bazy danych.
Normalizacja przeprowadza bazę danych z jednego stanu spójnego (przed
normalizacją) w inny stan spójny (po normalizacji). Jedyna różnica polega na
innym układzie danych i relacji pomiędzy nimi, ale bez utraty danych
(ewentualnie dodawane są nowe klucze główne).

4.Dokonaj podziału składni języka SQL. Scharakteryzuj wybraną grupę poleceń.
Podział :
- Data definition language
- Data manipulation language
- Data controll language
DML (Data Manipulation Language) służy do wykonywania operacji na danych – do
ich umieszczania w bazie, kasowania, przeglądania, zmiany. Najważniejsze
polecenia z tego zbioru to:
SELECT – pobranie danych z bazy,
INSERT – umieszczenie danych w bazie,
UPDATE – zmiana danych,
DELETE – usunięcie danych z bazy.
Dane tekstowe muszą być zawsze ujęte w znaki pojedynczego cudzysłowu (').
Dzięki DDL (Data Definition Language) można operować na strukturach, w
których dane są przechowywane – czyli np. dodawać, zmieniać i kasować tabele
lub bazy. Najważniejsze polecenia tej grupy to:
CREATE (np. CREATE TABLE, CREATE DATABASE, ...) – utworzenie struktury (bazy,
tabeli, indeksu itp.),
DROP (np. DROP TABLE, DROP DATABASE, ...) – usunięcie struktury,
ALTER (np. ALTER TABLE ADD COLUMN ...) – zmiana struktury (dodanie kolumny do
tabeli, zmiana typu danych w kolumnie tabeli).
DCL (Data Control Language) ma zastosowanie do nadawania uprawnień do
obiektów bazodanowych. Najważniejsze polecenia w tej grupie to:
GRANT (np. GRANT ALL PRIVILEGES ON EMPLOYEE TO PIOTR WITH GRANT OPTION) –
przyznanie wszystkich praw do tabeli EMPLOYEE użytkownikowi PIOTR z opcją
pozwalającą mu nadawać prawa do tej tabeli.
REVOKE – odebranie użytkownikowi wszystkich praw do tabeli, które zostały
przyznane poleceniem GRANT.
DENY

background image

n224 ;)

3


5. Co to są wyzwalacze ? Jak tworzy się I korzysta z wyzwalaczy w relacyjnych
bazach danych ?
Wyzwalacz (ang. trigger) jest to procedura wykonywana automatycznie jako
reakcja na pewne zdarzenia w tabeli bazy danych. Wyzwalacze mogą ograniczać
dostęp do pewnych danych, rejestrować zmiany danych lub nadzorować
modyfikacje danych.
Tworzenie w PosgreSQL :
CREATE TRIGGER nazwa { BEFORE | AFTER } { zdarzenie [ OR ... ] }
ON tabela [ FOR [ EACH ] { ROW | STATEMENT } ]
EXECUTE PROCEDURE nazwafunkcji ( argumenty )
Istnieje kilka typów wyzwalaczy. Wyzwalacze BEFORE - wykonywane przed
instrukcją generującą zdarzenie. Wyzwalacze AFTER są wykonane po instrukcji
generującej zdarzenie. W niektórych bazach danych są również wyzwalacze
INSTEAD OF - są one wykonywane zamiast instrukcji generującej zdarzenie.
Istnieją trzy typowe zdarzenia powodujące wykonanie wyzwalaczy:
- dopisanie nowego rekordu do bazy danych w wyniku wykonania instrukcji
INSERT,
- zmiana zawartości rekordu w wyniku wykonania instrukcji UPDATE oraz
- usunięcie rekordu w wyniku wykonania instrukcji DELETE.
Główne cechy wyzwalaczy to:
- nie mogą mieć parametrów (ale mogą zapisywać dane w tabelach tymczasowych)
- nie mogą zatwierdzać transakcji (COMMIT) ani ich wycofywać (ROLLBACK)
ponieważ działają w kontekście instrukcji SQL, która spowodowała ich
uruchomienie
- mogą generować dodatkowe błędy, jeżeli są źle napisane.

6. XML a bazy danych . Rozwiń zagadnienie.

7. Co to są funkcje w bazach danych. Jak funkcje się tworzy i jak z nich
korzysta.
Funkcją w bazie danych nazywamy zdeficniowany „podprogram” pomagający nam
reprezentowac, lub oddziaływac na dane w bazie danych
Deklaracja funkcji :
CREATE [ OR REPLACE] FUNCTION
nazwa_funkcji ([typ_argumentu [, …]]) [RETURNS typ_wyniku]
AS ‘
DECLARE
--deklaracje zmiennych, skladnia:
nazwa [CONSTANT] typ [NOT NULL] [:=wartość]
/*CONSTANT sprawia, że wartości zmiennej nie można zmieniać
NOT NULL sprawia, że wartości zmiennej nie można przypisać wartości
NULL*/
np.:
n1 integer;
BEGIN
instrukcje

Po BEGIN można tworzyć nowe bloki, (zmienne mają zasięg w
zadeklarowanym bloku) // zagniezdzenie jak w pascalu [begin/end]


RETURN [wartość] --obowiązkowo funkcja musi zwracać wartość
END;
‘ LANGUAGE 'plpgsql'

Uzywanie funkcji :

Select * from nazwafunkcji(argument)

background image

n224 ;)

4


8. Co to są funkcje agregacji ? Podaj przykłady.
Agregacje to funkcje działające na grupach danych. Można powiedzieć (niezbyt
ściśle), że zwracają one pewną wypadkową pojedynczą wartość z kilku
rekordów, np. liczbę rekordów, średnią obliczoną z wartości w jakiejś
kolumnie itp
W PSQL:
--> SELECT count(*) from NazwaTabeli | Zlicza Wszystko
--> SELECT count(Kolumna) from NazwaTabeli | Zlicza wszystko po kolumnach
--> SELECT max(kolumna) from NazwaTabei | Pokazuje max z Tabeli
--> SELECT min(kolumna) from NazwaTabeli | Pokazuje min z tabeli
--> SELECT avg(kolumna) from NazwaTabeli | Pokazuje srednia z tabeli

9. W jaki sposób przydziela się i odbiera uprawnienia w bazach danych ?
// Zywcem zerznalem
Pierwsza część kursu języka SQL. Omówione zostały polecenia: GRANT i REVOKE,
czyli tworzenie użytkownika oraz nadawanie i odbieranie uprawnień.
Pierwszym etapem tworzenia bazy danych jest stworzenie tabel w których
przechowywane będą później wszelkie dane. Zanim jednak do tego przystąpimy
niektóre serwery będą wymagały zalogowania się przy pomocy nazwy użytkownika
i jego hasła. Możemy w tym przypadku korzystać z konta administratora
skonfigurowanego podczas instalacji serwera baz danych. Innym rozwiązaniem
jest utworzenie nowego użytkownika i dodanie go do bazy danych.
Powyższą czynność wykonamy przy użyciu polecenia GRANT, którego składnia jest
następująca:
GRANT lista_praw_dostępu ON nazwa_tabeli TO nazwa_uzytkownika
Pole „lista_praw_dostępu” może zawierać jedno, lub kilka z poniższych
uprawnień:
• SELECT– odczytanie danych z tabeli
• INSERT – wstawianie danych do tabeli
• UPDATE – modyfikowanie danych w tabeli
• DELETE – usunięcie danych z tabeli
• REFERENCE – odwoływanie się do innych tabel
• CREATE – tworzenie nowych tabel i baz danych
• DROP – usuwanie tabel oraz baz danych
• ALL PRIVILEGES – wszystkie dostępne uprawnienia
Pole „nazwa tabeli” określa tabelę do której przyznajemy uprawnienia
użytkownikowi wskazanemu w „nazwa użytkownika”.
Przykład 1:
Utworzymy użytkownika o nazwie „biuro” któremu nadamy prawa tylko do odczytu,
wstawiania oraz modyfikowania danych, a więc SELECT, INSERT, UPDATE dla
tabeli o nazwie „klienci”.
GRANT SELECT, INSERT, UPDATE ON klienci TO biuro
Przykład 2:
Tworzymy użytkownika o nazwie „szef” któremu nadajemy wszelkie możliwe
uprawnienia dla tabeli „klienci”.
GRANT ALL PRIVILEGES ON klienci TO szef
Przykład 3:
W pierwszym przykładzie utworzyliśmy użytkownika o nazwie „biuro” nadając mu
prawa tylko do odczytu, wstawiania oraz modyfikowania danych w tabeli. Teraz
chcielibyśmy aby mógł również usuwać dane z tabeli „klienci”.
W tym przypadku możemy ponownie skorzystać z polecenia GRANT podając nazwę
wszystkich praw dla danego użytkownika.
GRANT SELECT, INSERT, UPDATE, DELETE ON klienci TO biuro
SQL umożliwia także odbieranie wcześniej nadanych uprawnień, a służy do tego
polecenie REVOKE, którego składnia jest następująca:
REVOKE lista_praw_dostępu ON nazwa_tabeli FROM nazwa_uzytkownika

background image

n224 ;)

5

Przykład:
Stwierdziliśmy, iż użytkownik „biuro” nie powinien mieć możliwości wstawiania
nowych danych do tabeli „klienci”. Należy więc usunąć mu prawo używania
polecenia INSERT.
REVOKE INSERT ON klienci FROM biuro

10.Co to są struktury danych?
Struktury danych - sposób uporządkowania informacji w komputerze. Na
strukturach danych operują algorytmy. Strukturami danych mogą byc: rekord,
tablica, lista, stos, kolejka, drzewo, lista.
Tablica – kontener danych, w którym poszczególne komórki dostępne są za
pomocą kluczy, które najczęściej przyjmują wartości numeryczne
Rekord – to zestaw danych, zazwyczaj posiadający ustaloną wewnętrzną
strukturę, stanowiący pewną całość, ale mogący być częścią większego zbioru
podobnych rekordów.
Stos – liniowa struktura danych, w której dane dokładane są na wierzch stosu
i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out;
ostatni na wejściu, pierwszy na wyjściu).
Kolejka – liniowa struktura danych, w której nowe dane dopisywane są na końcu
kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania
(bufor typu FIFO, First In, First Out; pierwszy na wejściu, pierwszy na
wyjściu).
Drzewo – W naturalny sposób reprezentuje hierarchię danych (obiektów
fizycznych i abstrakcyjnych, pojęć, itp.) jest więc stosowane głównie do tego
celu. Drzewa ułatwiają i przyspieszają wyszukiwanie, a także pozwalają w
łatwy sposób operować na posortowanych danych.
Lista - rodzaj kontenera - dynamiczna struktura danych, używana w
informatyce. Składa się z podstruktur wskazujących na następniki i/lub
poprzedniki.

11.Co to są związki w bazach danych. Opisz podstawowe rodzaje związków.
W modelu relacyjnym baz danych "relacja" to formalne określenie tabeli, czyli
wydzielonym logicznie zbiorem danych, zorganizowanych w formie tabeli
składającej się z wierszy dzielonych na kolumny. Jest to obiekt teoretyczny i
nie należy go mylić z jej graficzną reprezentacją, czy miejscem zajmowanym w
pamięci komputera. W zależności od typu bazy danych wewnętrzna organizacja
podziału danych na kolumny i wiersze jest różna i często umowna.
1. Relacja jeden-do-jednego

W relacji jeden-do-jednego każdy rekord w tabeli A może mieć tylko jeden
dopasowany rekord z tabeli B, i tak samo każdy rekord w tabeli B może mieć
tylko jeden dopasowany rekord z tabeli A. Ten typ relacji spotyka się rzadko,
ponieważ większość informacji powiązanych w ten sposób byłoby zawartych w
jednej tabeli. Relacji jeden-do-jednego można używać do podziału tabeli z
wieloma polami, do odizolowania części tabeli ze względów bezpieczeństwa,
albo do przechowania informacji odnoszącej się tylko do podzbioru tabeli
głównej.
2. Relacja jeden-do-wielu
Relacja jeden-do-wielu jest najbardziej powszechnym typem relacji. W relacji
jeden-do-wielu rekord w tabeli A może mieć wiele dopasowanych do niego
rekordów z tabeli B, ale rekord w tabeli B ma tylko jeden dopasowany rekord w
tabeli A.
3. Relacja wiele-do-wielu
W relacji wiele-do-wielu, rekord w tabeli A może mieć wiele dopasowanych do
niego rekordów z tabeli B i tak samo rekord w tabeli B może mieć wiele
dopasowanych do niego rekordów z tabeli A. Jest to możliwe tylko przez
zdefiniowanie trzeciej tabeli (nazywanej tabelą łącza), której klucz

background image

n224 ;)

6

podstawowy składa się z dwóch pól ž kluczy obcych z tabel A i B. Relacja
wiele-do-wielu jest w istocie dwiema relacjami jeden-do-wielu z trzecią
tabelą. Na przykład, tabele "Zamówienia" i "Produkty" są powiązane relacją
wiele-do-wielu zdefiniowaną przez utworzenie dwóch relacji jeden-do-wielu z
tabelą "Opisy zamówień".

12. Co to jest normalizacja danych ? Jakie są podstawowe cele normalizacji ?
- Normalizacja bazy danych jest to proces mający na celu eliminację
powtarzających się danych w relacyjnej bazie danych. Główna idea polega na
trzymaniu danych w jednym miejscu, a w razie potrzeby linkowania do danych.
Taki sposób tworzenia bazy danych zwiększa bezpieczeństwo danych i zmniejsza
ryzyko powstania niespójności (w szczególności problemów anomalii).
Istnieją sposoby ustalenia czy dany schemat bazy danych jest
"znormalizowany", a jeżeli jest to jak bardzo. Jednym ze sposobów jest
przyrównanie danej bazy do schematów zwanych postaciami normalnymi (ang.
normal forms lub NF). Normalizacja bazy danych do konkretnej postaci może
wymagać rozbicia dużych tabel na mniejsze i przy każdym wykonywaniu zapytania
do bazy danych ponownego ich łączenia. Zmniejsza to wydajność, więc w
niektórych przypadkach świadoma denormalizacja (stan bez normalizacji) jest
lepsza - zwłaszcza w systemach niekorzystających z modelu relacyjnego (np.
OLAP).
- Normalizacja nie usuwa danych, tylko zmienia schemat bazy danych.
Normalizacja przeprowadza bazę danych z jednego stanu spójnego (przed
normalizacją) w inny stan spójny (po normalizacji). Jedyna różnica polega na
innym układzie danych i relacji pomiędzy nimi, ale bez utraty danych
(ewentualnie dodawane są nowe klucze główne).

13. Wymień operacje w algebrze relacyjnej. Krótko scharakteryzuj wybraną
(zadana przez prowadzącego).
Algebra relacyjna, proceduralny model operowania danymi, zbiór relacji bazy
danych rozpatrywany z ośmioma działaniami określonymi na następujących
relacjach: selekcja, rzut, złączenie oraz suma, iloczyn, przecięcie, różnica
i iloraz.

Selekcja bierze jedną relacje jako swój argument i produkuje w wyniku jedną
relację, wydobywa z wejściowej relacji wiersze, które pasują do podanego
warunku, i przekazuje je do relacji wynikowej,może być uważana za „poziomą
maszynę do cięcia”.

Rzut bierze jedną relacje jako swój argument i produkuje w wyniku jedną
relację. Rzut jest „pionową maszyną do cięcia”. Rzut usuwa z wejściowej
relacji kolumny, a pozostałe umieszcza w relacji wyjściowej.

Iloczyn - argumentami są dwie relacje i produkowana jedna relacja wynikowa
złożona ze wszystkich możliwych kombinacji wierszy z wejściowych tabel.
Operator rzadko używany ze względu na możliwość generowania „eksplozji
informacyjnej”.

Równo złączenie jest iloczynem kartezjańskim, po którym jest wykonywana
selekcja - zostają tylko te wiersze, których wartości w kolumnach złączenia
są takie same.

Suma, przecięcia oraz różnica: Argumentami operatorów są dwie zgodne relacje,
wynikiem relacja wynikowa.

Relacje zgodne – to relacje, które mają taką samą strukturę – te same kolumny
określone na tych samych dziedzinach.

background image

n224 ;)

7


W wyniku sumy otrzymujemy relację zawierającą wiersze (krotki) z obu relacji.
W wyniku przecięcia uzyskujemy wiersze wspólne dwóch relacji.
W wyniku różnicy otrzymujemy wiersze należące do pierwszej relacji i nie
należące do drugiej.

14. W jaki sposób zapisuje się relacje wiele-do-wielu w relacyjnych bazach
danych ?

W relacji wiele-do-wielu rekord w jednej tabeli jest powiązany z wieloma
rekordami w innej tabeli, a rekord w drugiej tabeli jest powiązany z wieloma
rekordami w pierwszej tabeli.

Ten typ relacji wymaga trzeciej tabeli zwanej tabelą skrzyżowań. W tabeli
skrzyżowań znajdują się klucze podstawowe z pozostałych dwóch tabel, które są
kluczami obcymi tej tabeli.

Na przykład między tabelami Zamówienia i Produkty istnieje relacja typu
wiele-do-wielu. Jedno zamówienie może zawierać wiele produktów, a każdy
produkt może występować w wielu zamówieniach.

Trzecia tabela — w tym przykładzie, Szczegóły zamówień, — zawiera klucze
podstawowe z tabel Zamówienia i Produkty. Tabela Szczegóły zamówień jest
tabelą skrzyżowań obu tych tabel.

Ponieważ każdy element tabeli Zamówienia i każdy element tabeli Produkty może
być wyświetlany wiele razy w tabeli Szczegóły zamówień, między obiema tymi
tabelami a tabelą Szczegóły zamówienia istnieje relacja typu jeden-do-wielu.
Wszystkie tabele skrzyżowań łączą tabele, które są powiązane relacjami typu
jeden-do-wielu z tabelami skrzyżowań, a klucze podstawowe tych połączonych
tabel są kluczami obcymi w tabeli skrzyżowań.

Gdy jedna tabela może być połączona relacją z wieloma innymi tabelami poprzez
zwykłe odnoszenie się do informacji w nich zawartych, niektóre części bazy
danych są jak komórki organizmu ludzkiego. Każda jest aktywna, każda ma
prawidłowy rozmiar w zakresie swojego zastosowania i razem mogą uzyskiwać
wyniki znacznie wykraczające poza ich indywidualne możliwości.

15. Co to są postacie normalne? Jakich zależności dotyczą ?

Postac normalna - postać relacji w bazie danych, w której nie występuje
redundancja (nadmiarowość), czyli powtarzanie się tych samych informacji.
Doprowadzeniu relacji do postaci normalnej służy normalizacja bazy danych.
1NF :
Relacja jest w pierwszej postaci normalnej, jeśli:
opisuje jeden obiekt,
wartości atrybutów są elementarne (atomowe, niepodzielne) - każda kolumna
jest wartością skalarną (atomową), a nie macierzą lub listą czy też
czymkolwiek, co posiada własną strukturę,
nie zawiera kolekcji (powtarzających się grup informacji),
posiada klucz główny,
kolejność wierszy może być dowolna (znaczenie danych nie zależy od kolejności
wierszy).
Właściwości, które muszą zaistnieć w 1 formie :
Jest zdefiniowany klucz relacji.
Wszystkie atrybuty niekluczowe są w zależności funkcyjnej od klucza.
2NF :

background image

n224 ;)

8

Relacja jest w drugiej postaci normalnej wtedy i tylko wtedy, gdy jest w I
postaci normalnej i każda kolumna zależy funkcyjnie od całego klucza głównego
(a nie np. od części klucza).
3NF :
Mamy z nią do czynienia wtedy i tylko wtedy, gdy tabela jest w 2NF oraz gdy
wszystkie pola niebędące polami klucza głównego są od niego zależne
bezpośrednio.
BCNF :
W tej postaci zależności funkcyjne muszą mieć następującą postać: jeżeli X →
A i atrybut A nie jest zawarty w X, to X jest kluczem lub zawiera klucz.
4NF :
Relacja jest w czwartej postaci normalnej, jeżeli zawsze wtedy, kiedy zbiór
atrybutów X określa wartościowo Y, to zachodzi jeden z następujących
warunków:
Y jest puste lub zawiera się w X,
suma zbiorów X i Y jest pełnym zbiorem atrybutów,
X zawiera klucz.
Czwarta i piąta postać normalna są w zasadzie używane wyłącznie przy okazji
rozważań teoretycznych.

16. Co to są widoki? Do czego służą ?
„Ufizycznienie” kwerendy, // nie chce mi sie tego ropisywac

17. Co to są transakcje ? Jakie reguły powinny być spełnione przy korzystaniu
z transakcji?

Transakcja - zbiór operacji na bazie danych, które stanowią w istocie pewną
całość i jako takie powinny być wykonane wszystkie lub żadna z nich. Warunki
jakie powinny spełniać transakcje bardziej szczegółowo opisują zasady ACID
(Atomicity, Consistency, Isolation, Durability - Atomowość, Spójność,
Izolacja, Trwałość).

Atomowość (niepodzielność) - każda transakcja jest niepodzielną operacją z
punktu widzenia użytkownika: albo wszystkie akcje wchodzące w skład
transakcji są wykonywane albo żadna z nich.

Spójność - po wykonaniu zbioru transakcji stan bazy danych powinien być
spójny (pod warunkiem, że przy rozpoczynaniu transakcji stan bazy danych był
spójny oraz że każda z wykonywanych transakcji jest z osobna poprawna).

Izolacja - transakcje powinny sobie wzajemnie nie przeszkadzać w działaniu.
Każdy użytkownik powinien mieć iluzję, że sam korzysta z bazy danych. Przy
najwyższym (zalecanym) stopniu izolacji wymaga się aby transakcja działała na
spójnym, nie zmienianym przez innych użytkowników fragmencie bazy danych.

Trwałość - dane zatwierdzone przez transakcję powinny być dostępne nawet w
sytuacji awarii programu, komputera lub nośnika danych.

18.Co to jest poziom izolacji transakcji ? Jakie znasz poziomy ? Jakie
poziomy zaimplementowano w PostrgeSQL-u ?

Poziom izolacji transakcji (transaction isolation levels) to stopień
uniezależnienia się transakcji od siebie nawzajem. Im wyższy poziom izolacji
tym większa pewność, że podczas wykonywania jednej transakcji zmiany
dokonywane w tym samym czasie przez inne transakcje nie wpłyną na nią.

Obecnie można mówić o czterech poziomach izolacji:

background image

n224 ;)

9

- Odczyt niezatwierdzych (Read uncommited)
- Odczyt zatwierdzonych (Read commited)
- Odczyt powtarzalny (Repeatable read)
- Szeregowalność (Serializable)

Implementacja :

SET TRANSACTION ISOLATION LEVEL
{ READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SNAPSHOT
| SERIALIZABLE
}


19. Omówić wybrany poziom izolacji transakcji (odczyt zatw. / odczyt niezatw.
/ powtarzalny odczyt/ szeregowalne ).

Read uncommited
Zasadniczo jest to po prostu brak izolacji. Wszelkie zmiany, w tym także te
jeszcze niezatwierdzone (!) są widzialne przez inne transakcje. Czyli
transakcja odczytująca dane może odczytać dane błędne.

Read commited
Podstawowa izolacja, w której transakcja zawsze widzi tylko dane
zatwierdzone. W dalszym ciągu jednak nie jest to sytuacja zbyt komfortowa,
ponieważ długa transakcja będzie odczytywać dane zmieniane w czasie jej
trwania przez inne transakcje. W szczególnym przypadku transakcja odczytując
dwa razy te same dane może otrzymać inne wyniki (jeśli w międzyczasie inna
transakcja zatwierdzi zmiany w tych danych).

Repeatable read
Przy tym poziomie izolacji transakcja w dalszym ciągu widzi zmiany
zatwierdzane już po jej rozpoczęciu przez inne transakcje, ale ma zapewnioną
powtarzalność odczytów, czyli nie dojdzie do sytuacji, w której czytając te
same dane kilka razy otrzyma inne wyniki. Czyli przy tym poziomie izolacji
transakcja ma wrażenie, że dane w bazie się nie zmieniają - ma dostęp tylko
do ich jednej wersji. W dalszym ciągu jednak pozostaje problem tego, że w
zależności od różnych czynników wpływających na szybkość wykonywania tej i
innych transakcji, nie można przewidzieć, jakie dane transakcja odczyta. Co
tutaj najistotniejsze: z punktu widzenia tej transakcji inne transakcje mogą
się wydawać NIESPÓJNE, NIEPEŁNE.
Na przykładzie: mamy transakcję raportową, która czyta dane zagregowane z
dużej tabeli. W czasie generowania raportu inne krótkie transakcje modyfikują
dane w tej tabeli w ten sposób, że każda modyfikuje dwa rekordy (np. dwa
konta księgowe). Transakcja raportowa zaś podczas generowania raportu
zapamiętuje wartości rekordów, które odczytuje. Może się więc zdarzyć, że
przy odczycie kolejnego rekordu uwzględni zmianę w nim, ale nie uwzględni
zmiany w drugim rekordzie (wcześniejszym - odczytała go wcześniej i zmian w
nim już nie rejestruje). Na przykładzie kont księgowych: transakcja raportowa
zauważy zmianę tylko jednego konta (i np. stwierdzi dodatnie saldo na wyższym
poziomie syntetyki zamiast zerowego).

Serializable
W tym poziomie izolacji mamy rozwiązany problem pozornej niespójności innych
zatwierdzanych transakcji. Transakcja raportowa widzi stan bazy z momentu

background image

n224 ;)

10

swojego rozpoczęcia, a wszelkie zmiany dokonywane przez inne transakcje po
tym momencie są niewidzialne. Czyli transakcja dostaje do swojej dyspozycji
zamrożony obraz bazy danych z dokładnego punktu w czasie - z momentu swojego
rozpoczęcia. Skąd nazwa "szeregowalne"? Ano właśnie stąd, że przy tym
poziomie izolacji liczą się tylko momenty rozpoczynania transakcji. Można je
więc szeregować wg. czasu rozpoczęcia. Taki szereg transakcji zawsze
zaowocuje takim samym stanem bazy po ich zakończeniu, niezależnie od tego,
jak szybko się one wykonywały i które wcześniej się zakończyły (zatwierdziły
swoje dane). Nie ma znaczenia, w jakiej kolejności transakcje zatwierdzają
dane. Przy tym poziomie izolacji trzeba pamiętać o konfliktach. Przy tym
poziomie izloacji bowiem konflikty między transakcjami odwołującymi się do
tych samych danych są najbardziej prawdopodobne. Warto jednak pomyśleć o tym,
że w wielu wypadkach dla prostych transakcji modyfikujących wystarczy poziom
izolacji Read Commited, natomiast tylko wrażliwe na niespójności transakcje
złożone, które odczytują dane, np. raportowe (uwaga: należy uważnie
przeanalizować także proste transakcje odczytująco-modyfikujące) wymagają
przełączenia do poziomu Serializable.
Ten poziom izolacji nastręcza bazom danych sporo kłopotu. Sposoby realizacji
są dwa: poprzez odwoływanie się do danych historycznych lub przez złożone
blokady.
Metoda zakładania złożonych blokad ma bardzo krótkie nogi, ponieważ nie
gwarantuje sukcesu - po prostu przy tym poziomie izolacji pewnych rzeczy nie
można już wykonać post factum - dane zostały zatwierdzone później, trafiły do
bazy i koniec. Stąd przy dużym obciążeniu drobnymi transakcjami
modyfikującymi wykonanie złożonego raportu korzystającego z bieżących danych
przy poziomie Serializable jest praktycznie niemożliwe.
Metoda odtwarzania danych historycznych daje gwarancję sukcesu. Dane
historyczne mogą być otrzymywane np. przez odwoływanie się do logów
transakcyjnych lub poprzez tworzenie kopii modyfikowanych rekordów (tę drugą
strategię stosuje np. baza danych PostgreSQL i jest to strategia
najpewniejsza, ale też kosztowna). Przy korzystaniu z logu transakcyjnego
potknąć się można przy zbyt małej wielkości tego logu (czyli wtedy, gdy np.
transakcja raportowa trwa bardzo długo i musi sięgać głęboko wstecz, a w tym
czasie log szybko przyrasta na skutek intensywnych operacji modyfikujących
dane) - nie dotyczy to bazy PostgreSQL.

20. W jaki sposób można dokonywać blokad w bazach danych i po co się stosuje
blokady ?

Blokady stanowią mechanizm strzegący integralności danych w sytuacji
wielodostępu, poprzez
zapewnienie określonemu klientowi wyłączności dostępu do modyfikowanych przez
niego danych, gdy jest
to niezbędne aby zapobiec błędom które mogłyby wyniknąć z ,,przemieszania''
modyfikacji danych
wykonywanych przez różnych klientów. Blokady stosowane są zarówno do struktur
danych widocznych dla
użytkownika (tabele, wiersze), jak i do wewnętrznych struktur danych systemu.
System Oracle stosuje blokady automatycznie, w sposób niewidoczny dla
użytkownika, w ramach obsługi
transakcji. W szczególnych przypadkach może być potrzebne (i jest możliwe)
jawne deklarowanie blokad
lub zmiana przez użytkownika blokad stosowanych implicite, sytuacje takie są
jednak wyjątkiem. Przykłady
takich sytuacji: pewna transakcja wykonuje jedynie odczyt danych z pewnych
tabel (instrukcjami SELECT) --

background image

n224 ;)

11

co nie wiąże się automatycznie z blokadą dostępu, lecz musi mieć
zagwarantowaną niezmienność tych
tabel w ramach transakcji; pewna transakcja musi mieć zagwarantowany wyłączny
dostęp do potrzebnych
jej danych, ponieważ nie może z jakichś względów czekać na zwolnienie blokad
które mogą być nałożone
na te dane przez innych klientów. Do takich celów istnieje m. in. instrukcja
LOCK TABLE.
Przykładowo, instrukcja
LOCK TABLE tabela IN SHARE MODE
uniemożliwia innym, jednocześnie wykonywanym transakcjom dokonywanie
modyfikacji danych w podanej
tabeli, oraz nakładanie blokad wyłącznych (p. poniżej). Pozwala natomiast na
nałożenie analogicznych
blokad (SHARE MODE) przez inne transakcje -- wówczas żadna z transakcji nie
będzie mogła dokonać
modyfikacji danych.
Z kolei
LOCK TABLE tabela IN EXCLUSIVE MODE
dopuszcza inne transakcje jedynie do odczytu danych z zablokowanej tabeli,
uniemożliwiając im
jakiekolwiek inne operacje (łącznie z nakładaniem własnych blokad).

21. Zasady tworzenia interfejsu użytkownika w bazach danych.

Istnieje kilka głównych wytycznych, którymi powinieneś się kierować w trakcie
projektowania interfejsu:
➔ Używaj programowania obiektowego z zachowaniem wszelkich jego zasad i
przesłanek.
➔ Czyń interfejs niezależnym i wyspecjalizowanym.
➔ Oprzyj interfejs na standardowej budowie.

22. Podstawowe metody dostępu do danych z poziomu aplikacji .


Wyszukiwarka

Podobne podstrony:
opracowanie pytan id 338374 Nieznany
notatek pl g owacki,bazy danych Nieznany
Nhip opracowanie pytan id 31802 Nieznany
Opracowanie pytan 3 id 338376 Nieznany
Opracowanie pytan EGZAMIN Inzyn Nieznany
Opracowanie pytan 5 id 338378 Nieznany
Opracowanie pytan biomedyka id Nieznany
BDII Opracowania egzamin, Bazy danych II
byt opracowanie pytan BYT overv Nieznany
Opracowanie pytan 4 id 338377 Nieznany
Opracowanie Teoria Bazy Danych 2011 Plebs By ITCompozer
BDII Opracowania egzamin, Bazy danych II
MSI opracowanie pytan id 309782 Nieznany
opracowanie pytan m j update ww Nieznany
Opracowanie pytan Badanie struk Nieznany
opracowanie pytan id 338374 Nieznany
notatek pl g owacki,bazy danych Nieznany
Nhip opracowanie pytan id 31802 Nieznany

więcej podobnych podstron