Docsity
Docsity

Przygotuj się do egzaminów
Przygotuj się do egzaminów

Studiuj dzięki licznym zasobom udostępnionym na Docsity


Otrzymaj punkty, aby pobrać
Otrzymaj punkty, aby pobrać

Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium


Informacje i wskazówki
Informacje i wskazówki

Baza danych - Notatki - Elementy informatyki, Notatki z Informatyka

Informatyka: notatki z zakresu elementów informatyki odnoszące się do bazy danych,definicje najważniejszych pojęć.

Typologia: Notatki

2012/2013

Załadowany 12.04.2013

Norbert_88
Norbert_88 🇵🇱

4.5

(31)

322 dokumenty

Podgląd częściowego tekstu

Pobierz Baza danych - Notatki - Elementy informatyki i więcej Notatki w PDF z Informatyka tylko na Docsity!

• Baza danych 0 0 1 F0 0 1 F0 0 1 F0 0 1 F0 0 1 F0 0 1 F0 0 1 F0 0 1 F0 0 1 F0 0 1 F0 0 1 F0 0 1 F0 0 1 F– zbiór

powiązanych ze sobą logicznie danych, zorganizowany zgodnie z określonym modelem danych.

• System baz danych – wiele baz danych

zarządzanych przez jeden system komputerowy.

Składniki systemu baz danych: System baz danych = Trwała pamięć zewnętrzna + System Zarządzania Bazami Danych (DBMS) + Język zapytań

• Trwała pamięć zewnętrzna – urządzenia sprzętowe

przechowujące dane.

• System Zarządzania Bazami Danych (Data Base

Management System) – oprogramowanie zarządzające dostępem do baz danych.

• Język zapytań – język wysokiego poziomu, za

pomocą którego użytkownik komunikuje się z bazą danych.

Środki służące zwiększeniu niezawodności pamięci zewnętrznej:

• dublowanie urządzeń pamięci zewnętrznej

• kontrola poprawności zapisu

• kody detekcji/korekcji błędów

Funkcje DBMS:

• realizacja operacji dostępu do danych na

poziomie fizycznym

• zapewnienie integralności danych

• obsługa współbieżności

• ochrona danych

• odtwarzanie po awariach

• śledzenie operacji dokonywanych na bazie

danych

• obsługa rozproszenia

• obsługa przetwarzania równoległego

• Język zapytań = Język definiowania danych (DDL)

  • Język manipulowania danymi (DML) + Język kontrolowania danych (DCL)

• Administrator bazy danych (DBA) – osoba

sprawująca kontrolę nad dostępem do bazy danych i nad jej funkcjonowaniem

Zadania DBA:

• udzielanie użytkownikom uprawnień dostępu

do bazy danych

• monitorowanie wydajności bazy danych

• definiowanie strategii archiwizowania i

odtwarzania danych po awariach

• uruchamianie nowych strategii dostępu do

danych Narzędzia do dyspozycji DBA:

• program do ładowania bazy danych z plików

zewnętrznych

• programy do archiwizacji danych

• programy do przywracania danych z archiwum

• programy do zbierania statystyk i ich

analizowania

• procedury definiowania użytkowników

• programy do operowania na słowniku danych

• programy do analizowania dziennika bazy

danych

• Słownik danych – specjalna baza danych

zawierająca informacje o danych przechowywanych w innych bazach danych

Zawartość słownika danych:

• opisy struktury obiektów bazy danych

• opisy użytkowników

• definicje formatów danych stosowanych w

bazie danych

• dane statystyczne o wartościach danych w

bazie danych Dostęp do słownika danych:

• zwykły użytkownik ma prawa tylko do odczytu

i to tylko pewnych fragmentów słownika

• DBA może mieć pełniejszy dostęp do

słownika, jednak jego modyfikowanie może wykonywać tylko poprzez procedury systemowe

• DBMS ma pełen dostęp do słownika

Architektura systemu baz danych:

• Poziom zewnętrzny (użytkownik)

zbiór zewnętrznych widoków, poprzez które użytkownicy widzą zawartość bazy danych. Widok jest wyabstrahowanym fragmentem bazy danych, zdefiniowanym w terminach języka zapytań

