Bazy danych Wykład III Tabele Copyrights by Arkadiusz Rzucidło 1
Dwanaście zasad Codda Informacje są reprezentowane logicznie w tabelach Dane są logicznie dostępne przez podanie nazwy tabeli, wartości klucza podstawowego i nazwy kolumny Wartości null są traktowane w jednolity sposób jako brakujące informacje ; Nie mogą być traktowane jako puste informacje lub jako zera Metadane są umieszczane w bazie jak zwykłe dane Język obsługi danych ma możliwość definiowania danych i perspektyw, więzów integralności, przeprowadzania autoryzacji, obsługi transakcji i manipulowania danymi Perspektywy reagują na zmianę swoich tabel bazowych; Zmiana w perspektywie powoduje zmianę w tabeli bazowej Copyrights by Arkadiusz Rzucidło 2
Dwanaście zasad Codda Istnieją pojedyncze informacje pozwalające na wyszukiwanie, wstawianie i usunięcie danych Operacje użytkownika są logiczne oddzielone od fizycznych danych i metod dostępu Operacje użytkownika pozwalają na zmianę schematu bazy danych bez konieczności tworzenia bazy od nowa Więzy integralności są umieszczone w metadanych, nie w zewnętrznej aplikacji Język manipulowania danymi powinien działać bez względu na to jak i gdzie są rozmieszczone fizyczne dane oraz nie powinien wymagać zmian, gdy fizyczne dane są zcentralizowane lub rozproszone Operacje na pojedynczych rekordach przeprowadzane w systemie podlegają tym samym zasadom i więzom co operacje na zbiorach danych Copyrights by Arkadiusz Rzucidło 3
Czym jest tabela? Stwierdzenie Tabela może być mylące W modelu relacyjnym tabela nie jest listą ale zbiorem W jednej tabeli nie mogą wystąpi dwie takie same krotki Musi istnieć klucz identyfikujący każdą z krotek Kolejność w jakiej występują krotki nie ma znaczenia Copyrights by Arkadiusz Rzucidło 4
Czym jest tabela? Tabela (relacja) jest modelem abstrakcyjnym Ma swoje atrybuty i więzy Zbiór wszystkich projektów tabel nazywa się schematem bazy danych Schemat wraz z informacjami o użytkownikach i ich uprawnieniach stanowi metadane (dane o danych) Schemat tabeli w zasadzie nie zmienia się w czasie Zbiór wszystkich krotek danej tabeli ( zawartość tabeli ) może zmieniać się w czasie Zbiór taki nazywa się instancją tabeli (relacji) Instancję istniejącą w tym czasie nazywa się instancją bieżącą Copyrights by Arkadiusz Rzucidło 5
Projekty tabel Tworzenie tabeli nie jest proste Nie każdy pomysł na projekt jest dobry Przykład: Jak w tabeli wyszukać konkretne imiona? RBDMS potrafią działać na łańcuchach ale tego typu działania nie są celem tych funkcji TOsoba ImięNazwisko DataUr Płeć Ignacy Janowski 17.03.1936 M Karol Janowski 23.11.1957 M Ludwik Janowski 03.02.1983 M Patrycja Janowska 07.01.2005 K Copyrights by Arkadiusz Rzucidło 6
Projekty tabel Nr zamówienia Id dostawcy Nazwa dostawcy Adres dostawcy Id części Nazwa części ilość 001 010 Seagate Borsucza 8 054 Dysk twardy 30 055 Sterownik I/O 50 002 020 Toshiba Wilcza 3 070 Napęd CD 10 Powtarzające się części w zamówieniach 003 010 Seagate Borsucza 8 054 Dysk twardy 40 070 Napęd CD 15 Nr Id dostawcy Nazwa Adres Id części Nazwa części ilość zamówienia dostawcy dostawcy 001 010 Seagate Borsucza 8 054 Dysk twardy 30 001 010 Seagate Borsucza 8 055 Sterownik I/O 50 002 020 Toshiba Wilcza 3 070 Napęd CD 10 003 010 Seagate Borsucza 8 054 Dysk twardy 40 003 010 Seagate Borsucza 8 070 Napęd CD 15 Copyrights by Arkadiusz Rzucidło 7
Diagram związków encji Copyrights by Arkadiusz Rzucidło 8
Model w świecie RBDMS Jedne model (uniwersalny model świata rzeczywistego) Różne potrzeby (nie zawsze potrzeba armaty by zabić komara) Różne rozwiązania (potrzeba matką wynalazków) Różne implementacje Jako przykład RBDMS MS Access MS Access 97 MS Access 2000 MS Access XP Copyrights by Arkadiusz Rzucidło 9
Tworzenie nowej bazy danych Zbliżenie się do ideału jest wystarczająco idealne Typy obiektów bazy danych Microsoft Access 2002 Tabel - Fizyczne magazyny danych Kwerendy -Dynamiczne zestawy rekordów tworzone według określonych kryteriów Formularze -Lokalny interfejs użytkownika Raporty - Zestawienia i podsumowania zestawów rekordów bazy danych Strony - Interfejs WWW bazy danych Makra Makropolecenia; zestawy poleceń Moduły - Zestawy procedur i funkcji w języku VBA Copyrights by Arkadiusz Rzucidło 10
Tworzenie nowej bazy danych Zbliżenie się do ideału jest wystarczająco idealne Typy obiektów bazy danych Microsoft Access 2002 Tabel - Fizyczne magazyny danych Kwerendy -Dynamiczne zestawy rekordów tworzone według określonych kryteriów Formularze -Lokalny interfejs użytkownika Raporty - Zestawienia i podsumowania zestawów rekordów bazy danych Strony - Interfejs WWW bazy danych Makra Makropolecenia; zestaw poleceń Moduły - Zestaw procedur i funkcji w języku VBA Copyrights by Arkadiusz Rzucidło 11
Projektowanie tabel Na podstawie opracowanego diagramu związków encji Właściwy układ to Encja ERD tabela RBDMS Tworzenie struktury tabel Tabele słownikowe Pozostałem tabele danych Dobór odpowiednich typów dla każdego z argumentów encji Wyznaczenie kluczy w tabelach Realizacja połączeń między kolumnami tabel (zgodnie z ERD) Utworzenie relacji Wypełnianie tabel danymi Tabele słownikowe Pozostałe tabele Copyrights by Arkadiusz Rzucidło 12
Tworzenie tabel Tworzenie tabel jest pierwszą i najważniejszą czynnością nowej bazy danych Poprawnie utworzony plan tabel wpływa na efektywność budowanej aplikacji Tworzenie tabeli: Jako własny projekt Za pomocą kreatora Bezpośrednio, wprowadzając dane Copyrights by Arkadiusz Rzucidło 13
Tworzenie tabeli Copyrights by Arkadiusz Rzucidło 14
Własności pól Typ danych Opis Rodzaj informacji, które będą przechowywane w polu: tekst, data/godzina, liczba, nota, itp. Każdy z typów ma swoje ograniczenia np. tekst - 255 znaków, nota 65535 znaków. Opis informacji przechowywanych w danym polu Jest wyświetlany na pasku stanu gdy pole jest edytowane w formularzu Rozmiar pola Maksymalna liczba znaków jak może być zapisana w polu. Jest używana tylko dla pól tekst Jeśli typ pola to liczba można wybrać z grupy: bajt, liczb całkowita, długa liczba całkowita, pojedyncza precyzja, podwójna precyzja Copyrights by Arkadiusz Rzucidło 15
Własności pól Format Pozwala na zdefiniowanie sposobu, jak dane będą wyświetlane Np. Czwartek Marzec 12, 2005 r. Miejsca dziesiętne Własność określana tylko dla liczb Maska wprowadzania Własność wszystkich typów prócz Tak/Nie i Memo. Pozwala na ustalenie maski do poprawnego wprowadzania danych. Np. (017) 55-66-777 Tytuł Etykieta pola na formularzu, raporcie i kwerendzie. Jeśli nie jest zdefiniowana automatycznie przypisywana jest nazwa pola Copyrights by Arkadiusz Rzucidło 16
Własności pól Reguła poprawności Reguła pozwalająca uniknąć wprowadzania błędnych danych Np. M lub K dla pola płeć Tekst reguły sprawdzania (Komunikat o błędzie) Tekst komunikatu będzie wyświetlany, gdy reguła poprawności zostanie naruszona. Wartość domyślna Wartość zostanie wprowadzona do pola automatycznie dla nowych rekordów Wymagane Czy wprowadzenie danych do pola jest konieczne Zerowa długość dozwolona Czy dopuszczalne jest wprowadzenie ciągu znaków określających wartość o zerowej długości Copyrights by Arkadiusz Rzucidło 17
Własności pól Indeksowane Dopuszcza trzy możliwości: Nie, Tak (powtórzenia OK.), Tak (Bez powtórzeń) Pole można indeksować jeśli budowana aplikacja ma wyszukiwać lub sortować rekordy według tego pola. Indeksowanie pola przyśpiesza te operacje. Indeksowanie zwalnia operację wprowadzania rekordów do bazy. Copyrights by Arkadiusz Rzucidło 18
Typy danych Tekst Zapis alfanumeryczny Typ ten akceptuje każdy znak lecz ograniczony jest do 255 znaków Dla pola można ustalić długość krótszą niż 255 znaków, lecz nie zaoszczędzi to miejsca na dysku jak to ma miejsce w innych systemach Access pamięta tylko liczbę bajtów koniecznych do przechowania informacji Operacje arytmetyczne na danych z pola można wykonać dopiero po ich konwersji Liczba Przyjmuje tylko dane liczbowe Można określić poziom precyzji dla danych Liczby można zapisywać również w polu typu tekst Jeśli na danych w polu będą przeprowadzane operacje arytmetyczne należy dla niego wybrać typu Liczby Copyrights by Arkadiusz Rzucidło 19
Ustawienie Opis Dokładność dziesiętna Rozmiar miejsca na przechowywanie Bajt Przechowuje liczby z przedziału od 0 do 255 (bez ułamków). Brak 1 bajt Dziesiętne Przechowuje liczby z przedziału od -10^38-1 do 10^38-1 (.adp) Przechowuje liczby z przedziału od -10^28-1 do 10^28-1 (.mdb) 28 12 bajtów Liczba całkowita Przechowuje liczby z przedziału od -32 768 do 32 767 (bez ułamków). Brak 2 bajty Liczba całkowita długa (Ustawienie domyślne) Przechowuje liczby z przedziału od -2 147 483 648 do 2 147 483 647 (bez ułamków). Brak 4 bajty Pojedyncza precyzja Przechowuje liczby z przedziału od -3,402823E38 do -1,401298E-45 w wypadku wartości ujemnych oraz od 1,401298E-45 do 3,402823E38 w wypadku wartości dodatnich. 7 4 bajty Podwójna precyzja Przechowuje liczby z przedziału od -1,79769313486231E308 do -4,94065645841247E-324 w wypadku wartości ujemnych oraz od 4,94065645841247E-324 do 1,79769313486231E308 w wypadku wartości dodatnich. 15 8 bajtów Identyfikator replikacji Globalny identyfikator unikatowy (GUID) Nie dotyczy 16 bajtów Copyrights by Arkadiusz Rzucidło 20
Typy danych Data/Godzina Specjalistyczna odmiana typu Liczba przeznaczona do przechowywania danych o datach i czasie. Pozwala na wykonywanie operacji arytmetycznych Walutowy Specjalizowana odmiana typu Liczba służąca do przechowywania danych finansowych Określana jest dokładnie liczba miejsc dziesiętnych Autonumer Automatycznie wstawiane wartości dla nowego rekordu Własność Nowe Wartości: Przyrostowy, Losowy Copyrights by Arkadiusz Rzucidło 21
Typy danych Tak/Nie Dopuszcza tylko jedną z dwóch wartości Tak/Nie, Prawda/Fałsz lub Włączony/Wyłączony w zależności od ustawień pola Format Używane do przechowywania pola flag Kreator odnośników Łączy pole z wartością przechowywaną w innym obiekcie bazy danych innej tabeli lub kwerendy Hiperłącze Przechowuje dane zgodne z formatem UNC (Universal Naming Convention), który ma postać: \\nazwa_serwera\ścieżka\nazwa_pliku lub URL (Universal Resource Location), np. http://www.nazwa_serwera.dmena Copyrights by Arkadiusz Rzucidło 22
Typy danych Obiekt OLE Pozwala połączyć lub osadzić obiekt stworzony przez program pełniący rolę serwera OLE. Access jest klientem i serwerem OLE Pole może przechowywać dane binarne Ograniczenie dla pola to wielkość 1GB, lub dostępna ilość wolnego miejsca na dysku Nota (memo) Przeznaczone do przechowywania notatek Dane zapisywane w nim mogą mieć 65 535 znaków Copyrights by Arkadiusz Rzucidło 23
Typy danych Pola typu Nota, Hiperłącze i Obiekt OLE nie mogą być indeksowane Główna zasada to używanie pól typu tekstowego, chyba że: jesteśmy pewni co do tego, że wszystkie dane przechowywane w tym polu będą pasowały do jego typu gdy będzie istniała konieczność wykonywania operacji arytmetycznych Podczas tworzenia tabeli koniecznym jest utworzenie klucza głównego Access posiada mechanizm automatycznego tworzenia klucza podczas zapisywania nowo projektowanej tabeli Copyrights by Arkadiusz Rzucidło 24
Klucze Klucz podstawowy Klucz, który jednoznacznie identyfikuje rekord nazywa się kluczem podstawowym. W tabeli mogą istnieć inne pola o niepowtarzalnych danych, lecz nie będące kluczami podstawowymi. Pola takie nazywa się kluczami potencjalnymi Klucze złożone Jeśli w tabeli nie istnieje jedno pole jednoznaczne dla każdego rekordu konieczne jest utworzenie klucza złożonego. Do stworzenia klucza złożonego konieczne jest kilka pól tabeli. Klucze obce Jest to klucz łączący każdy wiersz jednej tabeli z odpowiednim wierszem drugiej tabeli. Każda tabela może zawierać wiele kluczy obcych. Liczba ta jest zależna od liczby związanych tabel. Copyrights by Arkadiusz Rzucidło 25
Tworzenie tabeli kreator odnośników Copyrights by Arkadiusz Rzucidło 26
Tworzenie tabeli kreator odnośników Copyrights by Arkadiusz Rzucidło 27
Relacje i sprzężenia Relacje definiują związki pomiędzy danymi w tabelach Sprzężenia wykonuje się na potrzeby chwili ; Nie jest to związek trwały Copyrights by Arkadiusz Rzucidło 28
Integralność referencyjna Zarządzanie danymi we właściwy sposób Wymuszanie więzów integralności kaskadowa aktualizacja powiązanego pola Jeśli zmieni się wartość klucza podstawowego w tabeli nadrzędnej, wartość ta będzie zmieniona automatycznie we wszystkich polach kluczy obcych w tabelach podrzędnych Ostrożnie w przypadku kaskadowego usuwania zmiany mogą spowodować usunięcie potrzebnych danych Copyrights by Arkadiusz Rzucidło 29
Ustalanie relacji Copyrights by Arkadiusz Rzucidło 30
Modyfikowanie struktury tabeli Strukturę tabeli można modyfikować Dodawanie pól Usuwanie pól Zmiany nazw i typów już istniejących pól Mechanizmy ochrony zabezpieczające przed nieodpowiedzialną zmianą odwołania do pola, połączenia tabel, itp Copyrights by Arkadiusz Rzucidło 31
Koniec Źródła: J.D.Ullman, J.Widom; Podstawowy Wykład z Systemów Baz Danych Copyrights by Arkadiusz Rzucidło 32