n224 ;)
1. Baza danych :
- Duży zbiór danych o określonej strukturze, która umożliwia ich szybkie wyszukiwanie i
wydobywanie
-
Baza danych
– kolekcja danych zapisanych zgodnie z określonymi regułami. W węższym
znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zas
adami przyjętymi dla
danego programu komputerowego specjalizowanego do gromadzenia i przetwarzania tych
danych. Program taki (często pakiet programów) nazywany jest "Systemem zarządzania bazą
danych" (ang. DataBase Management System, DBMS).
- Typy baz danych [wymienione na wykladzie] :
-> Model sieciowy
-> Model Hierarchiczny
-> Model relacyjny
-> Model obiektowy
-> Model realcyjno-obiektowy
2. DBMS – DataBase Managment System:
- Zbiór prograów, bibliotek i narzędzi które zwalniają programistę od pamiętania o szczegółach
przechowywania i zarządzania danymi.
3. Model sieciowy:
- Model sieciowej bazy danych korzysta z dwóch podstawowych elementów: rekordów i
zbiorów.
- Rekordy zawierają pola przechowujące dane.
- Zbiory określają relację jeden-do-wielu między rekordami, gdzie jeden rekord jest
„właścicielem” zbioru zawierającego „członków” zbioru.
- Jeden rekord może byd zarówno „właścicielem” jak i „członkiem” wielu zbiorów.
- Wykorzystuje tzw. Pomysł wskaźników wewnątrz struktury danych
- Wada jest kosztowne przeszukiwanie
4. 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 byd struktura katalogów na
dysku twardym komputera.
5. 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śd jednoznacznie identyfikuje dany wiersz.
Wyszukiwanie danych odbywa się za pomocą odwołania się programu do danego klucza i
identyfikacji danego wiersza za jego pomocą.
6. Krotka (TUPLE):
- 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 -
n224 ;)
nie można zmodyfikowad żadnego elementu, odczyt natomiast wymaga podania indeksu
liczbowego żądanego elementu.
7. Klucz:
- Atrybut służący do rozróżnienia rekordów, które niczym innym się nie różnią. Może to byc
kombinacja jednego, lub większej liczby atrybutów.
8. Relacja:
-Relacja jest zbiorem dziedzin, które wspólnie opisują rzecz lub zdarzenie w realnym świecie
- Każdy atrybut składa sięz nazwy oraz nazwy dziedziny, z której atrybut pobiera dane
- Relacja składa się z dwóch części – nagłowka, oraz treści
- Każda krotka jest unikatowa wewnątrz relacji
- Każda krotka może zostac jednoznacznie zidentyfikowana za pomocą przynajmniej jednego
klucza podstawowego
- Krotka może zawierac jeden lub więcej kluczy obcych, z których każdy indentyfikuje jedną lub
więcej krotek w tej samej lub innej relacji
9. Algebra relacyjna :
- Łączenie
- Przecięcie
- Różnica
- Iloczyn Kartezjaoski
- Ograniczenie
- Projekt
- Scalanie
- Podział
- Porównanie
- Rozszerzenie
- Wstawianie
- Uaktualnianie
- Usuwanie
10. 12 Reguł Codd’a:
- Postulat informacyjny - dane są reprezentowane jedynie poprzez wartości atrybutów w
wierszach tabel,
- Postulat dostępu - każda wartośd w bazie danych jest dostępna poprzez podanie nazwy tabeli,
atrybutu oraz wartości klucza podstawowego,
- Postulat dotyczący wartości NULL - dostępna jest specjalna wartośd NULL dla reprezentacji
wartości nieokreślonej jak i nieadekwatnej, inna od wszystkich i podlegająca przetwarzaniu
- Postulat dotyczący katalogu - wymaga się, aby system obsługiwał wbudowany katalog relacyjny
z bieżącym dostępem dla uprawnionych użytkowników używających języka zapytao,
- Postulat języka danych - system musi dostarczad pełnego języka przetwarzania danych, który
może byd używany w trybie interaktywnym jak i w obrębie programów aplikacyjnych, obsługuje
operacje definiowania danych, operacje manipulowania danymi, ograniczenia związane z
bezpieczeostwem i integralnością oraz operacje zarządzania transakcjami,
n224 ;)
- Postulat modyfikowalności perspektyw - system musi umożliwiad modyfikowanie perspektyw,
o ile jest ono (modyfikowanie) semantycznie realizowalne,
- Postulat modyfikowalności danych - system musi umożliwiad operacje modyfikacji danych,
musi obsługiwad operatory INSERT, UPDATE oraz DELETE,
- Postulat fizycznej niezależności danych - zmiany fizycznej reprezentacji danych i organizacji
dostępu nie wpływają na aplikacje,
- Postulat logicznej niezależności danych - zmiany wartości w tabelach nie wpływają na aplikacje,
- Postulat niezależności więzów spójności - więzy spójności są definiowane w bazie i nie zależą
od aplikacji,
- Postulat niezależności dystrybucyjnej - działanie aplikacji nie zależy od modyfikacji i dystrybucji
bazy,
- Postulat bezpieczeostwa względem operacji niskiego poziomu - operacje niskiego poziomu nie
mogą naruszad modelu relacyjnego i więzów spójności.
11. SQL :
- Structured Query Language
- Strukturalny język zapytao używany do tworzenia, modyfikowania baz danych oraz do
umieszczania i pobierania danych z baz danych.
Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych
pozostawia się systemowi zarządzania bazą danych (DBMS).
12. Sposoby uzycia SQL’a :
- Interaktywny – zwykle wykorzystywany w systemach zarządzania bazami danych (DBMS),
wymaga interaktywnego wpisania polecenia i wynik zostaje wyprowadzony na standardowe
wyjście w domyślnym formacie
- Ukryty (embedded) – Każde polecenie jest poprzedzone prefixem wyróżniającym je spośród
języka SQL np. EXEC_SQL(...)
- Interfejs pozoimu wywołao(CLI – call-level Interface) – język przeglądarki implementuje serie
wywołao, z których każde stanowi odpowiednik rozkazów SQL (C,Perl,Php,Java)
13. Podstawowe komponenty SQL’a :
- Data definition language
- Data manipulation language
- Data query language
- Data controll language
14. Polecenie CREATE:
- Mozemy tworzyc, Table, View, Index
Ex. Create Table
15. Polecenie ALTER:
- Modyfikujemy TABLE
Ex. Alter Table
16. Polecenie DROP:
- Usuwamy to co mozemy stworzyc [TABLE,VIEW,INDEX]
Ex. Drop Table
17. Podstawowe typy danych w PSQL’u :
n224 ;)
- Integer – liczba całkowita
- Char – tablica znaków o stałym rozmiarze
- Varchar – tablica znaków o zmiennym rozmiarze
- Date – Data
- Numeric – liczba zmiennoprzecinkowa
- NULL – wartosc nieznana [pusta]
- Blob – duży obiekt binarny
- Bit(n) – tablica bitów o długości n
- Nchar(n) – tablica znaków narodowych
- Boolean – wartosc ‘true’/’false’
- Money – walutowa
- Serial ... – automatycznie inkrementowana [serial primary key]
18. Atrybuty nowo tworzonego pola w PSQL:
- NOT NULL – pole w bazie MUSI byc wypelnione przy tworzeniu nowego rekordu
- DEFAULT – mozliwosc przypisania wartosci domślnej
- AUTO INCREMENT – powoduje automatyczne zwiększanie wartości przy dodaniu nowego
rekordu
19. Zapytania(kwerendy), zapytania podrzędne:
- Użytkownik serwera baz danych (program lub osoba) wysyła do niego zapytanie, na które
serwer odpowiada przesyłając oczekiwane dane, czyli wynik zapytania. Zapytania mogą mied na
celu wyłącznie pobranie danych (tzw. zapytania wybierające), jak i usuwanie, dodawanie czy
modyfikację danych (tzw. zapytania funkcjonalne).
- W PSQL używamy polecenia „SELECT”, który zwraca na wyjście wynik zapytania
- SELECT można zagnieżdzac
- Zapytanie podrzędne ma miejsce wtedy kiedy tworzymy jeden (lub więcej) warunków where
instrukcji SELECT
Ex. Select * from item where cena>(select AVG(cena))
20. Zapytania podrzędne skorelowane:
- Jest to zapytanie podrzędne, gdzie istnieje związek pomiędzy dwiema częściami zapytania
- Postac ogólna zapytania :
Select kA from Tab1 where Tab1.kB = (select Tab2.kB from Tab2 Where Tab2.kC = Tab1.kC)
[istnieje wspólna tabela dla zapytania zewnętrznego i wewnętrznego]
21. Uprawienia w PSQL:
- ZALACZNIK
22. Encja:
- Encja (ang. entity) w bazach danych to reprezentacja wyobrażonego lub rzeczywistego obiektu
(grupy obiektów) stosowana przy modelowaniu danych podczas analizy informatycznej.
Formalnie jest to pojęcie niedefiniowalne, a podstawową cechą encji jest to, że jest rozróżnialna
od innych encji.
23. Zbiór związków :
- Związki pomiędzy encjami, jeden do wielu, wiele do jednego, wiele do wielu
24. Atrybut:
n224 ;)
- Cecha charakterystyczna encji. Atrybut jest reprezentowany na diagramach Związków Encji
poprzez owal.
25. Zbiór encji:
- Zgrubowane encje o tej samej charakterystyce. Zbioór encji jest reprezentowany na ZE poprzez
prostokąt
26. Kryteria dobregu projektu Bazy Danych:
- Zdolnośc przechowywania potrzebnych informacji
- Zdolnośc obsługi wymaganych związków
- Zdolnośc rozwiązywania problemów
- Zdolnośc do narzucenia integralności danych
- Zdolnośc narzucania wydajności w przetwarzaniu danych
- Zdolnośc uwzględniania przyszłych zmian
27. Normalizacja baz danych:
- 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 bezpieczeostwo
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 wymagad rozbicia dużych tabel na mniejsze i przy każdym wykonywaniu zapytania
do bazy danych ponownego ich łączenia. Zmniejsza to wydajnośd, 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).
28. Etapy normalizacji:
- Pobieranie zbioru danych
- Przekształcenie nieznormalizowanego zbioru danych do 1NF
- 1NF -> 2NF
- 2NF -> 3NF
- 3NF -> postac normalna Boyce’a-Codda
- 3NF -> 4NF
- 4NF -> 5NF
ZAŁĄCZNIKI :
1. Komendy PSQL
2. Postacie normalne
3. Uprawienia w PSQL
n224 ;)
ZALACZNIK 1
Zakladanie bazy :
--> createdb nazwabazy
Usuwanie bazy :
--> dropdb nazwabazy
Pokazywanie relacji :
--> \d
--> \dt
Stworzenie tabeli :
--> CREATE TABLE nazwatabeli(parametry)
Usuniecie tabeli
--> DROP TABLE nazwatabeli
Typy danych :
--> serial primary key | klucz glowny
--> int
| integer
--> varchar(xx)
| ciag znakow
--> boolean
| true/false
--> date
| data
Wpisywanie danych :
--> INSERT INTO NazwaTabeli(kolumna1,kolumna2,kolumnaN) VALUES
('Tekst',liczba,Parametr)
Skladnia SELECT :
--> SELECT [kolumna] tabela [WHERE warunek][ORDER BY kolumna] | select *
from klient where id=3 order by nazwisko
Operatory :
--> >
--> <
--> =
--> <>
--> +
--> -
--> *
--> %
--> AND
--> BETWEEN | Between 3 and 7
--> IN() | Stosowany do porowanania wartosci np, select * from klient Where
imie IN('Jan','Stanislaw');
--> IS NULL
--> IS NOT NULL
Modyfikacja DANYCH :
--> UPDATE NazwaTabeli SET Nazwakolumny=Nowa_Wartosc where Warunek | update
klient set nazwisko='Kowalski' where id=2
--> UPDATE NazwaTabeli SET NazwaKolumny=NazwaTabeli2.wartosc from
NazwaTabeli2 where Warunek | przepisanie za pomoca drugiej tabeli
Usuwanie DANYCH :
--> DELETE FROM NazwaTabeli | Usuniecie wszystkich rekordow
--> DELETE FROM NazwaTabeli WHERE Warunek | usuniecie na bazie warunku
Modyfikacja STRUKTURY TABELI :
--> ALTER TABLE NazwaTabeli ADD NazwaKolumny TypTejKolumny | Dodajemy nowa
kolumne do istniejacej tabeli o podanym typie
Operacje na bazie SELECT :
--> SELECT 2+2;
n224 ;)
--> SELECT sin(0.3);
--> SELECT log(10);
--> SELECT sum(id) from klient;
--> SELECT now();
Klucze obce w kodzie :
--> ALTER TABLE NazwaTabeli1 ADD FOREIGN KEY (NazwaKolumnyTejTabeli)
REFERENCES NazwaDrugiejTabeli
--> Nazwaklucza int not null references NazwaDrugiejTabeli on Delete
restrict on Update Cascade | Podczas Create Table
primary key (Nazwaklucza)
Skracanie zapytania :
--> SELECT * from NazwaTabeli N;
--> WHERE N1.ID = N2.ID | dla warunku
Widoki :
--> CREATE VIEW NazwaWidoku AS SELECT [KlauzulaSelecta] | Tworzymy widok
staly
Joiny :
-->
Funkcje :
--> 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
--> variance()
--> stdev()
Sortowanie :
--> GROUP BY nazwakolumny
--> GROUP BY nazwakolumny HAVING Warunek | group by imie Having nazwa < 'j'
n224 ;)
ZALACZNIK 2
Postać 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.
Pierwsza postać normalna (1NF)
Relacja jest w pierwszej posta
ci 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 (powtarz
ających się grup informacji),
posiada klucz główny,
kolejność wierszy może być dowolna (znaczenie danych nie zależy od kolejności wierszy).
Tabela przed normalizacją
Płeć
Imię
Męska Jan, Piotr, Zenon
Żeńska Anna, Maria, Zofia
Pierwsza postać normalna
Płeć Imię
Męska Jan
Męska Piotr
Męska Zenon
Żeńska Anna
Żeńska Maria
n224 ;)
Żeńska Zofia
Właściwości, które muszą zaistnieć w 1 formie :
1. Jest zdefiniowany klucz relacji.
2.
Wszystkie atrybuty niekluczowe są w zależności funkcyjnej od klucza.
Druga postać normalna (2NF)
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).
Trzecia postać normalna (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.
Przykład tabeli "Pracownicy" przed normalizacją
Imię
Nazwisko Stanowisko Stawka za godzinę
Stefan
Anonim
Młotkowy 10 zł
Natalia
Niewiadoma Sekretarka 20 zł
Eufogenia Enigma
Sekretarka 20 zł
Wartości w kolumnie "Stawka za godzinę" są zależne jedynie od pola "Stanowisko", a tylko pośrednio od
klucza głównego. Prowadzi to do powtarzania się wartość "20 zł", co powoduje redundancję
(na
dmiarowość danych). Może to też prowadzić do anomalii i niespójności danych, gdy np. pani Eufogenii
zmienimy stawkę na 25 zł, a zapomnimy zmienić stawki drugiej sekretarce, pani Natalii.
Sprowadzenie do III postaci normalnej będzie polegać na przeniesieniu stawek do osobnej tabeli, a w
tabeli pracowników pozostawienie jedynie nazwy stanowiska.
Tabela "Pracownicy" po normalizacji
Imię
Nazwisko Stanowisko
n224 ;)
Stefan
Anonim
Młotkowy
Natalia
Niewiadoma Sekretarka
Eufogenia Enigma
Sekretarka
Tabela "Stawki godzinowe" po normalizacji
Stanowisko Stawka
Młotkowy 10 zł
Sekretarka 20 zł
Postać normalna Boyce'a-Codda (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.
Czwarta postać normalna (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.
n224 ;)
ZALACZNIK 3
GRANT oraz REVOKE – Kurs języka SQL (mySQL)
cz. 1
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:
n224 ;)
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
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