650 likes | 830 Views
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
E N D
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 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.
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
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
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 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
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ł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