• Poziom logiczny (modelu danych)

Zawiera model konceptualny bazy. Model ten obejmuje całą zawartość bazy, tak jak ją widzi administrator lub właściciel bazy

• Poziom wewnętrzny (fizyczny)

Fizyczna reprezentacja bazy w postaci plików dyskowych i algorytmów dostępu do nich. Jest to reprezentacja niskiego poziomu.

Program jest zależny od danych jeżeli wiedza na temat struktury danych i metod dostępu do nich jest wbudowana w program. Tzn. nie jest możliwa zmiana:

• struktur danych, czyli sposobu

przechowywania danych

• metod dostępu do danych

bez zmian w programie.

Niezależność programu od danych oznacza sytuację odwrotną. Korzyści:

• można wprowadzać nowe urządzenia

pamięciowe,

• można wprowadzać nowe struktury danych na

dysku i nowe metody dostępu

• można zmieniać fizyczną reprezentację danych

bez konieczności dokonywania zmian w kodzie aplikacji bazodanowych.

Przetwarzanie transakcyjne: Transakcja przeprowadza bazę danych z jednego stanu spójnego do innego. Po drodze mogą wystąpić stany niespójne. Przetwarzanie transakcyjne gwarantuje, że baza nie pozostanie w stanie spójnym mimo przerwania transakcji.

• Encja – pojęcie bazowe (niedefiniowalne).

Podstawową cechą encji jest to, że jest rozróżnialna od innych encji. Każda encja jest inna. W celu uproszczenia świata rzeczywistego, grupujemy (klasyfikujemy) podobne encje w zbiory encji (stosujemy zasadę abstrakcji).

• Zbiór encji – grupa podobnych do siebie (wg

określonych kryteriów) encji. Encje w zbiorze encji są rozróżniane przez wartości atrybutów. Własności atrybutów zbioru encji:

• liczba atrybutów jest ustalona (≥1)

• typy atrybutów są proste (wartości są

niepodzielne, czyli atomowe )

• nazwy atrybutów są różne (jednoznaczne)

Klucz zbioru encji. Własności klucza zbioru encji:

• jednoznaczność:

Nie istnieją takie 2 encje w zbiorze, które mają takie same wartości atrybutów kluczowych. Innymi słowy: wartość klucza jednoznacznie identyfikuje encję.

• minimalność (dot. Kluczy złożonych):

Nie można z klucza usunąć żadnego atrybutu bez naruszenia wymogu jednoznaczności. Innymi słowy: każda składowa klucza złożonego jest potrzebna.

• Związek REL pomiędzy zbiorami encji E1, E2,...,

E n jest to zbiór krotek n -elementowych (e1,e2,..., e n ) takich, że e1є E1, e2 є E2, ..., e n є E n.

Każdy związek stopnia n > 2 można zanienić na n związków binarnych.

Jeśli klucz encji reprezentującej związek staje się długi (wieloczłonowy), warto rozważyć zastąpienie go kluczem prostym typu identyfikator.

Zbiory encji pozostające w związku nie muszą być różne. Pomiędzy tymi samymi zbiorami encji może zachodzić kilka różnych związków.

Związek IS_A (E1, E2) oznacza, że każda encja ze zbioru E1 jest także encją ze zbioru E2. Innymi słowy, zbiór encji E1 jest podzbiorem zbioru encji E2. Związek IS_A jest związkiem wbudowanym w model związków encji (ERM), typu 0..1: Każda encja e є E1 ma wszystkie atrybuty encji ze zbioru E2 i atrybuty dodatkowe, nie istniejące w zbiorze E2.

• Relacja (bazodanowa) – dowolny podzbiór

produktu kartezjańskiego skończonej liczby dziedzin prostych.

• Dziedzina jest prosta , jeżeli jej elementy są

nierozkładalne (atomowe). 0 0 4 Eiech D 1 , D 2 , ..., D (^) n są to dziedziny proste, 0< n <∞. D 1 х D 2 х ... х D n - produkt kartezjański tych dziedzin prostych: zbiór wszystkich krotek (d 1 , d 2 , ... d n ) takich, że d 1 є D 1 , d2 є D2, ..., d (^) n є D n. Liczba n to stopień relacji. Poszczególne pozycje krotek relacji nazywamy atrybutami relacji.

