BAZY DANYCH
Opracowanie pytań teoretycznych do kolokwium.
1. Co to jest model danych? Wymień poznane modele danych. Scharakteryzuj jeden z nich.
Model danych jest to zbiór zasad posługiwania się danymi:
–
zbiór reguł określających strukturę danych (definicja danych)
–
zbiór reguł określających operacje na danych (operowanie danymi)
–
zbiór reguł określających poprawne stany bazy danych (integralność danych)
Poznane modele danych:
–
model płaski (prosty)
•
każdy rekord to zbiór wartości, stworzony zgodnie z definicją danych (strukturą DB)
•
żaden rekord nie jest powiązany z innym rekordem
–
model hierarchiczny (drzewiasty)
•
począwszy od korzenia drzewa, poprzez krawędzie - rozgałęzienia dochodzi się do ostatnich
zbiorów danych – liści
•
typowy przykład: system plików (korzeń: C:; rozgałęzienia: foldery; liście: pliki), XML
•
system często przedstawiany poprzez związek „rodzic-potomek”. Rodzic posiada pewną liczbę
potomków, potomkowie ci mogą mieć swoich potomków itd. itd.
•
zasady integralności takiego systemu:
–
każdy rekord (z wyjątkiem pierwszego rodzica - korzenia drzewa) musi posiadać własnego,
jednego rodzica (jeśli ma mieć dwóch, musi zostać skopiowany!)
–
usunięcie danego rekordu oznacza usunięcie wszystkich potomków
–
model sieciowy
•
możliwe jest powiązanie dowolnego rekordu z wieloma innymi i szerzej możliwe są związki wiele
do wielu
•
tworzona jest sieć powiązań i dlatego model nazywany jest modelem sieciowym
•
wada: duży rozmiar bazy powiązań przy dużej objętości danych, a więc słaba wydajność ich
przetwarzania
–
model relacyjny
•
relacja jest zbiorem krotek
•
relacja może być reprezentowana poprzez tabelę, każdy wiersz tabeli to zapis krotki
•
w tabeli każda dziedzina jest reprezentowana przez kolumnę (nazwa i typ)
•
wartości danej dziedziny muszą być niezłożone (atomowe), czyli nie mogą być krotkami
•
każda krotka (wiersz) musi być unikalna (jak to zapewnić?)
•
można utworzyć kilka relacji do reprezentowania rzeczywistości oraz powiązać krotki (wiersze)
poszczególnych relacji (tabel)
–
obiektowy model danych
–
obiektowo-relacyjny model danych
2. Wyjaśnij pojęcia: dane, struktury danych , model danych, krotka, encja, atrybut, typ danych
dane – zapis (reprezentacja) faktów, bez kontekstu czy też znaczenia (np. czerwony, 40).
encja – pojedynczy byt posiadający atrybuty
krotka - reprezentuje uporządkowaną listę elementów, zapisywana z użyciem nawiasów oraz przecinkiem
jako znakiem rozdzielającym elementy, np. (1, 3, 5, 34).
atrybut – cecha (własność) encji (obiektu)
typ danych - forma reprezentacji danych w komputerze (varchar, int, float etc.)
struktura danych – opis typu przechowywanych danych i ich rzeczywistego znaczenia (deklaracja kolumn
w tabeli)
model danych – patrz pkt. 1
BAZY DANYCH
Opracowanie pytań teoretycznych do kolokwium.
1
3. Co to jest normalizacja danych? Czemu ona służy.
Normalizacja danych to proces mający na celu minimalizację przechowywanych danych i eliminację
powtarzających się. Główna idea polega na jak najczęstszym linkowaniu do danych i unikaniu
niepotrzebnych duplikatów. Taki sposób projektowania bazy zwiększa bezpieczeństwo danych i zmniejsza
ryzyko powstania niespójności. Dokonuje się tego poprzez odpowiednie dostosowanie struktury danych do
danych w bazie przechowywanych.
Cele normalizacji:
–
umożliwienie reprezentacji każdej relacji bazy w formie tabeli
–
uzyskanie dużej efektywności odczytu danych
–
usunięcie niepotrzebnych zależności w relacjach związanych z operacjami dodawania, usuwania i
aktualizacji danych
–
zredukowanie potrzeby rekonstrukcji relacji w przypadku konieczności dodania nowych typów
danych (relacji, atrybutów, związków)
–
uzyskanie schematu bazy relacyjnej stanowiącego dużą wartość informacyjną dla użytkowników
4. Dokonaj podziału składni języka SQL. Scharakteryzuj wybraną grupę poleceń.
Data Definition Language (DDL) - grupa składni języka SQL pozwalająca na definiowanie nowych struktur
danych (tabel, widoków, indeksów itp.) (polecenia: CREATE, ALTER, DROP)
Data Manipulation Language (DML) – polecenia odpowiadające za składowanie danych wewnątrz bazy
danych (głównie dostęp do danych wewnątrz tabel) (polecenia: INSERT, UPDATE, DELETE)
Data Query Language (DQL) - grupa złożona z jednej instrukcji SELECT, pozwalająca na uzyskanie dostępu
do danych i wywoływanie funkcji – dzięki którym uzyskuje się znacznie większe możliwości operowania na
danych
Data Control Language (DCL) – polecenia do zarządzania uprawnieniami wewnątrz bazy danych (patrz
pkt. 9)
5. Co to są wyzwalacze? Jak tworzy się i korzysta z wyzwalaczy w relacyjnych bazach danych?
Trigger, po polsku nazywany procedurą wyzwalaną, jest funkcją zdefiniowaną przez użytkownika
wywoływaną, gdy pojawi się jakieś wydarzenie (event) w tabeli. W PostgreSQL można wywoływać
triggery przed/po wstawieniu, modyfikacji lub usunięciu rekordu. Triggery mogą być wykonywane
raz dla całej instrukcji (statement level) lub po kolei dla każdego modyfikowanego rekordu (row
level).
KOD [TWORZENIE TRIGGERA]:
CREATE TRIGGER nazwa BEFORE|AFTER
INSERT|UPDATE|DELETE
ON tabela
FOR EACH
ROW|STATEMENT
EXECUTE PROCEDURE procedura(parametry);
Funkcja procedura musi zwracać typ TRIGGER!.
KOD [USUWANIE TRIGGERA]:
DROP TRIGGER nazwa ON tabela;
6. XML a bazy danych. Rozwiń zagadnienie.
XML (ang. eXtensible Markup Language) - rozszerzalny język znaczników
–
znaczników – dokument budowany jest w oparciu o elementy identyfikowane przez znaczniki (tagi)
–
język – dokument budowany jest zgodnie z określonymi zasadami składni, oraz w oparciu o
zdefiniowany alfabet (czyli znaczniki)
–
rozszerzalny – wykorzystywane w dokumencie elementy języka (znaczniki) projektowane są przez
użytkownika (projektanta schematu dokumentu)
W języku baz danych możemy mówić o XML-u jako hierarchicznej bazie danych (tylko danych, bez żadnego
systemu zarządzania nimi).
BAZY DANYCH
Opracowanie pytań teoretycznych do kolokwium.
2
KOD [PRZYKŁADOWY XML]:
<?xml version="1.0" encoding="UTF-8"
standalone="no"?>
<!DOCTYPE pracownicy SYSTEM "pracownicy.dtd">
<pracownicy>
<pracownik>
<daneOsobowe>
<imie>Izabela</imie>
<nazwisko>Nowakowska</nazwisko>
</daneOsobowe>
</pracownik>
<pracownik>
<daneOsobowe>
<imie>Zygfryd</imie>
<drugieImie>Zenobiusz</drugieImie>
<nazwisko>Wawrzyniak</nazwisko>
</daneOsobowe>
<dział>Public Relations</dział>
</pracownik>
</pracownicy>
Kontrola poprawności danych może być realizowana np. za pomocą DTD (ang. Document Type Definition)
(patrz 2 linijka w przykładowym kodzie XML).
KOD [DTD]:
<!ENTITY wlasciciel "Jacek W. Ruminski">
<!ENTITY kontakt "&wlasciciel;
<!ELEMENT pracownicy (pracownik+)>
<!ELEMENT pracownik (daneOsobowe, dział?)>
<!ELEMENT daneOsobowe (imie, drugieImie?,
nazwisko)>
<!ELEMENT imie (#PCDATA)>
<!ELEMENT drugieImie (#PCDATA)>
<!ELEMENT nazwisko (#PCDATA)>
<!ELEMENT dział (#PCDATA)>
<!ATTLIST element nazwa_atr typ_danych wymagania>
<!ATTLIST PROSTOKAT WYSOKOSC CDATA #REQUIRED>
SYMBOLE A LICZEBNOŚĆ ZBIORU:
bez symbolu Element lub zbiór elementów występują tylko jeden raz. Jest to sposób domyślny.
?
Element lub zbiór elementów występują co najwyżej raz.
+
Element lub zbiór elementów występują przynajmniej raz.
*
Element lub zbiór elementów występują dowolną ilość razy.
WYMAGANIA ATRYBUTÓW:
–
#REQUIED: wymagany bezwzględnie
–
#FIXED: ustalony na stałe
–
#IMPLIED: opcjonalny
TYPY DANYCH:
–
PCDATA: tekst parsowany
–
CDATA: tekst
–
NMTOKEN: słowo (ciąg znaków)
–
NMTOKENS: ciąg słów
–
inne
Alternatywą dla DTD jest też XML Schema (w odróżnieniu od DTD sam będący XML'em).
BAZY DANYCH
Opracowanie pytań teoretycznych do kolokwium.
3
Podstawowe cele XML:
–
XML powinien umożliwiać tworzenie dokumentów o strukturze wyznaczanej przez definiowane
znaczniki
–
Dokument XML powinien być prosty i szybki do utworzenia, czytelny dla twórcy i łatwo
interpretowany przez programy komputerowe
–
XML powinien być kompatybilny z SGML,
–
Dokumenty XML powinny być łatwo wymieniane przez Internet i przetwarzane oraz prezentowane
w ramach sieci WWW
–
XML powinien wspomagać różne typy aplikacji
–
Liczba cech opcjonalnych XML powinna być minimalna
–
Projektowanie dokumentu XML powinno umożliwiać weryfikację jego poprawności
7. Co to są funkcje w bazach danych. Jak funkcje się tworzy i jak z nich korzysta.
Funkcje w bazie danych to podprogramy zdefiniowane albo przez twórców bazy danych (przykładowo dla
PostgreSQL-a sin(), pi() etc.) operujące najczęściej na atrybutach krotek.
KOD [DEKLARACJA FUNKCJI]:
CREATE FUNCTION pkola(float) RETURNS float
LANGUAGE 'plpgsql'
AS '
BEGIN
RETURN 3.1415*$1*$1;
END;
';
KOD [UŻYCIE ZADEKLAROWANEJ FUNKCJI]:
SELECT pkola(1);
SELECT promien, pkola(promien) AS pole
FROM okregi;
8. Co to są funkcje agregacji? Podaj przykłady.
Funkcje agregacji dokonują analizy na grupie krotek. W odróżnieniu od zwykłych funkcji, operują na
grupach krotek, ale zwracają pojedynczy wynik. Np. gdy wykonamy funkcję sin(id_klienta) to zwróci ona tyle
wyników na ilu krotkach się ona wykonała, natomiast funkcje takie jak max(), min(), avg(), variance(),
stdev() czy count() zwrócą pojedynczy wynik.
KOD [PRZYKŁADY FUNKCJI AGREGACJI]:
SELECT count(*) FROM gatunek;
SELECT count(imie) FROM klient;
SELECT max(id_klienta) FROM klient;
SELECT min(id_klienta) FROM klient;
SELECT avg(id_klienta) FROM klient;
9. W jaki sposób przydziela się i odbiera uprawnienia w bazach danych?
Do przydzielania i odbierania przwilejów służą funkcje GRANT i REVOKE
KOD [UPRAWNIENIA]:
GRANT typ_operacji ON nazwa tabeli
TO username|groupname;
REVOKE typ_operacji ON nazwa_tabeli FROM user;
W zależności od poziomu uprawnień dla użytkownika, można nadać mu prawo tylko do odczytu (select),
tylko do umieszczania danych (insert), czy też wszystkich (all privileges) Do wygodnego zarządzania
uprawnieniami, zarówno dla indywidualnych użytkowników, jak i grup można użyć ról.
10. Co to są struktury danych?
Struktura danych to definicja uporządkowanego przechowywania danych na komputerze. W praktyce
sprowadza się do nazwania przechowywanych atrybutów i zdefiniowania typu dla każdego z nich (tablica
char'ów, float etc.)
BAZY DANYCH
Opracowanie pytań teoretycznych do kolokwium.
4
11. Co to są związki w bazach danych. Opisz podstawowe rodzaje związków.
Związki w bazie danych to relacje pomiędzy poszczególnymi rekordami w bazie danych, modelujące
rzeczywiste relacje pomiędzy obiektami, których dane przechowywane są w bazie.
Podstawowe rodzaje związków:
–
związek jeden do jednego (dokładnie jedna encja jest w związku z dokładnie jedną, inną encją.
–
związek jeden do wielu / wielu do jednego (jedna encja jest powiązana z wieloma, innymi encjami.
–
związek wiele do wielu (wiele encji jest powiązanych z wieloma innymi encjami)
12. Co to jest normalizacja danych? Jakie są podstawowe cele normalizacji?
Patrz pkt. 3
13. Wymień operacje w algebrze relacyjnej. Krótko scharakteryzuj wybraną (zadana przez
prowadzącego)
–
wybór (z ang. select): działa na tabeli generując nową tabelę zawierającą te krotki tabeli oryginalnej,
które spełniają zadany warunek.
SELECT * FROM tabela WHERE warunek;
–
rzut (z ang. project): działa na pojedynczej tabeli generując nową tabelę zawierającą tylko wybrane
kolumny ze wszystkich zadeklarowanych w strukturze tabeli.
SELECT kolumna_1, kolumna_2 FROM tabela;
–
unia zwana również sumą (z ang. union): działa na kilku tabelach, zwracając w wyniku tabelę
zawierającą sumę krotek ze wszystkich tabel (UNION: bez duplikatów; UNION ALL: z duplikatami)
SELECT * FROM tabela_1;
UNION|UNION ALL
SELECT * FROM tabela 2;
–
przecięcie czyli część wspólna (z ang. intersection): działa na kilku tabelach, zwracając w wyniku
tabelę zawierającą krotki występujące we wszystkich z tych tabel.
SELECT * FROM tabela_1;
INTERSECT
SELECT * FROM tabela 2;
–
różnica (z ang. difference): działa na dwóch tabelach, zwracając w wyniku tabelę zawierającą krotki
występujące w tabeli_1, a nie występujące w tabeli_2.
SELECT * FROM tabela_1;
EXCEPT|MINUS
SELECT * FROM tabela 2;
–
iloczyn kartezjański (z ang. product): operator dwuargumentowy, generujący nową tabelę na
podstawie wszystkich możliwych kombinacji tabel Tabela_1 i Tabela_2.
SELECT * FROM tabela_1, tabela_2;
SELECT t1.cecha, t2.inna, t2.i_to FROM tabela_1 t1, tabela_2 t2;
–
iloraz (z ang. divide): odwrotność iloczynu; nie ma zdefiniowanego operatora.
–
połączenie zwane również złączeniem (z ang. join): operator generujący nową relację R3 na
podstawie dwóch relacji wejściowych R1 i R2. Jest to operacja iloczynu z zadanym warunkiem
wyboru.
SELECT * FROM tabela_1
INNER|OUTER|LEFT|RIGHT JOIN tabela_2
ON warunek;
14. W jaki sposób zapisuje się relacje wiele-do-wielu w relacyjnych bazach danych?
Zostaje utworzona dodatkowa tabela w bazie danych realizująca pojedyncze „posiadanie”, w której każda
encja przechowuje identyfikatory rekordów, które są ze sobą powiązane.
15. Co to są postacie normalne? Jakich zależności dotyczą?
Postacie normalne to powszechnie używane standardy postaci relacji w bazie danych. Bazę doprowadza się
do postaci normalnej celem uniknięcia nadmiarowości przechowywanych danych. Pierwsza postać
normalna, tj. atomowość każdego elementu krotki jest wymogiem każdego współczesnego systemu
bazodanowego.
BAZY DANYCH
Opracowanie pytań teoretycznych do kolokwium.
5
16. Co to są widoki. Do czego służą?
Widok jest to inaczej definicja zapytania utrwalona w specjalnej tabeli w bazie danych. Każde odwołanie się
do widoku powoduje wykonanie zapisanego w nim zapytania na aktualnym obrazie (stanie) bazy danych.
Używane do często uruchamianych zapytań typu SELECT, pozwalają na przyspieszenie wykonania, a także
czytelność kodu aplikacji wykorzystującej DB i łatwość ew. modyfikacji i naprawy błędów.
KOD [DEFINICJA WIDOKU]:
CREATE VIEW nazwa_widoku
AS select_query;
KOD [UZYCIE WIDOKU]:
SELECT * FROM nazwa_widoku;
17. Co to są transakcje? Jakie reguły powinny być spełnione przy korzystaniu z transakcji?
Transakcja pozwala na zgrupowanie pewnego ciągu zdarzeń w bazie danych w jedną nierozerwalną całość.
Każda transakcja spełnia podstawowe reguły określane jako ACID (atomic, consistent, isolated, durable):
atomowość, spójność, izolacja, trwałość.
Atomowość - Każda transakcja musi zostać wykonana w całości, albo nie wykona się w ogóle
Spójność - system bazodanowy po wykonaniu transakcji będzie spójny (nie nastąpi złamanie zasad
integralności danych)
Izolacja – w zależności od poziomu izolacji transakcji (patrz pkt. 18) dwie równolegle przeprowadzane
transakcje nie spowodują niespójności danych
Trwałość – nawet w przypadku awarii systemu zarządzania bazą podczas trwania transakcji, system potrafi
uruchomić się i udostępnić spójne, nienaruszone dane
KOD [TRANSAKCJE]:
BEGIN|START
--KOD SQL
COMMIT|END|ROLLBACK
COMMIT (END) zatwierdza transakcję, ROLLBACK anuluje ją.
18. Co to jest poziom izolacji transakcji? Jakie znasz poziomy? Jakie poziomy zaimplementowano w
PostrgeSQL-u?
Poziom izolacji transakcji to stopień uniezależnienia 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ą.
1. read uncommitted (odczyt niezatwierdzony) – brak izolacji, jedna transakcja może odczytywać
wiersze, na których działają inne transakcje
2. read committed (odczyt zatwierdzony) - transakcja może odczytywać tylko wiersze już
zatwierdzone
3. repeatable read (odczyt powtarzalny) - transakcja widzi zmiany zatwierdzone już po jej
rozpoczęciu przez inne transakcje oraz ma zapewnioną powtarzalność odczytu, gwarantuje to te
same wyniki przy każdym czytaniu
4. serializable (szeregowalne) - pełna izolacja, transakcja przez cały czas jej trwania ma dostęp do
danych z momentu jej rozpoczęcia, nie widzi zmian przeprowadzonych przez inne transakcje
PostgreSQL, bedąc w zgodzie z normą przyjmie w zapytaniu wszystkie 4 poziomy izolacji, jednakowoż
read_uncommited i read commited są zaimplementowane jako read commited, a repeatable read i
serialize jako serialize.
19. Omówić wybrany poziom izolacji transakcji (odczyt zatw. / odczyt niezatw. / powtarzalny
odczyt/ szeregowalne)
Patrz pkt. 18.
BAZY DANYCH
Opracowanie pytań teoretycznych do kolokwium.
6
20. W jaki sposób można dokonywać blokad w bazach danych i po co się stosuje blokady?
Blokowanie tabel ma na celu izolację i ochronę danych w przypadku jednoczesnego używania bazy przez
wielu użytkowników. Zabezpiecza ona dane przed możliwym wystąpieniem niespójności i niezgodności z
modelem danych. Jest podstawą działania transakcji (patrz pkt. 17).
KOD [BLOKOWANIE TABEL]:
LOCK TABLE films IN SHARE MODE | EXCLUSIVE MODE;
21. Zasady tworzenia interfejsu użytkownika w bazach danych.
–
Interfejs powinien być maksymalnie dostosowany do danych w nim przechowywanych, aby był jak
najwygodniejszy dla użytkownika końcowego
–
Powinien być szybki i wydajny
–
Zabezpieczony przed atakami typu SQL Injection itd.
–
Użytkownik od strony interfejsu powinien mieć przyznane najniższe możliwe uprawnienia (tylko te,
które są wymagane do pełnej funkcjonalności interfejsu)
22. Podstawowe metody dostępu do danych z poziomu aplikacji.
– ODP22
BAZY DANYCH
Opracowanie pytań teoretycznych do kolokwium.
7