Wprowadzenie do baz danych Bazy danych stanowią obecnie jedno z ważniejszych zastosowań komputerów. Podstawowe zalety komputerowej bazy to przede wszystkim szybkość przetwarzania danych, ilość dostępnych danych, oszczędność miejsca przechowywania oraz łatwy dostęp do baz typu klient-serwer. W przeszłości projektowanie baz danych było zadaniem bardzo trudnym, przeznaczonym głównie dla specjalistów pracujących na wydajnych dużych komputerach zwanych mainframe. Ogromna popularność, łatwy dostęp do komputerów osobistych i do oprogramowania bazodanowego spowodowały, że wiele osób nie tylko korzysta na co dzień z baz danych, ale też próbuje je samodzielnie tworzyć. Ogólnie projektowanie bazy można podzielić na trzy etapy: 1. Zaprojektowanie logiczne (w sensie logicznym), czyli określenie struktury przyszłej bazy. 2. Implementacja 1 projektu logicznego, czyli przeniesienie projektu logicznego do konkretnego pakietu oprogramowania. 3. Stworzenie specjalnej aplikacji, która pozwoli użytkownikowi na komunikację z bazą danych w tym etapie można określić, jakie czynności może i powinien wykonywać użytkownik, np. wprowadzanie nowych danych, edycja danych już wprowadzonych, drukowanie informacji. Model relacyjnej bazy danych jest obecnie najbardziej popularnym modelem logicznym opisującym bazy danych. Często nawet nie zdajemy sobie sprawy, w jakim stopniu jest on obecny w naszym życiu od zwykłych zakupów w supermarkecie, przez rezerwację biletu lotniczego, wypożyczenie książki w bibliotece, zakup towaru w sklepie internetowym czy uczestnictwo w kursie prowadzonym metodą e-learningu. Najważniejsze założenia tego modelu to: dane są przechowywane w encjach (tabelach). Każda tabela składa się z krotek (rekordów), oraz atrybutów (pól); kolejność rekordów (czyli ich fizyczne miejsce w tabeli) nie ma znaczenia; każdy rekord jest wyróżniany przez jedno pole zawierające unikatową (czyli nie powtórzoną) dla niego wartość. Tabele Tabela (encja w teorii relacyjnej bazy danych) jest podstawową strukturą relacyjnej bazy danych. Składa się z pól i rekordów. Jest poświecona pewnemu tematowi: może to być obiekt (np. uczeń w szkole, pacjent w przychodzi, pracownik w firmie) lub zdarzenie (np. wypożyczenie książek w bibliotece czy wizyta pacjenta w przychodni). 1 Słowa implementacja często używa się w informatyce. Tu będzie ono oznaczało przeniesienie czy zastosowanie projektu logicznego w konkretnym programie.
Przykładowa tabela Rekordy Pola Pola Pole (zwane atrybutem w teorii relacyjnej bazy danych) to najmniejsza struktura w modelu logicznym. Jest wykorzystywane do przechowywania jednostkowych danych (np. w polu Imię są przechowywane dane: Anna, Tomasz, Jakub). Umieszczenie w każdym polu tylko jednej wartości ułatwia potem sortowanie danych i szybkie wyszukiwanie (np. wszystkich osób o imieniu Anna). Rekordy Rekord (zwany krotką w teorii relacyjnej bazy danych) jest składową w tabeli, reprezentującą pełny, pojedynczy zestaw danych (np. dane jednego ucznia Marcina Kowalskiego). Każdy rekord jest jednoznacznie identyfikowany (w zakresie całej bazy) przez unikatową dla niego wartość pola nazwanego kluczem głównym. W podanej przykładowej tabeli tym kluczem jest pole Nr_legitymacji i wartość 253 jednoznacznie identyfikuje Marcina Kowalskiego. Klucze Każda tabela zawiera wyróżnione pole, które jest nazwane jej kluczem głównym zawartość tego pola ma jednoznacznie identyfikować każdy z rekordów. W przedstawionym wyżej przykładzie takim polem jest Nr_legitymacji. Jeśli tabele są ze sobą powiązane, można między nimi wprowadzić relację, umieszczając kopię klucza podstawowego jednej z tabel w drugiej tabeli. Nosi on wtedy nazwę klucza obcego, gdyż logicznie tabela ta ma już swój klucz, więc ten drugi będzie traktowany jako obcy. Klucz główny Klucz główny Tabela KLASY ID_klasy Profil A B Językowa Klucz obcy
C D E Biologiczno-Chemiczna Prawnicza Relacje Powiązanie między parą tabel nosi nazwę relacji. Każdej relacji można przypisać konkretny typ: jeden-do-jednego, jeden-do-wielu, wiele-do-wielu. Relacja jeden-do-jednego Taki typ powiązania oznacza, że pojedynczemu rekordowi z pierwszej tabeli jest przyporządkowany najwyżej jeden rekord z drugiej tabeli i na odwrót. Właściwe powiązanie informacji pomiędzy tymi tabelami zapewnia wspólne pole kluczowe Nr_legitymacji. Na przykład wartość równa 250 odpowiada następującym danym: Anna Kowalska z klasy A, która mieszka w Warszawie, na ulicy Piłsudskiego 26/89. Taki typ relacji symbolicznie można oznaczyć 1 1. Tabela ADRESY Nr_legitymacji Kod Miasto Ulica 250 03-300 Warszawa ul.piłsudskiego 26/89 251 03-300 Warszawa ul.etiudy 4/56 252 03-406 Piaseczno ul.polna 123 253 03-310 Warszawa ul. Racławicka 4/5 254 03-312 Warszawa ul.hynka 77/3 255 03-430 Wesoła ul.postępu 6 256 03-306 Warszawa ul.rzymowskiego 7/10 257 03-304 Warszawa ul.woroniczna 59/14 Relacja jeden-do-wielu Taki typ powiązania oznacza, że pojedynczemu rekordowi z pierwszej tabeli może odpowiadać jeden lub więcej rekordów z drugiej, gdy pojedynczemu rekordowi z drugiej tabeli odpowiada najwyżej jeden rekord z pierwszej. Właściwe powiązanie informacji pomiędzy tabelami KLASY i UCZNIOWIE zapewnia wspólne pole kluczowe ID_klasy. Na przykład na podstawie ID_klasy równym A stwierdzamy, że jest to klasa, do której uczęszczają: Anna Kowalska, Tomasz Nowak i Waldemar Nowak. Taki typ relacji symbolicznie oznacza się: 1.
Tabela KLASY ID_klasy A B C D E Profil Językowa Biologiczno-Chemiczna Prawnicza Relacja wiele-do-wielu Taki typ powiązania oznacza, że pojedynczemu rekordowi z pierwszej tabeli może odpowiadać jeden lub więcej rekordów z drugiej tabeli i na odwrót. W celu utworzenia takiej relacji dobrze jest zbudować tabelę łączącą, w której należy umieścić kopie kluczy głównych obydwu tabel łączonych. Tabela MATURA jest tabelą łączącą tak, aby miedzy tabelami UCZNIOWIE i PRZEDMIOTY zaistniała relacja wiele-do-wielu.
System zarządzania relacyjną bazą danych (w skrócie SZRBD) to z reguły pakiet programów stosowanych do tworzenia i modyfikowania relacyjnych baz danych. Często jest on też używany do tworzenia aplikacji, z której korzysta użytkownik. Bardzo szybko zaczęła się rozwijać koncepcja takich systemów, w których z centralnie ulokowanej bazy danych może korzystać dowolna liczba użytkowników. Stają się one wtedy systemami typu klient-serwer. Centralny komputer jest nazwany serwerem baz danych, a użytkownicy za pomocą specjalnych aplikacji na swoich komputerach, nazwanych klientami bazy danych, uzyskują dostęp do serwera. Duża popularność relacyjnego modelu bazy danych i jego różnych implementacji wynika z ich następujących zalet: model logiczny został oparty na teoriach matematycznych (m.in. teorii mnogości), co rzutuje na jego stabilność, bezpieczeństwo, przewidywalność i efektywność; integralność danych, czyli możliwość sprawdzania poprawności danych na poziomie pól (niepoprawne dane nie zostaną wprowadzone do pola), na poziomie tabel (nie pojawią się takie same rekordy), na poziomie relacji (sprawdzanie poprawności danych z punktu widzenia całej bazy); łatwy dostęp do danych. Wyszukiwanie informacji Popularnym sposobem do wprowadzania, modyfikowania i odczytywania informacji z bazy danych jest wykorzystanie języka SQL (ang. Structured Query Language). Większość popularnych pakietów oprogramowania udostępnia narzędzia umożliwiające wprowadzanie zapytań zapisanych w tym języku: od prostego trybu ekranowego do pełnego interfejsu graficznego czy wręcz gotowego kreatora, np. w programie Microsoft Access. Proste zapytanie SQL składa się z trzech głównych składników: SELECT do wyboru nazw pól, które pojawią się w zapytaniu; FROM do określania tabel, z których te pola będą pochodziły; WHERE do określania kryteriów wyboru; dodatkowo ORDER BY do sortowania danych według zawartości pola (lub pól). Przykłady prostych zapytań SQL 1. Pobranie z tabeli UCZNIOWIE imion oraz nazwisk wszystkich uczniów: SELECT Imię, Nazwisko FROM UCZNIOWIE 2. Pobranie z tabeli UCZNIOWIE danych tych uczniów, którzy mają na imię Jakub, Filip lub Monika: SELECT * FROM UCZNIOWIE WHERE Imię= Jakub Or Imię= Filip Or Imię= Monika Gdy w miejsce listy pól zastosujemy symbol gwiazdki *, wówczas zostaną wyświetlone wszystkie pola w tym wypadku: Nr_legitymacji, Imię, Nazwisko, ID_klasy. 3. Pobranie z tabeli UCZNIOWIE wszystkich uczniów, których nazwiska zaczynają się na literę K: SELECT * FROM UCZNIOWIE WHERE Nazwisko LIKE K*
4. Pobranie danych pierwszych trzech uczniów z tabeli UCZNIOWIE: SELECT * FROM UCZNIOWIE LIMIT 3 5. Pobranie danych z dwóch tabel UCZNIOWIE i ADRESY połączonych relacją: SELECT UCZNIOWIE.Nazwisko, UCZNIOWIE.Imię, ADRESY.Miasto FROM UCZNIOWIE, ADRESY WHERE UCZNIOWIE.Nr_legitymacji = ADRESY.Nr_legitymacji Jeśli wymienione pola w sekcji SELECT będą pochodziły z różnych tabel, to nazwa pola musi być poprzedzona nazwą tabeli, z której ono pochodzi w tym wypadku UCZNIOWIE.Nazwisko, UCZNIOWIE.Imię, ADRESY.Miasto. Złączenie tabel zostało zasygnalizowane warunkiem WHERE wraz z nazwą łączącego pola Nr_legitymacji.