Relację reprezentujemy w postaci tabeli , w której każdy wiersz odpowiada jednej krotce, a każda kolumna jednemu atrybutowi. Nazwa kolumny jest nazwą atrybutu. Nazwy atrybutów nie mogą się powtarzać. Tablica jest tylko wygodną reprezentacją, a nie relacją.

Własności relacji:

• w relacji nie ma dwóch identycznych krotek,

ponieważ relacja jest matematycznym zbiorem,

• krotki nie są uporządkowane, ponieważ relacja

jest matematycznym zbiorem,

• wartości atrybutów są atomowe.

• Klucz relacji (klucz kandydujący) – atrybut (lub

zbiór atrybutów) relacji spełniający warunki: jednoznaczności i minimalności.

Każda relacja ma klucz główny.

Klucze relacji – warunki:

• integralność encji — żaden atrybut wchodzący

w skład klucza głównego relacji nie może przyjmować wartości pustych (NULL),

• integralność referencyjna — jeśli relacja R

zawiera klucz obcy FK odpowiadający kluczowi głównemu PK pewnej relacji R1, wówczas każda wartość FK:

(i) albo być równa wartości PK w

pewnej krotce R1,

(ii) albo musi być cała równa NULL

Reprezentacja zbiorów encji: Każdy zbiór encji reprezentujemy jako oddzielną relację o kluczu głównym równym kluczowi głównemu zbioru encji.

Reprezentacja związków pomiędzy zbiorami encji: Związki „jeden do jeden” Reprezentujemy przez klucz obcy wstawiony do dowolnej z dwóch relacji. Związki „jeden do wiele” Reprezentujemy przez klucz obcy wstawiony do relacji po stronie n związku. Związki „wiele do wiele” Reprezentujemy przez oddzielną relację o kluczu będącym złożeniem kluczy głównych związanych zbiorów encji.

• Algebra relacji – zestaw operatorów, które mogą

być stosowane w stosunku do relacji.

• Operatory oznaczone * są prymitywne , tzn. żaden

z nich nie może być wyrażony jako kombinacja pozostałych.

Wynikiem każdego operatora algebry relacji jest relacja. Zatem algebra relacji jest domknięta. Umożliwia to budowę dowolnie zagnieżdżonych wyrażeń relacyjnych.

• Dwie relacje są zgodne (kompatybilne) jeśli:

• mają ten sam stopień n ,

• i -te atrybuty każdej z nich ( i =1, ... n ) mają tę

samą dziedzinę.

Jak wybrać tylko określone atrybuty relacji? Do takich celów służy operacja projekcji (PROJECT).

Jak wybrać tylko określone krotki relacji? Do takich celów służy operacja selekcji (SELECT).

Jak powiązać ze sobą dane z dwóch relacji? Do takich celów służy operacja złączenia (JOIN). Złączenie można stosować do kilku tablic. Złączenia są zwykle składane z projekcją, w przeciwnym razie wynik może mieć bardzo dużą liczbę kolumn.

• SQL interakcyjny – instrukcje wprowadzane

interakcyjnie, wyniki natychmiast prezentowane użytkownikowi w sposób ustalony przez DBMS (SQL nie zawiera żadnych instrukcji we/wy ani formatujących).

• SQL zanurzony – instrukcje są zamieszczone w

programie napisanym w innym języku (3GL lub

4GL); wyniki mogą być przekazane do zmiennych programu.

Składniki SQL: Data Definition Language (DDL) + Data Manipulation Language (DML) + Data Control Language (DCL).

TWORZENIE TABLIC:

