WPROWADZENIE DO BAZ DANYCH Baza danych Baza danych (database) – zbiór danych powiązanych tematycznie, zorganizowany w sposób umożliwiający ich wyszukiwanie według zadanych kryteriów Pojęcie „baza danych” rozumiemy potocznie jako system złożony z trzech elementów: • właściwej bazy danych – zbioru danych, np. pliki na dysku, • systemu (oprogramowania) zarządzającego bazą danych, • interfejsu użytkownika, umożliwiającego dostęp do danych Funkcje bazy danych Funkcje zależne od użytkownika: • tworzenie baz danych i tabel • dodawanie i usuwanie danych • wyszukiwanie danych („zapytania”, kwerendy) • czynności administracyjne Funkcje zależne od oprogramowania: • zarządzanie fizycznymi zbiorami danych • wykonywanie poleceń użytkownika • prezentacja wyników operacji Struktura bazy danych Dane są najczęściej uporządkowane w formie tabel. Tabela (table) – dwuwymiarowa struktura przechowująca dane dotyczące określonego tematu • kolumny – atrybuty (pola), określony typ danych • wiersze – rekordy Typy baz danych Najczęściej spotykane typy baz danych • Proste bazy danych o pojedynczej tabeli (np. Excel, własne programy) • Jednostanowiskowa baza biurowa (np. MS Access) • Baza typu „klient-serwer” – dostęp z wielu stanowisk (np. Oracle) • Internetowa baza danych – dostęp z dowolnego komputera podłączonego do Internetu (np. MySQL) • Bazy rozproszone Relacyjne bazy danych Relacyjna baza danych - zbiór danych zawartych w wielu tabelach połączonych ze sobą relacjami (związkami) – jedna tabela dla każdego typu informacji • optymalizacja dla dużej ilości danych • szybsze wyszukiwanie Przykład – relacja między dwoma tabelami (pole IDA) IDA IDU Wykonawca Utwór Album Czas Rok IDA Gatunek tabela „albumy” tabela „utwory” Klucze tabeli • Zaleta systemu obsługi relacyjnych baz danych polega na zdolności do szybkiego wyszukiwania i kojarzenia informacji przechowywanych w odrębnych tabelach. • Realizacja tego celu wymaga obecności w tabeli pola lub ich zestawu jednoznacznie identyfikującego każdy rekord zapisany w tabeli. • Pole to lub ich zestaw nosi nazwę klucza podstawowego tabeli (primary key). • Po zdefiniowaniu w tabeli klucza podstawowego, nie będzie można w jego pole wprowadzić wartości już istniejącej w tabeli ani wartości Null (pustej). Klucze tabeli Najważniejsze typy klucza podstawowego: • klucze podstawowe jednopolowe • klucze podstawowe wielopolowe – gdy żadne z pól nie gwarantuje, że wartości w nim zawartych będą unikatowe • klucze typu „autonumeracja” – licznik zwiększany automatycznie przy dodawaniu nowego rekordu Pola unikatowe i niepuste Pola unikatowe (unique): • system bazy danych sprawdza, czy zawartość pola nie pokrywa się z już istniejącymi rekordami • niemożliwe jest wprowadzenie dwóch rekordów o identycznej zawartości pola unikatowego • klucz podstawowy jest z definicji polem unikatowym Pola niepuste (not null) • system bazy danych sprawdza, czy pole posiada zawartość, zapobiega wprowadzeniu rekordu z polem pustym, jeżeli pole to ma atrybut not null • klucz podstawowy jest z definicji polem niepustym Relacje Relacje opisują sposób powiązania informacji zawartych w wielu tabelach. Relacja – związek ustanowiony pomiędzy wspólnymi polami (kolumnami) w dwóch tabelach Relacja działa poprzez dopasowanie danych w polach kluczowych — zwykle są to pola o tej samej nazwie w obu tabelach. W większości przypadków dopasowywane pola to klucz podstawowy z jednej tabeli, który dostarcza unikatowego identyfikatora dla każdego rekordu, oraz klucz obcy w drugiej tabeli. IDA IDU Utwór Czas IDA Wykonawca Album Rok Gatunek Klucz obcy Klucz obcy (foreign key) – jedno lub kilka pól (kolumn) tabeli, które odwołują się do pola lub pól klucza podstawowego w innej tabeli. Klucz obcy wskazuje sposób powiązania tabel relacjami • typy danych w polach klucza podstawowego i obcego muszą być zgodne • nazwy pól klucza podstawowego i obcego nie muszą być identyczne (ale dla wygody często nadaje się tą samą nazwę) Relacja „jeden do jednego” Relacja pomiędzy tabelami „jeden do jednego” (one-to-one) • 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 długiej tabeli ze względów bezpieczeństwa, albo do przechowania informacji odnoszącej się tylko do podzbioru tabeli głównej. Relacja „jeden do wielu” Relacja pomiędzy tabelami „jeden do wielu” (one-to-many): • rekord w tabeli A może mieć wiele dopasowanych do niego rekordów z tabeli B, ale rekord w tabeli B ma tylko jeden dopasowany rekord w tabeli A • najczęściej występujący typ relacji Przykład: • do jednego wykonawcy przypisanych jest wiele płyt CD • każda płyta CD ma tylko jednego autora Relacja „wiele do wielu” Relacja pomiędzy tabelami „wiele do wielu” (many-to-many) • Rekord w tabeli A może mieć wiele dopasowanych do niego rekordów z tabeli B i tak samo rekord w tabeli B może mieć wiele dopasowanych do niego rekordów z tabeli A. • Jest to możliwe tylko przez zdefiniowanie trzeciej tabeli (nazywanej tabelą łącza), której klucz podstawowy składa się z dwóch pól — kluczy obcych z tabel A i B. • Relacja wiele-do-wielu jest w istocie dwiema relacjami jeden-do-wielu z trzecią tabelą. Etapy projektowania relacyjnej bazy danych Etap 1 – Określenie celu, jakiemu ma służyć baza danych. Etap 2 –Określenie tabel, które są potrzebne w bazie danych. Etap 3 – Określenie pól, które są potrzebne w tabelach. Etap 4 – Przypisanie polom jednoznacznych wartości w każdym rekordzie Etap 5 – Określenie relacji między tabelami Etap 6 – Wprowadzenie danych i utworzenie innych obiektów bazy danych(raporty,formularze, strony dostępu do danych, skrypty i moduły) Wybór typu pola Przy podejmowaniu decyzji, jakiego typu danych użyć w polu tabeli, należy uwzględnić następujące czynniki: • Jakie wartości będą dozwolone dla pola? • Ile miejsca będą mogły zajmować dane przechowywane w polu? • Jakie operacje będą wykonywane na wartościach w polu? • Czy wartości w polu będą sortowane lub indeksowane? • Czy pole będzie używane do grupowania rekordów w kwerendach lub raportach? • W jaki sposób wartości pola będą sortowane? Internetowe bazy danych Elementy internetowej bazy danych: • serwer WWW (Apache) z obsługą skryptów • baza danych (np. MySQL) • interpreter skryptów – PHP, CGI/perl – pośredniczy pomiędzy serwerem WWW a bazą danych • strony WWW statyczne (HTML) – formularze • skrypty JavaScript – kontrola poprawności danych • skrypty PHP lub CGI – przetwarzanie danych, generowanie dynamicznych stron WWW