Bazy danych – pojęcia baza danych – (ang. database) zbiór odpowiednio zorganizowanych danych, np. książka telefoniczna, kartoteki pacjentów w przychodni lekarskiej Do obsługi baz danych wykorzystywane jest oprogramowanie zwane Systemem Zarządzania Bazą Danych (SZBD), dzięki któremu możliwe jest: tworzenie bazy utrzymanie bazy wykonywanie operacji dodawania, usuwania, aktualizacji, filtrowania i sortowania danych w bazie tworzenie formularzy i raportów udostępnianie bazy Przykłady SZBD: Microsoft Access, MySQL (najczęściej oferowany przez serwisy hostingowe) , PostgresSQL, Oracle, Sybase. W pakiecie biurowym OpenOffice program do tworzenia baz danych nosi nazwę Base a plik bazy danych ma rozszerzenie .odb Plik bazy danych utworzony w MS Access posiada rozszerzenie .mbd lub accdb (od wersji 2007). Obiektami bazy danych Access są: - tabele - kwerendy - raporty - formularze Wszystkie te obiekty utworzone w danej bazie danych zapisywane są w jednym pliku! (pod taką nazwą, jaką nadaliśmy bazie danych) Rodzaje baz danych: kartotekowe relacyjne obiektowe Najczęściej wykorzystywane rodzaje baz danych to relacyjne. Kartotekowe i relacyjne bazy danych składają się z tabel. Tabela jest podstawową formą organizacji danych w tych bazach. Tabela powinna posiadać nazwę w liczbie pojedynczej. Nazwa powinna sugerować, co zawiera tabela. Jeśli baza danych składa się z większej ilości tabel to nazwy tabel nie mogą się w danej bazie powtórzyć! Tabela składa się z wierszy i kolumn, które w terminologii baz danych nazywane są: wiersz – rekordem kolumna – polem Każda kolumna w tabeli musi mieć niepowtarzalną w tej tabeli nazwę sugerującą, co przechowuje oraz typ i rozmiar. Najmniejszym elementem bazy danych jest pole. Istnieje ograniczenie do 255 pól w jednej tabeli. Brak ograniczenia co do ilości rekordów – ograniczeniem jest ilość pamięci przeznaczonej na 1 tabelę (2 GB) Przykład: Tworzymy w programie MS Access kartotekową bazę danych ksiazka_telefoniczna.mdb. Baza ta będzie się składać z 2 tabel: klient_indywidualny oraz klient_firma. W tabeli klient_indywidualny będą przechowywane informacje: imię, nazwisko, miasto, ulica z numerem domu, numer telefonu klienta. W tabeli klient_firma będą przechowywane informacje: nazwa firmy, miasto, ulica z numerem domu, numer telefonu firmy. W bazie danych te 2 tabele po wpisaniu przykładowych danych będą miały następującą postać: tabela: klient_indywidualny Imię Nazwisko Miasto Ulica Nr telefonu Jan Nowak Sieradz Warcka 10 043 822 45 09 Wiktor Kowalski Łódź Aleja Struga 13 042 622 45 76 Zaznaczony kolorem czerwonym element bazy to rekord. Każdy rekord przechowuje pełną informację o danym kliencie. W powyższej tabeli są 2 rekordy. Tabela klient_firma Nazwa firmy miasto ulica Nr telefonu PPHU Nowak Sieradz Aleja Pokoju 11 043 822 78 34 Firma transportowa Łódź Aleja Politechniki 34 042 622 35 10 Zaznaczony kolorem niebieskim element bazy to pole. Każde pole przechowuje pojedynczy fragment informacji o kliencie. Powyższe pole ma nazwę nazwa firmy. W programie MS Access nie można stosować spacji w nazwach kolumn (pól). Pole jest najmniejszym elementem bazy danych! Obowiązuje zasada, że każde pole powinno przechowywać pojedynczą informację, tzn. że np. w polu ulica powinna być tylko wprowadzona nazwa ulicy i należałoby utworzyć jeszcze 1 pole nr domu , w którym powinien być umieszczony numer domu. Każde pole musi mieć swój typ, który mówi o rodzaju danych przechowywanych w tym polu. Typy danych w MS Access: tekst – do 255 znaków tekst i liczby (wartość pola zapisana w 1 bajcie) nota (długi tekst) – do 65 536 znaków (216 – 2 bajty) liczba – dane na których wykonywane są obliczenia matematyczne (do 16 bajtów) walutowy – do walut aby zapobiec zaokrąglaniu wyników obliczeń (8 bajtów) data/godzina ma postać: RRRR-MM-DD (8 bajtów) tak/nie (1 bit) hiperłącze obiekt OLE (max 1 GB) autonumerowanie – nadawane automatycznie przez program (4bajty) odnośnik W MS Access dla typu liczbowego można ustalić format: standardowy, stałoprzecinkowy, procentowy, wykładniczy a dla typu tekstowego i liczbowego można ustalić rozmiar pola. Domyślnie Access dla tekstu ustala rozmiar na 50 znaków, maksymalnie może być 255. Określenie rozmiaru wpływa na obszar zajmowanej przez bazę pamięci w komputerze. Dla typu liczbowego można ustalić zakres i typ liczb (np. liczby całkowite, podwójnej precyzji). Relacja w terminologii baz danych oznacza związek między kolumnami tabeli. Jedna tabela też stanowi relacyjną bazę danych (tabela jest relacją) Pojęciem relacji określa się również powiązania między kolumnami w różnych tabelach! Takie powiązanie jest nazywane sprzężeniem lub związkiem. Zmodyfikujmy bazę danych ksiazka_telefoniczna.mbd aby zawierała relację między tabelami. W celu ułatwienia przetwarzania danych w tej bazie (np. aby zmienić nazwę miasta trzeba byłoby dokonać zmiany we wszystkich rekordach zawierających nazwę tego miasta a jeśli zapiszemy tą nazwę w oddzielnej tabeli to zmiana nastąpi tylko w jednym miejscu) nazwy miast zapisać w oddzielnej tabeli miasta, która powinna wówczas zawierać jakiś identyfikator miasta oraz nazwę miasta, np. tabela:miasto Identyfikator_miasta nazwa_miasta 1 Sieradz 2 Łódź Wówczas tabelę klient_indywidualny należy również zmodyfikować tak, aby nie zawierała nazwy miasta lecz identyfikator tego miasta. Tabela: klient_indywidualny Imię Nazwisko identyfikator_miasta Ulica Nr telefonu Jan Nowak 1 Warcka 10 043 822 45 09 Wiktor Kowalski 2 Aleja Struga 13 042 622 45 76 Teraz pomiędzy tabelą miasto i tabelą klient_indywidualny istnieje powiązanie (relacja). Ściślej mówiąc relacja istnieje między kolumną identyfikator_miasta z tabeli klient_indywidualny a kolumną identyfikator_miasta z tabeli miasto. Identyfikator_miasta powinien mieć typ: autonumerowanie w MS Access. Wówczas program automatycznie nadaje numerację w kolejności wstawiania poszczególnych rekordów. Access automatycznie nadaje typ autonumerowanie polu nazwanemu identyfikator (pole to jest domyślnie wstawiane przez Access w momencie utworzenia nowej tabeli). Identyfikatory muszą być w danej tabeli niepowtarzalne (dlatego po ustawieniu typu autonumerowanie nie musimy się martwić, że powtórzy się identyfikator), natomiast mogą się powtarzać w różnych tabelach, tzn. że po wstawieniu do tabeli klient_indywidualny kolejnego pola identyfikator_klienta, program może nadać im numery 1, 2 itd. ntyfikator_klienta Imię Nazwisko identyfikator_miasta Ulica Nr telefonu Jan Nowak 1 Warcka 10 043 822 45 09 Wiktor Kowalski 2 Aleja Struga 13 042 622 45 76 Jeśli w kolumnie zawarte są niepowtarzalne informacje (np. w polu identyfikator_klienta numery są niepowtarzalne w tej tabeli poprzez nadanie typu autonumerowanie) to pole takie jest kluczem głównym (podstawowym, unikalnym, primary key). Kluczem głównym w tabeli miasto jest identyfikator_miasta. W programie MS Access klucz główny musi być unikalny, program sygnalizuje błąd, gdy chcielibyśmy wprowadzić informację, która już wystąpiła w tej kolumnie (jeśli ustawimy dla pola klucz główny). Nie można ustawić np. pola nazwisko kluczem głównym ponieważ nazwiska mogą się powtarzać, możemy natomiast ustawić jako klucz główny pole pesel (jeśli by takie było), ponieważ pesel człowieka jest niepowtarzalny. Jeżeli okazałoby się, że żadne pole nie będzie unikatowe można utworzyć klucz podstawowy złożony z kilku pól – jest to klucz złożony. W tabeli klient_indywidualny oprócz klucza głównego, którym jest identyfikator_klienta zawarte są również identyfikatory z tabeli miasta. Pole identyfikator_miasta jest w tabeli klient_indywidualny kluczem obcym (pobocznym). Na podstawie klucza głównego można utworzyć indeks, który zawierał będzie odsyłacze do konkretnych rekordów. Indeks jest odpowiednikiem skorowidza (katalogu) w bibliotece, np. chcąc wyszukać książkę „Ogniem i mieczem” możemy jej szukać w katalogu z posortowanymi nazwami książek wg autorów, lub w katalogu z nazwami dziedziny. Wówczas na każdej karteczce bibliotekarz znajdzie informację, w którym miejscu (nr półki, nr rzędu itd.) znajduje się książka). Typy relacji między tabelami: 1:1 (jeden do jednego) – jeśli 1 rekord z pierwszej tabeli odpowiada tylko 1 rekordowi z drugiej tabeli (np. gdyby istniały tabele klient i adres to jednemu klientowi z pierwszej tabeli odpowiada tylko 1 adres z drugiej tabeli – oznacza to, że dany klient może posiadać tylko 1 adres 1:wielu – jeśli 1 rekord z pierwszej tabeli odpowiada wielu rekordom z drugiej tabeli (np. rekord pierwszy z tabeli miasto może odpowiadać wielu rekordom z tabeli klient_indywidualny, ponieważ wielu klientów może mieszkać w Sieradzu) wiele:wielu – jeśli 1 rekord z pierwszej tabeli jest powiązany z wieloma rekordami z drugiej tabeli oraz 1 rekord z drugiej tabeli jest powiązany z wieloma rekordami z pierwszej tabeli (np. w bazie danych przechowujących informacje o rodzicach i ich dzieciach każdemu rodzicowi można przypisać wiele dzieci a każde dziecko będzie posiadać więcej niż 1 rodzica). Podczas ustawiania relacji między tabelami w Access jest możliwość zaznaczenia opcji „wymuszaj więzy integralności”. Oznacza to, że w polu, które ustawione jest jako klucz obcy nie może być wprowadzona wartość nieistniejąca w polu klucza podstawowego tabeli, z którą jest połączenie za pomocą relacji. Tzn. że w polu identyfikator_miasta w tabeli klient_indywidualny nie może być wprowadzona np. wartość 3, bo w tabeli miasto nie ma żadnego miasta o takim identyfikatorze. Sortowanie w bazie danych polega na porządkowaniu danych według ustalonego kryterium, np. sortujemy rekordy w tabeli według nazwiska alfabetycznie w sposób rosnący (od A do Z – znaczek AZ↓). Filtrowanie w bazie danych oznacza wyświetlenie tylko tych rekordów tabeli, które spełniają określone kryteria, np. imię =”Jan” i ukrycie pozostałych rekordów. Formularze w bazie danych to obiekty, które służą do wprowadzania, przeglądania i edytowania danych. Formularz kolumnowy umożliwia w danej chwili wyświetlenie zawartości tylko 1 rekordu. Formularz tabelaryczny wyświetla zawartość wszystkich rekordów z tabeli. Raporty podobnie jak formularze prezentują dane zawarte w bazie, ale w przeciwieństwie do formularzy nie modyfikują danych w tabeli. Raport można wykonać dla danych ze wskazanej tabeli lub dla konkretnego zapytania. Istotą baz danych jest stworzenie możliwości efektywnego wyszukiwania informacji. Do tego celu służą kwerendy (ang.query), są one obok tabel zawierających dane podstawowymi obiektami definiującymi schematy wyszukiwania pożądanej informacji. W MS Access istnieją dwa języki definiowania kwerend, język SQL (ang. Structured Query Language – strukturalny język zapytań) oraz język QBE (ang. Query By Example – przyjazna dla użytkownika forma tworzenia zapytań bez znajomości języka SQL). np. kwerenda pobierająca z tabeli klient_indywidualny dane: imię klienta, nazwisko klienta, numer telefonu w języku SQL będzie miała postać: SELECT imię, nazwisko, nr telefonu FROM klient_indywidualny można ustalić warunek, że kwerenda ma pobrać tylko tych klientów, którzy mają na imię Jan SELECT imię, nazwisko, nr telefonu FROM klient_indywidualny WHERE imię='Jan' i dodatkowo posortować wg nazwiska SELECT imię, nazwisko, nr telefonu FROM klient_indywidualny WHERE imię='Jan' ORDER BY nazwisko Aby dodać rekord do tabeli w SQL należy użyć instrukcji INSERT Aby usunąć rekordy z tabeli – instrukcja DELETE Aby zaktualizować dane – UPDATE Powyższe polecenia (insert, delete…) należą do tzw. zbioru DML (Data Manipulation Language – języka manipulacji danymi) W bazie danych za pomocą SQL można też dodawać, zmieniać i kasować tabele i bazy danych. Polecenia służące do tego to np.: CREATE DATABASE (utworzenie bazy), DROP TABLE(usunięcie tabeli) należą do grupy DDL (Data Definition Language). Do grupy DCL (Data Control Language) należą polecenia służące do nadawania uprawnień użytkownikom bazy danych. Rodzaje kwerend: - kwerenda wybierająca – pobiera dane z 1 lub więcej tabel używając podanych kryteriów i wyświetla wybrane dane w określonym porządku, wśród nich wyróżnia się: Kwerenda jednotabelowa – oparta na danych z jednej tabeli, o Kwerenda wielotabelowa - grupuje i podsumowuje dane, chować lub pokazywać niektóre pola z tabeli lub kwerendy o Kwerenda obliczająca - pozwalają tworzyć obliczenia o Kwerenda z wyrażeniem wiążącym - pozwala na połączenie pól o Kwerenda parametryczna – umożliwia tworzenie warunku wyboru o Kwerenda krzyżowa – pozwalają na grupowanie danych (miesięcznych, kwartalnych) ich porównywanie sporządzanie podsumowań, ( kto ile zamówił) - Kwerenda funkcjonalna o Kwerenda tworząca tabelę /Make-Table Query– może tworzyć nową tabelę lub duplikat tabeli. o Kwerenda aktualizująca/Update Query – pozwala na dokonanie zmian w jednej lub kilku tabelach, o Kwerenda dołączająca/dodająca/Append Query - dodaje z jednej lub kilku tabel rekordy do aktualnej o Kwerenda usuwająca/Delete Query– usuwa określone rekordy z jednej lub kilku tabel (osoby, które nie zamówiły nic w ciągu 5 lat) Specyficznym rodzajem bazy danych jest hurtownia danych - data warehouse. Tabele tej bazy tworzone są w taki sposób, aby wyniki z tych tabel dawały odpowiedź na konkretne pytania opracowane przed zaprojektowaniem bazy. Do pliku bazy danych można zaimportować dane z arkusza kalkulacyjnego, z dokumentu tekstowego (trzeba zastosować określone znaki oddzielające między kolejnymi elementami poszczególnych rekordów np. tabulator, spację, średnik, (jest to tzw. plik tekstu rozdzielanego). Można też dane z bazy danych wyeksportować do pliku arkusza kalkulacyjnego i pliku tekstowego, oraz wykorzystać dane z bazy danych do korespondencji seryjnej.