Typy danych: INTEGER, SMALLINT – liczba całkowita (zakres zależy od DBMS) DECIMAL[(m[,n])], NUMERIC[(m[,n])] – stałoprzecinkowa liczba rzeczywista o m cyfrach znaczących i n cyfrach po przecinku FLOAT[( m )] – zmiennoprzecinkowa liczba rzeczywista o m cyfrach REAL – to samo co DECIMAL DOUBLE PRECISION – to samo co FLOAT CHARACTER( n ) – łańcuch znaków o długości do n znaków (separator: „lub”) DATE – data LOGICAL – wartości logiczne: yes/no, false/ true Inne typy danych: VARCHAR, DATETIME, MONEY, TEXT, IMAGE, BLOB, CLOB ... Opcje (przykładowe): NOT NULL [UNIQUE] – w kolumnie musi być wartość, jeśli UNIQUE to unikatowa [NOT] CASE-SENSITIVE – określa, czy przy porównywaniu wartości w kolumnie znakowej ma być brana pod uwagę wielkość liter COLUMN-LABEL łańcuch – etykieta (nagłówek) kolumny przy wyświetlaniu tabelarycznym LABEL łańcuch – etykieta kolumny przy wyświetlaniu swobodnym FORMAT łańcuch – format wyświetlania wartości kolumny DEFAULT wartość-początkowa – domyślna wartość kolumny AUTOINCREMENT – powoduje automatyczne nadawanie wartości kolumny przez system podczas wstawiania nowego wiersza PRIMARY KEY – określa kolumnę jako klucz główny REFERENCES [ nazwa tablicy ] – określa kolumnę jako klucz obcy

Zmiana schematu tablicy: ALTER TABLE < nazwa tablicy > {ADD COLUMN < kolumna > < typ danych > [opcje]| DROP COLUMN < kolumna >| ALTER COLUMN < kolumna > [opcje] } Wstawianie danych do tablicy: INSERT INTO < nazwa tablicy > [(< lista kolumn >)] VALUES (< lista wartości >)

SELECT – przegląd: SELECT [DISTINCT] < lista kolumn/wyrażeń > FROM < lista tablic > [ WHERE < warunek >] [ GROUP BY < lista kolumn >] [ HAVING < warunek >] [ UNION < instrukcja SELECT >] [ ORDER BY < lista kolumn/numerów >]

• SELECT – określa, które kolumny z tablic

podanych we frazie FROM mają zostać włączone do wyniku (projekcja). Dodatkowo, mogą zostać włączone wyrażenia.

• DISTINCT – powoduje wyeliminowanie

duplikatów (wierszy powtarzających się).

• FROM – określa tablice, na jakich działa

instrukcja SELECT. Jeśli jest kilka tablic, dokonywany jest produkt kartezjański tych tablic.

• WHERE – określa warunki wyboru wierszy z

tablic wymienionych we frazie FROM (selekcja).

• GROUP BY – powoduje wiązanie wierszy

wynikowych w grupy o jednakowych wartościach we wskazanych kolumnach, a następnie redukowanie tych grup do pojedynczych wierszy.

• HAVING – określa warunki wyboru dla

wierszy powstałych w wyniku działania frazy GROUP BY.

• UNION – oblicza sumę wyników dwóch

instrukcji SELECT, eliminując duplikaty (unia).

• ORDER BY – porządkuje wiersze wynikowe

rosnąco lub malejąco według wartości wskazanych kolumn/wyrażeń

SELECT – zapytania proste: SELECT [DISTINCT] < lista kolumn/wyrażeń > FROM < nazwa tablicy > [WHERE < warunek >] Zapytanie proste przeprowadza kombinację projekcji i selekcji (jeśli występuje fraza WHERE) w stosunku do jednej tablicy. Uwaga: < lista kolumn > może przybrać formę * (co oznacza wybór wszystkich kolumn)

Wyrażenia: Operatory języka SQL występujące w wyrażeniach we frazie SELECT, WHERE i in: Operatory arytmetyczne: ** ^ - potęgowanie

  • / - dzielenie
      • dodawanie, odejmowanie Operatory logiczne: NOT AND OR Operatory porównania: = > < >= <= <> Operatory specjalne: IN BETWEEN LIKE MATCHES Operatory porównania z wartością pustą: IS NULL IS NOT NULL Funkcje agregujące: COUNT() – zwraca liczbę wierszy wybranych w zapytaniu AVG() – oblicza średnią arytmetyczną w kolumnie numerycznej SUM() – sumuje wartości kolumn numerycznych MIN() – znajduje wartość minimalną w kolumnie znakowej, numerycznej lub daty MAX() – znajduje wartość maksymalną

