Bazy danych 2a. Związki encji. 2b.Relacyjny model baz danych P. F. Góra
Wprowadzenie do Baz Danych
description
Transcript of Wprowadzenie do Baz Danych
Wprowadzenie do Baz DanychWojciech 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 polsko-angielski 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 danychWojciech 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 Andrzej 0978654 Wrocław
Przykład zapytania Szukam numerów telefonów moich klientów
z Wrocławia SELECT Nazwisko Klienta, Imię Klienta,
Telefon KlientaFROM KlienciWHERE 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 KlienciGROUP BY Miasto KlientaHAVING 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.
Biblioteka
Explorator MS Windows