1 Relacyjne bazy danych 2 Relacyjny model baz danych • Zawdzięcza nazwę pojęciu relacji w teorii mnogości. • W relacyjnym modelu dane przechowywane są w relacjach (tabelach). • Każda relacja składa się z wierszy i wartości atrybutów (kolumn). • Baza danych składa się z relacji (tabel) połączonych ze sobą za pomocą atrybutów kluczowych. Połączenia te określają, które wiersze w poszczególnych tabelach są ze sobą związane. 3 Podstawowe pojęcia • Rekord (zapis) - podstawowa jednostka informacji z bazie danych zawierająca pełny zestaw informacji o gromadzonych obiektach (np. opis bibliograficzny, dane teleadresowe itp.) • Tabele – podstawowe obiekty bazy danych w programie Access służące do przechowywania danych. Składają się one z wierszy (rekordów) i kolumn (pól). • Relacja – skojarzenie ustanowione między wspólnymi polami (kolumnami) w dwóch tabelach. Relacja może być typu „jeden-dojednego”, „jeden-do-wielu” lub „wiele-do-wielu”. Relacja działa poprzez dopasowywanie danych w polach klucza. • Klucz podstawowy - jedno lub większa liczba pól (kolumn), których wartości jednoznacznie identyfikują każdy rekord w tabeli. Klucz podstawowy służy do wiązania tabeli z kluczami obcymi w innych tabelach. • Klucz obcy - jedno lub większa liczba pól tabeli (kolumn), które odwołują się do pola lub pól klucza podstawowego w innej tabeli. Klucz obcy wskazuje, w jaki sposób tabele są powiązane. 4 • Kwerendy – wyrażone w formalnym języku „zapytania” do bazy danych, które – zależnie od typu – mogą wyświetlać określone dane, modyfikować je, tworzyć lub usuwać. Kwerendy pozwalają automatyzować operacje na bazach danych. • Formularze – elementy interfejsu SZBD, za pomocą których Użytkownik może przeglądać i modyfikować przechowywane w tabelach dane, uruchamiać raporty czy wykonywać zadania administracyjne. • Raporty – pozwalają na wyświetlanie oraz drukowanie sformatowanych danych wraz z obliczeniami oraz podsumowaniami. • Strony – pozwalają na publikowanie interaktywnych formularzy w sieci lokalnej • Makra (Makropolecenia) – grupy poleceń, które mogą zostać automatycznie wykonane jak jedna instrukcja. • Moduły – pozwalają na tworzenie programów w języku VBA 5 Typy rekordów • Jednostopniowe, rekord dzieli się na pola. W schemacie tym rekordy symbolizują wiersze tabeli, zaś polami są kolumny • Wielostopniowe, rekord dzieli się na pola, pola zaś na podpola. Bazy tego typu mają własne, zróżnicowane interfejsy (nie są to tabele, lecz wyświetlane sekwencyjnie formularze) 6 Tabele • Zbiór danych dotyczących określonego tematu. • Używanie oddzielnych tabel dla każdego tematu eliminuje duplikowanie danych (redundancję), przechowywanie danych jest bardziej efektywne i eliminuje błędy wprowadzania danych. • Tabele organizują dane w kolumnach (zwanych polami) i w wierszach (zwanych rekordami). 7 8 Typy danych w tabelach Tekst • Pól typu Tekst należy używać do przechowywania takich danych, jak nazwy czy adresy oraz danych liczbowych, na których nie będą dokonywane żadne obliczenia (na przykład numery telefonów, numery części, czy kody pocztowe). Pole tekstowe może zawierać do 255 znaków. Domyślnie pola mieści 50 znaków. Aby umożliwić wprowadzenie do pola większej ilości danych, należy zmienić ustawienie właściwości Rozmiar pola. Memo Pola typu Memo • są używane do przechowywania danych dłuższych niż 255 znaków • może zawierać do 64 000 znaków • nie mogą być indeksowane ani sortowane. Do przechowywania sformatowanych tekstów i długich dokumentów, zamiast pola Memo należy użyć pola OLE. Liczba • Używany dla danych liczbowych, które mogą być używane w obliczeniach matematycznych 9 Typy danych w tabelach Data/Godzina • Używany dla dat i godzin. Walutowy • Używany dla wartości pieniężnych. Autonumer • Typ danych pola przechowujący unikatową liczbę automatycznie przyporządkowaną każdemu rekordowi w chwili jego dołączenia do tabeli. • Można generować trzy rodzaje liczb: kolejne (rosnące o 1), losowe oraz identyfikator replikacji (używany przez Menedżera replikacji w celu zapewnienia integralności danych w replikowanej bazie danych). Liczby generowane przez pole typu Autonumer nie mogą być usuwane ani modyfikowane. Tak/Nie • Właściwość Format można ustawić na jeden z predefiniowanych formatów: Tak/Nie, True/Falselub Wł/Wył lub na format niestandardowy 10 Typy danych w tabelach Obiekt OLE • Używany dla obiektów, takich jak np. dokumenty programu Microsoft Word i rysunki, utworzonych w innych programach przy użyciu protokołu OLE. Hiperłącze • Kolorowy i podkreślony tekst lub grafika, który można kliknąć, aby skoczyć do pliku, określonego miejsca w pliku, strony HTML w sieci WWW lub strony HTML w internecie. Hiperłącza mogą również prowadzić do miejsc Gopher, Telnet, grup dyskusyjnych i FTP. 11 Podstawowe cechy relacji • Relacja musi się składać przynajmniej z jednej kolumny i może zawierać zero, jeden lub więcej wierszy danych • Każdy wiersz relacji musi mieć wartości unikalne, musi różnić się wartością przynajmniej w jednej kolumnie od innych wierszy • Kolejność wierszy i kolumn w tabeli jest dowolna • Dane umieszczone w kolumnie należą do domeny tej kolumny, czyli zbioru jej dopuszczalnych wartości. Każda relacja w relacyjnej bazie danych posiada klucz podstawowy, który składa się z jednej lub większej liczby kolumn, o wartościach jednoznacznie identyfikujących każdy jej wiersz 12 Atrybuty • Charakteryzują cechy abstrakcyjnych obiektów umieszczonych w poszczególnych wierszach relacji (tabeli). • Jest to opis poszczególnych kolumn relacji. • Zakres wartości jakie mogą przyjmować atrybuty (kolumny) nazywa się ich typem, domeną lub dziedziną 13 Typy atrybutów Typy atrybutu Opis atrybutu CHAR Dowolny tekst o stałej długości n-znaków VARCHAR Ciąg znaków zmiennej długości, max n znaków BLOB Pole binarne o zmiennej długości, służy do pamiętania grafiki i danych multimedialnych INTEGER Liczba całkowita, zakres wartości ±2147483648 SMALL INT Liczba całkowita, zakres wartości ± 32768 DATA Data DATATIME Data i czas DECIMAL (p, s) Liczby dziesiętne, p oznacza liczbę cyfr (razem z kropka i znakiem), s<6 oznacza liczbę cyfr po kropce dziesiętnej 14 Typ atrybutu Opis atrybutu NUMERIC (p, s) Liczby dziesiętne, p oznacza liczbę cyfr (razem z kropką i znakiem), s oznacza liczbę cyfr po kropce dziesiętnej FLOAT Liczba zmiennoprzecinkowa siedem cyfr znaczących DOUBLE PRECISION Liczba zmiennoprzecinkowa podwójnej precyzji 15 Węzły nałożone na atrybuty • Na atrybuty w bazach danych można nałożyć dodatkowe ograniczenia zwane węzłami. • Podstawowe węzły NAZWA OPIS NOT NULL Nazwa atrybutu nie może być pusta UNIQUE Wartości atrybutów w danej kolumnie muszą być unikalne PRIMARY KEY Dany atrybut jest kluczem podstawowym określonej relacji, co również oznacza, że musi być unikalny FOREIGN KEY Dany klucz jest kluczem obcym 16 Klucze • Klucz – kolumna lub zestaw kolumn, który w jednoznaczny sposób identyfikuje resztę danych w dowolnie zadanym wierszu • Obcy klucz – jest atrybutem (kolumną) w obcej tabeli, gdzie ten atrybut jest podstawowym kluczem. Dowolne dane w kolumnie obcego klucza muszą mieć odpowiedniki w odpowiadającej tabeli, w której ten klucz jest kluczem podstawowym 17 Rodzaje kluczy Atrybuty relacji dzielimy na 2 grupy: • Atrybuty podstawowe–należą do któregokolwiek z kluczy • Atrybuty opisowe – nie należą do żadnego z kluczy Klucze: • Proste - klucz, którego zbiór identyfikujący jest jednoelementowy • Złożone - klucz, którego zbiór identyfikujący jest kilkuelementowy 18 Relacje między tabelami • Powiązanie między tabelami nazywamy relacją. Relacja istnieje wtedy, gdy dwie tabele są połączone przez klucz podstawowy i klucz obcy lub, gdy istnieje dodatkowa, łącząca je tabela, zwana tabelą łączącą. • Każdej relacji między dwiema tabelami można przypisać konkretny typ. Istnieją trzy typy relacji określające typ powiązania między wierszami tabel: ▫ Jeden do jednego ▫ Jeden do wielu ▫ Wiele do wielu 19 Relacja jeden-do-jednego • W relacji jeden-do-jednego każdy rekord w tabeli A może mieć tylko jeden dopasowany rekord z tabeli B, i tak samo każdy rekord w tabeli B może mieć tylko jeden dopasowany rekord z tabeli A. Ten typ relacji spotyka się rzadko, ponieważ większość informacji powiązanych w ten sposób byłoby zawartych w jednej tabeli. • Relacji jeden-do-jednego można używać do podziału tabeli z wieloma polami, do odizolowania części tabeli ze względów bezpieczeństwa, albo do przechowania informacji odnoszącej się tylko do podzbioru tabeli głównej. 20 Relacja jeden-do jednego id_pracownika • imię nazwisko 100 Jan Kowalski 101 Jan Nowak 1:1 Id pracownika stawka 100 5.5 101 6.6 21 Relacje –relacja jeden-do-wielu • Między tabelami istnieje relacja jeden do wielu, jeżeli z każdym rekordem z pierwszej tabeli jest związany jeden lub kilka rekordów z drugiej tabeli, natomiast każdemu rekordowi z drugiej tabeli odpowiada jeden rekord z pierwszej tabeli. 22 Relacja jeden-do-wielu Id_pracownika Imię nazwisko 100 Jan Kowalski 101 Jan Nowak 1:n Id_pracownika Nazwa narzędzia 100 Klucze nasadowe 100 Młotek 101 Piłka 101 Klucz M12 23 Relacja wiele-do-wielu • Między dwiema tabelami występuje relacja wiele do wielu, jeżeli pojedynczemu rekordowi z pierwszej tabeli może odpowiadać jeden lub więcej rekordów z drugiej tabeli i na odwrót – pojedynczy rekord z drugiej tabeli może być powiązany z jednym lub większą liczbą rekordów z pierwszej 24 Relacje wiele-do-wielu Wyroby Id_wyrobu Nazwa_wyrobu 34/A Plecak RYSY 36/B Plecak ALASKA 12/A Kurtka POLAR Części m:n Id_części Nazwa_części N-12-13 Zapinka wtyk N-12-14 Zapinka gniazdo N-08-17 Zamek M12x60 P-16-03 Pas mocujący 25 Zastąpienie relacji wiele-do-wielu dwiema relacjami jeden-do-wielu Id_wyrobu Nazwa_wyrobu Id_części- Nazwa_części N-12-13 Zapinka wtyk 34/A Plecak RYSY N-12-14 Zapinka gniazdo 36/B Plecak ALASKA N-08-17 Zamek M12x60 12/A Kurtka POLAR P-16-03 Pas mocujący 1:n Id_wyrobu Id_części liczba 12/A N-08-17 1 34/A N-12-13 4 34/A N-12-14 4 34/A N-08-17 2 34/A P-16-03 1 36/B N-12-13 5 36/B N-12-14 5 1:n 26 Normalizacja • Proces, podczas którego schematy relacji posiadające niepożądane cechy są przekształcone na mniejsze schematy relacji o pożądanych własnościach. Celem normalizacji jest uzyskanie optymalnej struktury bazy danych. 27 Warunki procesu normalizacji • Żaden atrybut nie zostanie zgubiony w czasie normalizacji • Dekompozycja relacji nie prowadzi do utraty informacji • Wszystkie zależności funkcjonalne są reprezentowane w pojedynczych schematach relacji • Relacje między tabelami mogą być tylko typu jeden do jeden lub jeden do wielu 28 Tabela nieznormalizowana Id_klienta Id_zamówienia wyroby 5 7 5 łożysk, 18 wiertarek, 3 pilniki 6 8 3 młotki, 2 pilniki 5 9 7 młotków, 2 mlotki 29 Pierwsza postać normalna 1 PN wymaga, aby wszystkie wartości jej kolumn były elementarne (niepodzielne). Kolumna Nr_pozycji określa kolejność towaru na zamówieniu. Kluczem głównym tej tabeli jest klucz złożony z pary kolumn id_zamówienia i nr_pozycji. Kluczem obcym id_kilenta Id_kienta Id_zam Nr_ poz ilość wyroby 5 7 1 5 Łożysko 5 7 2 18 Wiertło 5 7 3 3 Pilnik 6 8 1 3 Młotek 6 8 2 2 Pilnik 5 9 1 7 Młotek 5 9 2 2 pilnik 30 Druga postać normalna • Aby tabela przyjęła drugą postać normalną, musi być w pierwszej postaci normalnej i każda z jej kolumn musi być w pełni zależna od klucza głównego i od każdego atrybutu klucz głównego, jeśli ten klucz składa się z wielu kolumn. • Elementy każdej kolumny tabeli, nie będącej kluczem muszą być jednoznacznie identyfikowane przez klucz główny tabeli 31 Id_klienta Id_zamówienia data 5 7 1999-04-15 6 8 1999-04-16 5 9 1999-04-20 Id_zamówie Nr_pozycji nia Ilość Id_wyrobu wyrobu 7 1 5 33 Łożysko 7 2 18 44 Wiertło 7 3 3 15 Pilnik 8 1 3 17 Młotek 8 2 2 15 Pilnik 9 1 7 17 Młotek 9 2 2 15 pilnik Relacja w drugiej postaci normalnej 32 Trzecia postać • Każda z kolumn musi być zależna od klucza głównego i niezależna od pozostałych kolumn. • Tabela musi spełniać warunki drugiej postaci normalnej, a ponadto każda kolumna nie będąca kluczem, musi być niezależna od pozostałych kolumn niekluczowych 33 Id_zamówienia Nr pozycji Ilość Id_wyrobu 7 1 5 33 7 2 18 44 7 3 3 15 8 1 3 17 8 2 2 15 9 1 7 17 9 2 2 15 Id_wyrobu Nazwa_wyrobu 33 Łożysko 44 Wiertło 15 Pilnik 17 Młotek 34 Projektowanie baz danych 35 Określenie celu, któremu ma służyć baza danych • jakich informacji ma dostarczyć baza danych, • jakie zagadnienia będą analizowane w bazie danych (tabele) • jakie informacje mają określać każde zagadnienie (pola w tabelach) 36 Określenie tabel, które znajdą się w bazie danych Projektując tabele należy mieć na uwadze przedstawione poniżej podstawowe zasady projektowania: • Ta sama informacja nie powinna być wielokrotnie wprowadzona do jednej lub kilku tabel. Jeżeli informacja jest przechowywana tylko w jednej tabeli, można ją uaktualnić zmieniając dane tylko w jednym miejscu. • Każda tabela powinna zawierać informacje tylko na jeden temat. Jeżeli tabela zawiera dane na temat jednego zagadnienia można przetwarzać je niezależnie od danych dotyczących innych zagadnień. 37 Określenie pól, które znajdą się w tabelach • Każda tabela zawiera informacje na temat jednego zagadnienia, a każde pole w tabeli zawiera jedną daną dotyczącą tego zagadnienia, któremu poświęcona jest tabela. • Zabierając się do projektowania pól w tabelach dobrze jest pamiętać o następujących wskazówkach: ▫ Należy powiązać każde pole bezpośrednio z zagadnieniem, którego dotyczy tabela. ▫ Nie należy wprowadzać danych pośrednich lub obliczonych (danych, które są wynikiem wyrażenia). ▫ Należy uwzględnić wszystkie potrzebne informacje. ▫ Informacje należy przechowywać w możliwie najmniejszych jednostkach logicznych (na przykład Imię oraz Nazwisko, a nie Dane personalne). 38 Przypisanie polom jednoznacznych wartości • Aby można było powiązać informacje przechowywane w różnych tabelach. Na przykład, aby powiązać klienta ze wszystkimi jego zamówieniami każda tabela w bazie danych musi zawierać pole lub zbiór pól, które jednoznacznie określają każdy rekord. Takie pole lub zbiór pól nazywany jest kluczem podstawowym. 39 Określenie relacji (sprzężeń) między tabelami • Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do programu Microsoft Access informacje na temat sposobu poprawnego łączenia powiązanych danych w logiczną całość. W tym celu definiuje się relacje między tabelami. 40 Wprowadzenie danych i utworzenie innych obiektów bazy danych • Kiedy okaże się, że struktura tabel spełnia opisane powyżej kryteria, można wprowadzić wszystkie dane do tabel i utworzyć dowolne kwerendy, formularze, raporty, makra i moduły. 41 Bibliografia • Józef Kukuczka, Relacyjne bazy danych • http://ultra.ap.krakow.pl/~wmkolasa/bazy/101f ull.html