Operatory specjalne: IN – sprawdza, czy wartość w kolumnie jest równa jednej z wartości określonej na liście wartości lub będących wynikiem instrukcji SELECT. BETWEEN – sprawdza, czy wartość w kolumnie jest zawarta w przedziale wartości. LIKE – porównuje zawartość kolumny znakowej z łańcuchem znaków, który może zawierać symbole wieloznaczne (wildcards). Łańcuch ze znakami wieloznacznymi to wzorzec.

Symbole wieloznaczne: _ (podkreślenie) – pasuje do dowolnego pojedynczego znaku, % (procent) – pasuje do dowolnej liczby dowolnych znaków. CONTAINS – sprawdza, czy wartość w kolumnie znakowej zawiera wskazany łańcuch.

Funkcje agregujące: COUNT() COUNT(*) – zwraca liczbę wierszy w tablicy wynikowej COUNT(DISTINCT < nazwa kolumny >) – zwraca liczbę różnych wartości we wskazanej kolumnie.

SUM([DISTINCT] < nazwa kolumny >) MIN([DISTINCT] < nazwa kolumny >) MAX([DISTINCT] < nazwa kolumny >) AVG([DISTINCT] < nazwa kolumny >) Zwracają odpowiednio: sumę, minimum, maksimum i średnią z wartości podanej kolumny. Dla SUM() i AVG() kolumna musi być numeryczna, dla MIN() i MAX() kolumna może być też kolumną znakową lub daty.

SELECT – porządkowanie wyników: Bez frazy ORDER BY wyniki zapytania ukazują się w porządku nieokreślonym (zwykle w porządku wstawienia ich do tablicy). ORDER BY < nazwa kolumny/numer > [ASC/ DESC] [,< nazwa kolumny/numer > [ASC/DESC]...] Uwagi:

1. Numer kolumny we frazie ORDER

BY oznacza pozycję kolumny na liście wyboru instrukcji SELECT. Trzeba go użyć, jeśli porządkujemy wg wartości wyrażenia.

2. Domyślnie przyjmowany jest

porządek rosnący (ASC).

SELECT – grupowanie: GROUP BY < nazwa kolumny > [,< nazwa kolumny >...] [HAVING < warunek >] Fraza ta powoduje powiązanie ze sobą wierszy wynikowych z instrukcji SELECT w grupy wierszy, w których wskazane we frazie GROUP BY kolumny mają tę samą wartość. Następnie każda grupa jest redukowana do pojedynczego wiersza. W tym wierszu występują kolumny z frazy GROUP BY oraz ew. kolumny będące wynikiem funkcji agregujących. Funkcje te wówczas działają na każdej grupie osobno. Następnie eliminowane są wiersze nie spełniające warunku HAVING. Uwagi:

1. Każda kolumna występująca we

frazie GROUP BY musi wystąpić na liście wyboru instrukcji SELECT i na odwrót.

2. W warunku HAVING może

wystąpić funkcja agregująca (ale nie w warunku WHERE!).

SELECT – złączenia: Jeśli fraza FROM zawiera więcej niż jedną tablicę, instrukcja SELECT wykonuje produkt kartezjański (operator TIMES) wskazanych tablic. Jeśli dodatkowo występuje fraza WHERE, wykonywana jest operacja relacyjnego złączenia.

• Złączenie tablicy z tą samą tablicą nazywamy

samozłączeniem. Samozłączenie umożliwia wiązanie ze sobą informacji zawartych w różnych wierszach. Do dokonania samozłączenia konieczne jest zastosowanie aliasów (nazw korelacji).

SELECT – podzapytania:

W podzapytaniu instrukcja SELECT jest zagnieżdżona we frazie WHERE lub HAVING. Zagnieżdżona instrukcja SELECT, zwana zapytaniem wewnętrznym , dostarcza wartości dla warunku WHERE lub HAVING. Instrukcja SELECT zawierająca podzapytanie to zapytanie zewnętrzne. W warunku WHERE może wystąpić operator EXISTS ( predykat ). EXISTS zwraca True, jeśli podzapytanie zwraca choć jeden wiersz, a False w przeciwnym wypadku.

