relacyjne bazy danych

advertisement
Wprowadzenie
do Baz Danych
Wojciech Gańcza
Plan










Rodzaje danych
Porównanie danych opisowych ze strukturalizowanym
Pole, kolumna, tablica
Indeksy
Bazy zawierające więcej tabel – złączenia
Widoki i zapytania (kwerendy)
Czym są hurtownie danych
Hierarchie drzewiaste
XML
Hierarchie wielokrotne i rozmyte
Rodzaje danych







Różne informacje zapisujemy w różny sposób
stosując różne typy danych:
Rozmiar ubrań określa się numerem
Kolor – nazwą – ale z konkretnej grupy słów
Tytuł książki – to tekst
Numer telefonu – czy jest liczbą czy tekstem ?
Data może być różnie zapisywana, ale zawsze
określa konkretny dzień.
Nawet liczby mogą być różnego typu – całkowite,
rzeczywiste (z określoną lub nieokreśloną precyzją)
Rodzaje danych (2)



To wszystko były proste informacje, a co jeśli mamy
do czynienia z informacjami bardziej złożonymi ?
Jak zapisać informacje o osobie, samochodzie,
książce czy filmie?
Informacje takie są mogą być zapisane na dwa
sposoby:


Jako opis tekstowy
Jako grupa prostych informacji z których każda opisuje
jakiś aspekt (imię, tytuł, ISBN, nazwisko reżysera itp..
Opis





Opis tekstowy ma wiele zalet – potrafi oddać nastrój
i jest ograniczony jedynie inwencją osoby
przygotowującej dane.
Ma też wady – trudno w nim znaleźć konkretną
informację.
Jest subiektywny
Może być niezrozumiały dla osoby która nie
specjalizuje się w dziedzinie jakiej dotyczy
Trudno się go poprawia
Opis (2)




Dane opisowe często się pojawiają tam gdzie trudno
określić strukturę danych.
W ten sposób zapisuje się informacje o podjętych
metodach leczenia, zabiegach konserwatorskich czy
opisach dzieł sztuki określających nie tylko
‘fizyczne’ cechy dzieła.
Format taki mają także opisy celów lub
podejmowanych działań
Dane opisowe nie są proste do porównywania a ich
automatyczne porównywanie jest niemożliwe
Dane złożone





Dane możemy zapisać jako zestaw danych prostych.
Przykłady: karta biblioteczna, dowód rejestracyjny,
dowód osobisty.
Niestety takie opisy nie pozwalają na całkowite
poznanie opisywanego przedmiotu, ale dają się
łatwo przetwarzać na komputerach
Tego typu opisy znakomicie sprawdzają się w
statystyce, ekonomii, finansach
Nie są idealnym wyborem w przypadku dzieł sztuki
Podstawowe pojęcia




Element opisu który jest prostą daną – nazywamy
polem. Mole musi mieć określony typ – wskazujący
jakie dane mogą być w nim przechowywane, oraz
nazwę – by można było określić o jaką część
informacji chodzi.
Zbiór wszystkich pól które opisują pojedynczy
element – to rekord.
Wszystkie rekordy tego samego typu (to znaczy
zawierające takie same pola) tworzą tabelę
Pola o tej samej nazwie – to kolumna
Przykład tabeli

Przykładów nie trzeba długo szukać – wystarczy
zajrzeć do dowolnego katalogu na komputerze – i
zobaczymy spis informacji o każdym pliku:






Jego nazwę
Typ
Ilość zajmowanego miejsca
Datę utworzenia
W niektórych systemach – także uprawnienia
Zwróćmy uwagę że te informacje mogą być różnie
prezentowane
Programy

Wiele programów pozwala na tworzenie baz danych:







MS Access (będziemy na nim pracować)
MS SQL Server
My SQL – darmowy, prosty serwer baz danych (linux,
windows)
Baza danych programu MS Works
Open Office
Oracle – poważny serwer baz danych
Postgress
Zadanie 1




Otwórz program MS Access
Utwórz nową bazę danych
Utwórz tabelę w której można zapisać zbiór
filmów
Sprawdź jakie typy pól są przez program MS
Access obsługiwane.
Indeksy




Dane powinny być przeglądane w określonej
kolejności (zazwyczaj nie w tej w jakiej były
wprowadzane)
Sortowanie danych jest czasochłonne
Można byłoby trzymać dane w postaci już
posortowanej – ale co zrobić jeśli potrzebujemy
jednocześnie różne kolejności rekordów ?
Pomocne są tu indeksy – pamiętające kolejności
rekordów
Indeksy (2)





Można utworzyć wiele indeksów do jednej tabeli
Indeksować można pojedyncze pola lub ich grupy
Indeksy mogą także pilnować unikalności danych –
nie pozwalając dodać powtarzających się (w
indeksie) danych
Nie trzeba wskazywać jaki indeks powinien być
użyty – baza danych sama decyduje o ich stosowaniu
(i zazwyczaj stosują je dobrze).
Dodanie indeksu zwiększa szybkość pracy.
Wiele tabel




W naszej bazie filmów wiele informacji się powiela
– nazwisko reżysera, wytwórnia itp..
Wpisywanie tych samych danych nie ma sensu i
prowadzi do błędów
Idealnie byłoby gdybyśmy mogli odnieść się do
danych już raz wpisanych
Muszą to być dane które można uzupełniać – nie
może to być więc okrojony typ prosty – ale
referencja do innej tabeli
Wiele tabel (2)


Jeśli umieścimy dane w innej tabeli – to musimy się
do nich w jakiś sposób odwołać
Jedynym rozwiązaniem jest podanie unikalnego
identyfikatora rekordu do którego się odwołujemy
Złączenia




Złączenia (relacje) pozwalają określić jak tabele się
do siebie odwołują
Zazwyczaj łączymy tabele korzystając z klucza
podstawowego określonego jako pole automatycznie
numerowane (liczba całkowita)
Możemy połączyć wiele tabel.
Bazy danych które korzystają z mechanizmu złączeń
określane są jako relacyjne bazy danych
Kolejne pojęcia




Krotka (encja) – to grupa pól opisująca pojedynczy
element danych.
Krotki są podstawowymi cegiełkami z których
budowane są dane.
Dobrze jest jeśli rekord odpowiada krotce – nie ma
wtedy redundancji danych
W praktyce – stosuje się to gdy nie ma
przeciwwskazań związanych z wydajnością
Zadanie 2


Dodaj do bazy tabelę Artyści zawierającą
dane aktorów i reżyserów
W tabeli zawierającej filmy – dodaj pole
„reżyser” odwołujące się do nowej tabeli
Zapytania (kwerendy)




Wyświetlanie tabel w całości nie jest specjalnie
użyteczne.
W przypadku tabel złączonych – dobrze jest
wyświetlić informacje z pól obu tabel – na przykład
tytuł filmu i nazwisko reżysera.
Do przygotowania takich widoków służą kwerendy
czyli zapytania.
W programach bazodanowych zapytania formułuje
się w języku SQL.
Kwerendy (2)


W wielu programach zapytania może utworzyć
klikając myszką – bez konieczności wpisywania
poleceń SQL
Zapytania mogą wybierać konkretne kolumny do
wyświetlenia. Możliwe jest także:




Filtrowanie
Agregowanie
Przeliczanie danych
Wyniki zapytań mogą być używane tak samo jak
tabele.
Zadanie 3

Dodaj zapytanie które wyświetli tytuły
filmów i ich reżyserów – posortowane po
tytułach.
Kwerendy (3)




Kwerendy pozwalają na różne spojrzenia na dane
Jeśli przygotujemy tabelę zawierającą słownik (na
przykład angielsko – polski) – to możemy zbudować
dwa zapytania które zwrócą słownik polskoangielski i angielsko-polski (oba odpowiednio
posortowane)
Jakakolwiek zmiana danych – jest od razu widoczna
w wynikach zapytań
Dla wyników zapytań nie można stosować
indeksów.
Kwerendy (4)




Stosowanie zapytań ma wiele zalet – ale program
musi przeglądać wiele tabel by zbudować
odpowiedź.
Jeśli w zapytaniu agregujemy dane lub je
przeliczamy – to obliczenia są wykonywana za
każdym razem gdy żądamy wyników.
W przypadku bardzo dużych ilości danych – jest to
bardzo nieefektywne
Lepiej pamiętać w bazie już przeliczone wartości
Hurtownie danych




W hurtowniach danych wszystkie potrzebne dane są
obliczone i gotowe do użycia
Dane w hurtowniach mają dużą redundancje ale są
dostępne
Dane są pamiętane w.g. pewnych hierarchii –
związanych z grupowaniem
Hierarchie przypominają katalogi znane z systemu
operacyjnego – zawsze wiadomo do jakiego
elementu wyższego rzędy należy bieżący element.
Hurtownie danych (2)
Zadanie 4


Dodaj do bazy filmów tabelę na kategorie
filmów i wpisz przykładowe kategorie
Stwórz hierarchię kategorii – tak by jedna
kategoria mogła zawierać inne
Drzewa hierarchii

Łatwo przygotować hierarchię drzewiastą która
pozwala na:




Przypisanie do każdej kategorii
Przypisanie tylko do kategorii końcowych
Może to wymagać dodania relacji do nowych tabel,
lub autorelacji do tabeli kategorii
Może też komplikować zapytania jeśli będziemy
chcieli wyświetlać także podhierarchie przy
wyszukiwaniu danych
Hierarchie drzewiaste

Takie hierarchie często spotyka się w życiu:





Klasyfikacja roślin
Klasyfikacja filmów w wideotece (półkami)
Hierarchia pracowników w zakładzie pracy
W wielu przypadkach są one naturalne, ale nie
wszędzie. Podobnie jak nie zawsze baza złożona z
tabel ma sens.
Czasem dane dotyczące pojedynczego elementu
mają strukturę drzewiastą
XML


Jeśli dane mają bardziej złożoną strukturę – to
możemy użyć skomplikowanego modelu relacyjnego
albo…
Użyć innego typu bazy danych:



Bazy obiektowej
Bazy wiedzy
Bazy wiedzy – pozwalają na miękką definicje
poszczególnych rekordów – poszczególne rekordy
mogą mieć różną strukturę (różny zestaw pól)
XML (2)



Wydawałoby się, że trudno nad tym zapanować – ale
możemy zapisać dane postaci dokumentu XML
W tym formacie – wszystkie dane pamiętane są jako
tekst, ale dodana jest do niech struktura przy pomocy
znaczników – podobnych trochę do znaczników
języka HTML
Dowolny element danych może zawierać dowolne
inne elementy – nie jest tu jednak dozwolona
rekurencja
HML (3)
Hierarchie wielokrotne




Często musimy określić kilka wartości według
których klasyfikujemy dane
W przypadku filmów – jak zaklasyfikować komedię
kryminalną? Jako komedie w kategorii kryminałów
czy raczej jako kryminał w kategorii komedii?
Pomocne są hierarchie wielokrotne – pozwalające na
przypisanie wielu cech do jednego elementu
Ale jak to zrealizować w praktyce?
Zadanie 5


Dodaj tabelę pozwalającą na połączenie filmu
i kategorii tak by stworzyć relację wiele – do
wielu
Dodaj zapytanie wyświetlające wyłącznie
komedie
Hierarchie wielokrotne



Możemy oczywiście połączyć możliwość
przypisania do wielu elementów hierarchii wraz z
możliwości budowania hierarchii drzewiastych
Wartościami elementów hierarchii mogą być
wartości które nie są konkretnymi wartościami (takie
jak kilka, trochę, mało, średnio) – tworząc atrapę
hierarchii rozmytej
Prawdziwe hierarchie rozmyte – są jak na razie
domeną AI
Pojęcie bazy rozproszonej



Poszczególne bazy można byłoby
zintegrować tak by stworzyć jedną wspólną
bazę.
Można to zrobić przez wyznaczenia jednego
serwera i skopiowanie danych
Lub przez stworzenie katalogu elementów
zawierającego informację: w jakich bazach
znajdują się szczegółowe dane
Architektura bazy rozproszonej
Podział danych


Dane w poszczególnych bazach mogą mieć
taką samą strukturę, a jedynie różną
zawartość (na przykład dane bibliotek
zawierających opisy posiadanych książek)
Mogą również zawierać dane na różnym
stopniu szczegółowości (na przykład dane
osobowe)
Powody podziału danych



Podział danych powinien być naturalny
Dane najczęściej używane powinny być
przechowywane lokalnie i dostępne przez
lokalny serwer bazy danych
Dostęp do danych globalnych wymaga
obciążenia wielu serwerów oraz sieci
Fragmentacja pozioma



Poszczególne bazy mają taką samą
architekturę, lecz różnią się zawartością
Pozy mogą być połączone przez dodanie
rekordów (UNION)
Istnieje kryterium selekcji pozwalające
stwierdzić czy rekord znajduje się w bazie
lokalnej
Fragmentacja pozioma (2)
Fragmentacja pionowa




Każdy fragment stanowi podzbiór atrybutów
logicznych całej kolekcji danych
Każdy fragment musi zawierać klucz główny
Scalenie bazy – poprzez złączenie 1:1
Pozwala na ukrycie części danych przed
użytkownikami lokalnymi i współbieżną
modyfikacje danych
Fragmentacja pionowa (2)
Fragmentacja mieszana
Przyszłość




Coraz więcej danych jest dostępnych w
postaci elektronicznej
Dane są przetwarzane automatycznie w coraz
bardziej skomplikowany sposób
Pojawiają się nowe metody zarządzania
danymi
Lepiej tego nie przegapić 
Formułowanie zapytań
W bazach danych
Wojciech Gańcza
Zapytanie



Zapytanie (kwerenda) - czynność polegająca
na zbieraniu lub poszukiwaniu informacji w
bazach danych
Zapytanie może być formułowane różnie w
zależności od rodzaju serwera który
przeszukujemy
Zapytania tworzone są w specjalnych
językach zapytań
SQL




Język SQL jest najbardziej popularnym
językiem zapytań
Obecnie wszystkie języki pozwalają na użycie
języka SQL.
Doczekał się on standardu z którym serwery
baz danych są dość dobrze zgodne
Znając podstawy SQL możemy pracować na
dowolnym serwerze baz danych
SQL(2)


Język ten obecnie jest traktowany jako język
programowania choć stworzony powstał jako
interface użytkownika.
W dzisiejszych czasach więcej się wymaga od
komputerów niż od użytkowników więc
większość serwerów udostępnia interface
pozwalający na budowę zapytań przy w
prostszy sposób (np. Konstruktor kwerend w
programie MS Access)
Przykładowa baza
Id Klinta
Nazwisko
Klienta
Imię Klienta
Telefon
Klienta
Miasto Klienta
01
Nowak
Jan
3752669
Wrocław
02
Kowalski
Tadeusz
3865738
Kluczbork
03
Mucha
Stanisław
5647890
Wrocław
04
Kozłowski
Lech
6759870
Wrocław
05
Lewandowska Anna
4509679
Oleśnica
06
Kozłowski
0978654
Wrocław
Andrzej
Przykład zapytania


Szukam numerów telefonów moich klientów
z Wrocławia
SELECT Nazwisko Klienta, Imię Klienta,
Telefon Klienta
FROM Klienci
WHERE Miasto Klienta = "Wrocław"
ORDER BY Nazwisko Klienta, Imię Klienta
Składniki zapytania SQL




SELECT – wybiera pola do wyświetlenia
FROM – definiuje tabele lub zestaw tabel
(łączonych operatorem JOIN)
WHERE – pozwala na podanie warunków
jakie mają spełniać wyświetlane rekordy
ORDER BY – podaje kolejność w jakiej
rekordy będą wyświetlane. Sortowanie
odbywa się po wymienionych polach
Składniki polecenia SQL (2)


GROUP BY – pozwala na agregację danych.
Jeśli nie chcemy wyświetlać rekordów a
jedynie zbiorcze dane (na przykład ilość
abonentów w poszczególnych miastach) –
możemy określić według zawartości których
pół nastąpi grupowanie
HAVING – działa jak WHERE, ale na polach
wyliczonych przez agregację
Przykład zapytania


SELECT count(*) as Liczba, Miasto Klienta
FROM Klienci
GROUP BY Miasto Klienta
HAVING count(*) < 10
Zapytanie zwraca listę miejscowości
mających mniej niż 10 wpisów w tablicy
abonentów
Zapytania


Pracując z różnymi systemami nie musimy
znać ich wewnętrznej budowy oraz sposobu
pamiętania danych w tabelach
W większości wypadków poszukiwań
podajemy jedynie warunki jakie mają spełniać
poszukiwane elementy
Zapytania - przykłady



Poszukiwanie plików na dysku komputera
(eksplorator windows)
Poszukiwanie artykułów w sieci
(http://www.google.pl/)
Wyszukiwanie książek w bibliotece
(http://www.bu.uni.wroc.pl/katalog/)
Wyszukiwarki

Większość wyszukiwarek udostępnia kilka
interfejsów



Prosty – pozwalający na określenie czego i
ewentualnie gdzie szukamy
Zaawansowany – pozwalający na skonstruowanie
zapytań zawierających bardziej złożone warunki
Każda wyszukiwarka zawiera instrukcję
obsługi (Pomoc, Help, Manual)
Wyrażenia


Porównanie – wykonywane jest domyślnie.
Jeśli podamy słowo – poszukiwane będą
rekordy lub dokumenty zawierające podane
słowo
Jeśli umieścimy w zapytaniu kilka słów –
będą one traktowane jak zbiór warunków a
nie fragment tekstu
Wyrażenia (2)




AND (+) – wymusza występowanie obu słów
(często jest to domyślny operator i nie trzeba
go pisać)
OR– musi wystąpić co najmniej jedno słowo
NOT (-) – dokumenty zawierające podane
słowo nie będą wyświetlane
NEAR – słowa podzielone tym operatorem
musza występować blisko siebie
Wyrażenia (3)


„ … ” – ciąg tekstów będzie traktowany jak
pojedynczy warunek – porównywane jest cały
tekst
Do budowy bardziej komplikowanych
wyrażeń można używać nawiasów. Wyrażenia
w nawiasach traktowane są jak pojedyncze
wyrażenie
Wyrażenia regularne

Jeśli nie znamy dokładnie wyrażenia którego
szukamy, można użyć wyrażeń regularnych
zawierających tzw. symbole wieloznaczne.



* - zastępuje dowolny ciąg znaków
? – zastępuje dowolny jeden znak
Znaki używane jako wieloznaczniki są różne
w zależności od języka zapytań. Często
dostępne są także inne symbole
Przykłady zapytań



Ala ma kota oraz psa – szukacz znajdzie
dokumenty, w których występują wszystkie słowa.
"Ala ma kota" oraz psa – Szukacz znajdzie
dokumenty, w których występuje fraza Ala ma kota
oraz występują oba pozostałe słowa.
Ala ma kot* – Jak wyżej, ale słowo zakończone
gwiazdką może wystąpić z dowolną końcówką.
Gwiazdkę w pytaniu można umieścić na końcu
słowa zawierającego co najmniej trzy litery lub
cyfry.
Przykłady zapytań (2)


Ala ma [kota kotka koty kotki] – Szukacz znajdzie
dokumenty, w których na pewno występuje Ala oraz
ma i w których występuje co najmniej jedno ze słów
z wnętrza nawiasu (którekolwiek).
Ala ma [kota kotka koty kotki] [psa psy psów] –
Szukacz znajdzie dokumenty, w których występują
pierwsze dwa słowa i w których występuje co
najmniej po jednym ze słów z wnętrza każdego z
nawiasów.
Google
Biblioteka
Explorator MS Windows
Download