Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
Informatyka: notatki z zakresu elementów informatyki odnoszące się do bazy danych,definicje najważniejszych pojęć.
Typologia: Notatki
1 / 3
powiązanych ze sobą logicznie danych, zorganizowany zgodnie z określonym modelem 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ń
przechowujące dane.
Management System) – oprogramowanie zarządzające dostępem do baz danych.
pomocą którego użytkownik komunikuje się z bazą danych.
Środki służące zwiększeniu niezawodności pamięci zewnętrznej:
Funkcje DBMS:
poziomie fizycznym
danych
sprawująca kontrolę nad dostępem do bazy danych i nad jej funkcjonowaniem
Zadania DBA:
do bazy danych
odtwarzania danych po awariach
danych Narzędzia do dyspozycji DBA:
zewnętrznych
analizowania
danych
zawierająca informacje o danych przechowywanych w innych bazach danych
Zawartość słownika danych:
bazie danych
bazie danych Dostęp do słownika danych:
i to tylko pewnych fragmentów słownika
słownika, jednak jego modyfikowanie może wykonywać tylko poprzez procedury systemowe
Architektura systemu baz danych:
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ń
Zawiera model konceptualny bazy. Model ten obejmuje całą zawartość bazy, tak jak ją widzi administrator lub właściciel bazy
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:
przechowywania danych
bez zmian w programie.
Niezależność programu od danych oznacza sytuację odwrotną. Korzyści:
pamięciowe,
dysku i nowe metody dostępu
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.
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).
określonych kryteriów) encji. Encje w zbiorze encji są rozróżniane przez wartości atrybutów. Własności atrybutów zbioru encji:
niepodzielne, czyli atomowe )
Klucz zbioru encji. Własności klucza zbioru encji:
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ę.
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.
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.
produktu kartezjańskiego skończonej liczby dziedzin prostych.
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:
ponieważ relacja jest matematycznym zbiorem,
jest matematycznym zbiorem,
zbiór atrybutów) relacji spełniający warunki: jednoznaczności i minimalności.
Każda relacja ma klucz główny.
Klucze relacji – warunki:
w skład klucza głównego relacji nie może przyjmować wartości pustych (NULL),
zawiera klucz obcy FK odpowiadający kluczowi głównemu PK pewnej relacji R1, wówczas każda wartość FK:
pewnej krotce R1,
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.
być stosowane w stosunku do relacji.
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.
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.
interakcyjnie, wyniki natychmiast prezentowane użytkownikowi w sposób ustalony przez DBMS (SQL nie zawiera żadnych instrukcji we/wy ani formatujących).
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).
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 >]
podanych we frazie FROM mają zostać włączone do wyniku (projekcja). Dodatkowo, mogą zostać włączone wyrażenia.
duplikatów (wierszy powtarzających się).
instrukcja SELECT. Jeśli jest kilka tablic, dokonywany jest produkt kartezjański tych tablic.
tablic wymienionych we frazie FROM (selekcja).
wynikowych w grupy o jednakowych wartościach we wskazanych kolumnach, a następnie redukowanie tych grup do pojedynczych wierszy.
wierszy powstałych w wyniku działania frazy GROUP BY.
instrukcji SELECT, eliminując duplikaty (unia).
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
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:
BY oznacza pozycję kolumny na liście wyboru instrukcji SELECT. Trzeba go użyć, jeśli porządkujemy wg wartości wyrażenia.
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:
frazie GROUP BY musi wystąpić na liście wyboru instrukcji SELECT i na odwrót.
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.
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:
wiersze powtarzające się (duplikaty).
tablic są różne, tablica wynikowa przyjmuje nazwy kolumn z pierwszej tablicy.
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?
przetwarzania żądań dostępu do danych z tablicy (instrukcji SELECT).
określonym porządku.
w wierszach tablicy. Kiedy tworzyć indeks?
sekwencyjnie zgodnie z wartościami pewnej kolumny (rosnąco lub malejąco).
unikatowości wartości kolumn(y).
realizowany zgodnie z wartościami danej kolumny lub kolumn ( dostęp asocjacyjny ) Jaki jest koszt?
dodatkowych danych).
aktualizacji indeksu podczas aktualizowania tablicy (instrukcje INSERT, UPDATE, DELETE).
Widoki:
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.
sposób przez różnych użytkowników.
istotnych, a ignorować inne.
od danych. Jeśli zmieni się coś w schemacie bazy danych, często wystarczy zmienić definicję widoku, nie zmieniając programu.
ukrycie: użytkownicy „widzą” tylko widoki, czyli te dane, do których mają prawo dostępu.
informacje, jak zebrać te dane w razie potrzeby (tzn. z jakich tablic, z jakich kolumn i w jaki sposób).
indeksować tablice wchodząc w skład widoku).
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:
wyboru wyrażeń ani funkcji agregujących,
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:
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ą:
wyników zapytania,
pobranych przy użyciu instrukcji SELECT,
wartości pobranych z kolumn. Po ustaleniu pozycji kursora na wierszu można:
Fazy użycia kursora:
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:
dowolnego wyrażenia algebry relacji istnieje równoważne mu wyrażenie tego języka. SQL jest relacyjnie zupełny.
Normalizacja relacyjnych baz danych:
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:
(oznaczenie X -> Y) F 0 F 3w każdym momencie dla każdej wartości X istnieje dokładnie jedna wartość Y.
samą wartością X, to mają też tę samą wartość Y.
Druga postać normalna:
X F 0 F 3Y zależy funkcjonalnie od X i nie zależy funkcjonalnie od żadnego podzbioru właściwego X.
funkcjonalnie od klucza głównego.
Trzecia postać normalna:
istnieje atrybut Z (Z ≠ X, Z ≠ Y) taki, że X ->Z i Z ->Y.
przechodnio od klucza głównego.
Postać normalna Boyce’a-Codda:
(BCNF) F 0 F 3każdy wyznacznik jest kluczem kandydującym.
Czwarta postać normalna:
wielowartościowych
Zależności wielowartościowe:
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.