Wstawianie danych z innych tablic: INSERT INTO < nazwa tablicy > [(< lista kolumn >)] < instrukcja SELECT > Cel: wstawienie do jednej tablicy wierszy wybranych z innej tablicy lub innych tablic.

Zachowanie wyników zapytania: Niektóre DBMS pozwalają na zachowanie wyników instrukcji SELECT w tablicy tymczasowej, przez zastosowanie frazy podobnej do poniższej: INTO TEMP < nazwa tablicy > (< lista kolumn >) Tablica tymczasowa jest tworzona przez instrukcję SELECT zgodnie z typami danych umieszczonych na liście wyboru instrukcji SELECT. Tablica taka jest automatycznie kasowana podczas zamykania bazy danych przez bieżącego użytkownika. Tablica tymczasowa może być używana we frazach FROM następnych instrukcji SELECT. W ten sposób można rozbijać skomplikowane zapytania na kilka etapów. Niektóre systemy DBMS nie dają możliwości bezpośredniego zachowywania wyników instrukcji SELECT w tablicy tymczasowej. W takich wypadkach należy jawnie utworzyć nową tablicę i zastosować „wsadową” wersję instrukcji INSERT.

Aktualizowanie danych: UPDATE < nazwa tablicy > SET < nazwa kolumny > = < wyrażenie > [,< nazwa kolumny > = < wyrażenie >...] [WHERE < warunek >] Cel: zmiana wartości w kolumnach jednego lub wielu wierszy tablicy.

Usuwanie danych: DELETE FROM < nazwa tablicy > [WHERE < warunek >] Cel: usunięcie z tablicy jednego lub wielu wierszy.

SELECT – sumowanie tablic: < instrukcja SELECT > UNION < instrukcja SELECT > Cel: Realizacja operacji algebry relacji UNION w stosunku do tablic będących wynikiem instrukcji SELECT. Tablice muszą być zgodne. Uwagi:

1. Z tablicy wynikowej usuwane są

wiersze powtarzające się (duplikaty).

2. Jeśli nazwy kolumn sumowanych

tablic są różne, tablica wynikowa przyjmuje nazwy kolumn z pierwszej tablicy.

3. Jeśli po UNION występuje fraza

ORDER BY, muszą w niej występować numery, a nie nazwy kolumn.

Tworzenie indeksów: CREATE [UNIQUE] INDEX < nazwa indeksu > ON < nazwa tablicy > (< nazwa kolumny > [ASC/DESC] [,< nazwa kolumny > [ASC/DESC]...]}; Cel: tworzy indeks na określonych kolumnach, zwanych kluczami indeksu. Domyślnie indeks jest rosnący (ASC). Fraza UNIQUE oznacza, że kolumny indeksu zawierają wartości niepowtarzalne. Co to jest indeks? Jest to tablica zawierająca w jednej kolumnie wartości klucza, a w drugiej adresy wierszy w indeksowanej tablicy, które zawierają te wartości. Do czego służy?

1. Pozwala zwiększyć efektywność

przetwarzania żądań dostępu do danych z tablicy (instrukcji SELECT).

2. Porządkuje wiersze tablicy w

określonym porządku.

3. Zapobiega powtarzaniu się wartości

w wierszach tablicy. Kiedy tworzyć indeks?

1. Gdy tablica jest często przetwarzana

sekwencyjnie zgodnie z wartościami pewnej kolumny (rosnąco lub malejąco).

2. Gdy konieczne jest zachowanie

unikatowości wartości kolumn(y).

3. Gdy dostęp do tablicy jest często

realizowany zgodnie z wartościami danej kolumny lub kolumn ( dostęp asocjacyjny ) Jaki jest koszt?

1. Koszt pamięciowy (utrzymywanie

dodatkowych danych).

2. Koszt czasowy (konieczność

aktualizacji indeksu podczas aktualizowania tablicy (instrukcje INSERT, UPDATE, DELETE).

Widoki:

• widok ( wirtualna tablica ) – kombinacja wierszy i

kolumn wybranych z jednej lub kilku tablic. Po utworzeniu widoku można na nim wykonywać

instrukcje SELECT jak na zwykłej tablicy. W bazie danych (w słowniku danych) pamiętana jest jedynie definicja widoku. Widok jest materializowany w razie potrzeby.

• Korzyści ze stosowania widoków:

• Te same dane mogą być widziane w różny

sposób przez różnych użytkowników.

• Pozwalają koncentrować się na danych

istotnych, a ignorować inne.

• Wprowadzają dodatkowy poziom niezależności

od danych. Jeśli zmieni się coś w schemacie bazy danych, często wystarczy zmienić definicję widoku, nie zmieniając programu.

• Wprowadzają ochronę danych przez ich

ukrycie: użytkownicy „widzą” tylko widoki, czyli te dane, do których mają prawo dostępu.

• Różnice między widokami a tablicami:

• Widoki nie zawierają danych; zawierają tylko

informacje, jak zebrać te dane w razie potrzeby (tzn. z jakich tablic, z jakich kolumn i w jaki sposób).

• Widoków nie można indeksować (ale można

indeksować tablice wchodząc w skład widoku).

• W ogólności, nie można aktualizować danych

poprzez widok.

Tworzenie widoków: CREATE VIEW < nazwa widoku > [< lista kolumn >] AS < instrukcja SELECT > [WITH CHECK OPTION] Cel: utworzenie widoku. Opcjonalna < lista kolumn > określa nazwy kolumn widoku. Jeśli jej nie ma, nazwy kolumn pochodzą z instrukcji SELECT widoku. WITH CHECK OPTION – gwarantuje, że wszystkie aktualizacje widoku (jeśli widok jest aktualizowany) spełniają warunki występujące we frazie WHERE instrukcji SELECT.

Aktualizowanie widoków: Widok może nie być aktualizowany. Zależy to od ograniczeń na aktualizowanie widoków nałożonych przez konkretny DBMS Przykładowe ograniczenia:

• instrukcja SELECT nie zawiera fraz

DISTINCT, GROUP BY, HAVING,

• instrukcja SELECT nie zawiera na liście

wyboru wyrażeń ani funkcji agregujących,

• we frazie FROM występuje tylko jedna tablica,

• we frazie WHERE nie występuje podzapytanie,

• na liście kolumn widoku występuje klucz

główny tablicy występującej we frazie FROM.

Usuwanie tablic, indeksów i widoków: DROP TABLE < nazwa tablicy > Cel: skasowanie istniejącej tablicy. Kasowane są wszystkie dane z tablicy. Kasowane są także wszystkie indeksy i widoki zdefiniowane na tej tablicy. DROP INDEX < nazwa indeksu > Cel: skasowanie istniejącego indeksu. Nie wpływa na indeksowaną tablicę. DROP VIEW < nazwa widoku > Cel: skasowanie istniejącego widoku. Nie wpływa na tablice występujące w definicji widoku.

Kursory:

• Kursor – wskaźnik służący do sekwencyjnego

poruszania się po zbiorze wynikowym zapytania. W danym momencie wskazuje na jeden wiersz ze zbioru wynikowego. Kursory są elementem zanurzonego języka SQL. Umożliwiają:

• sekwencyjne przetwarzanie przez program

wyników zapytania,

• pobieranie wartości kolumn z wierszy

pobranych przy użyciu instrukcji SELECT,

• przypisywanie zmiennym programowym

wartości pobranych z kolumn. Po ustaleniu pozycji kursora na wierszu można:

• uaktualnić wiersz,

• usunąć wiersz,

• przetworzyć wiersz

Fazy użycia kursora:

  1. Deklaracja kursora: DECLARE CURSOR
  2. Otwarcie kursora: OPEN
  3. Pobranie danych: FETCH i po zakończeniu operowania kursorem
  4. Zamknięcie kursora: CLOSE DECLARE CURSOR – kojarzy nazwę kursora z instrukcją SELECT OPEN – wybiera wszystkie wiersze, które spełniają warunki instrukcji DECLARE CURSOR, po czym ustawia kursor na pozycję przed pierwszym wierszem. FETCH – pobiera kolejny wiersz i przypisuje wartości z kolumn do zmiennych programowych. Ustawia kursor na pozycji przed następnym wierszem lub, jeśli nie ma następnego wiersza, po ostatnim wierszu. UPDATE (pozycyjna) – modyfikuje wiersz, na który wskazuje kursor.

DELETE (pozycyjna) – usuwa wiersz, na który wskazuje kursor. CLOSE – zamyka kursor. DECLARE < nazwa kursora > CURSOR FOR < instrukcja SELECT > [FOR{READ [ONLY]|UPDATE}] nazwa kursora – określa nazwę nowego kursora, instrukcja SELECT – określa zbiór wierszy, który będzie dostępny po otwarciu kursora, FOR READ [ONLY] – określa, że wiersze pobierane przez kursor, nie mogą być modyfikowane, FOR UPDATE – określa, że wiersze pobierane przez kursor mogą być modyfikowane (o ile instrukcja SELECT nie zawiera UNION). OPEN < nazwa kursora > CLOSE < nazwa kursora > nazwa kursora – nazwa otwartego kursora Uwaga: Po ponownym otwarciu kursora system pobiera od nowa wynikowy zbiór wierszy, który może różnić się od zbioru poprzedniego. FETCH < nazwa kursora > INTO < lista zmiennych > lista zmiennych – lista zmiennych programowych, do których są przekazywane wartości kolumn. DELETE FROM < nazwa tablicy > WHERE CURRENT OF < nazwa kursora >

UPDATE < nazwa tablicy > SET < nazwa kolumny > = {NULL | < wyrażenie >} [,< nazwa kolumny > = {NULL | < wyrażenie >}]... WHERE CURRENT OF < nazwa kursora > Fraza WHERE CURRENT OF nazwa kursora identyfikuje kursor wskazujący na wiersz, który ma zostać usunięty lub zaktualizowany.

Relacyjna zupełność SQL:

• Język zapytań jest relacyjnie zupełny , jeśli dla

dowolnego wyrażenia algebry relacji istnieje równoważne mu wyrażenie tego języka. SQL jest relacyjnie zupełny.

Normalizacja relacyjnych baz danych:

• Redundancja danych

• Druga postać normalna (2NF)

• Trzecia postać normalna (3NF)

• Czwarta postać normalna (4NF)

Normalizacja – przegląd: Tablica PARTICIPANTS wykazuje wiele niepożądanych cech wynikających z redundacji (wiele danych jest powtórzonych). Celem normalizacji jest usunięcie redundancji tak, by jedna informacja była przechowywana w bazie danych tylko jeden raz.

Zależności funkcjonalne:

• Atrybut Y zależy funkcjonalnie od atrybutu X

(oznaczenie X -> Y) F 0 F 3w każdym momencie dla każdej wartości X istnieje dokładnie jedna wartość Y.

• Innymi słowy, jeśli istnieją w R dwie krotki z tą

samą wartością X, to mają też tę samą wartość Y.

Druga postać normalna:

• Atrybut Y zależy w pełni funkcjonalnie od atrybutu

X F 0 F 3Y zależy funkcjonalnie od X i nie zależy funkcjonalnie od żadnego podzbioru właściwego X.

• Relacja jest w drugiej postaci normalnej ( 2NF ) F 0 F 3

• jest w 1NF

• każdy atrybut niekluczowy zależy w pełni

funkcjonalnie od klucza głównego.

Trzecia postać normalna:

• Zależność funkcjonalna X -> Y jest przechodnia F 0 F 3

istnieje atrybut Z (Z ≠ X, Z ≠ Y) taki, że X ->Z i Z ->Y.

• Relacja jest w trzeciej postaci normalnej ( 3NF ) F 0 F 3

• jest w 2NF

• żaden atrybut niekluczowy nie zależy

przechodnio od klucza głównego.

Postać normalna Boyce’a-Codda:

• relacja jest w postaci normalnej Boyce’a-Codda

(BCNF) F 0 F 3każdy wyznacznik jest kluczem kandydującym.

Czwarta postać normalna:

• Relacja jest w czwartej postaci normalnej (4NF) F 0 F 3

• jest w 3NF

• nie zawiera dwóch lub więcej zależności

wielowartościowych

Zależności wielowartościowe:

• Pomiędzy atrybutami X i Y zachodzi zależność

wielowartościowa (X ->-> Y) F 0 F 3dla każdej wartości X istnieje zbiór możliwych wartości Y i ten zbiór nie zależy od Z.