Baza danych (BD) - uporządkowany zbiór elementów, informacji z określonej dziedziny lub tematyki zorganizowany w pewien logiczny i zestrukturalizowany sposób, które można w prosty sposób przetwarzać, aktualizować, dodawać, usuwać, przeznaczony do wyszukiwania informacji.
Zbiór danych = informacje elementarne + powiązania między nimi
Termin baza danych upowszechnił się wraz z rozwojem informatyki, umożliwiającym tworzenie baz danych na maszynowym nośniku informacji. Obecnie oznacza zazwyczaj komputerową bazę danych, zamienne stosowanie terminów: baza danych i system informacyjny (system informacyjno-wyszukiwawczy).
Baza danych = dane + program komputerowy (programy) wyspecjalizowany do gromadzenia i przetwarzania tych danych. Program -> "System zarządzania bazą danych" SZBD (Database management system DBMS) krócej "baza danych".
BD operują głównie na danych tekstowych i liczbowych, lecz większość współczesnych baz umożliwia przechowywanie danych binarnych typu: grafika, muzyka itp.
Gdzie korzysta się z baz danych wszędzie! Korzyści z baz danych:
ograniczenie redundancji danych (gdy jest, to łatwość powstawania niezgodności)
wprowadzenie standardów danych
ułatwienie, przyspieszenie i ograniczenie dostępu do danych
dzielenie danych pomiędzy wielu użytkowników
zachowanie integralności danych
zapewnienie niezależności danych (od metod dostępu i organizacji)
Cechy bazy danych:
- pamięć trwała danych (co nie znaczy, że dane się nie zmieniają - transakcje)
określona struktura i reguły integralności (utrudnić wprowadzenie złych danych)
FUNKCJE BAZY DANYCH: aktualizujące (transakcje) i zapytań.
- Funkcje aktualizujące dokonują zmian na danych (projektowanie rekordów, edycja: dopisywanie, usuwanie rekordów, poprawianie rekordów)
- Funkcje zapytań wydobywają dane z bazy danych (bez modyfikacji): sortowanie, wyszukiwanie i selekcja danych, tworzenie zapytań, tworzenie raportów, drukowanie
Cechy systemu zarządzania bazą danych:
izoluje programy od reprezentacji fizycznej
słownik danych (język opisu danych)
realizuje mechanizmy dostępu: język zapytań i manipulacji danymi, optymalizacja dostępu, poufność
realizuje mechanizmy ochrony: autoryzacja dostępu, ochrona spójności, mechanizmy do odtwarzania po awarii
wielodostęp i dostęp przez sieć: zarządzanie transakcjami, klient - serwer, mechanizmy dla rozproszonych baz danych
posiada narzędzia do budowy interfejsów: narzędzia do zapytań interakcyjnych, dostęp z języków 3GL, specjalizowane narzędzia 4GL, do budowy formularzy i raportów
Podział SZBD: Lokalne / klient-serwer
Lokalne bazy danych: najprostsze, w całości na jednym komputerze. Wszelkie zmiany użytkownik nanosi bezpośrednio na tabelę np. dodawanie, usuwanie lub aktualizacja poszczególnych rekordów. Większość lokalnych baz danych opiera się na jednowarstwowej architekturze (wszelkiego rodzaju zmiany wykonuje się natychmiast). Program, który udostępnia użytkownikowi zawartość bazy ma z nią bezpośredni kontakt. Access firmy Microsoft.
Bazy danych typu klient-serwer: Główna baza przechowywana na serwerze (wydzielony osobny komputer). Dostęp do niego z innych komputerów - przez sieć. Użytkownicy korzystając z takiej bazy nie korzystają bezpośrednio z jej zasobów, ponieważ odbywa się to za pośrednictwem programów - klientów. Wielu użytkowników na raz może korzystać.
Zalety zastosowania architektury klient - serwer:
bezpieczeństwo serwera
minimalizacja ruchu w sieci
zapytanie wysyła się do danych
dane przetwarza się na serwerze odciążenie centralnego komputera od obsługi interfejsu
Architektura trójwarstwowa
BD można podzielić według struktur danych, których używają:
bazy proste - każda tablica danych (plik) jest samodzielnym dokumentem i nie może współpracować z innymi tablicami, jednopoziomowe, płaskie. Plik ma jednostki składowe o jednolitej strukturze (rekordy), zawierają pola różnorodnych typów: numeryczne, znakowe, tekstowe, pola walut, pola wskaźnikowe odnoszące się do cyfrowych obrazów, animacji i dźwięków. Np.: książka telefoniczna, książka kucharska, spis książek, kaset lub płyt. Wspólna cecha - jeden wybrany cel.
bazy obiektowe.
model hierarchiczny - dane mają strukturę odwróconego drzewa. Jedna z tabel pełni rolę „korzenia” drzewa, a pozostałe mają postać „gałęzi” biorących swój początek w korzeniu. Relacje są reprezentowane w kategoriach ojciec/syn (tabela-ojciec może być powiązana z wieloma tabelami-synami, lecz pojedynczy syn może mieć tylko jednego ojca). Aby uzyskać dostęp do danych w modelu hierarchicznym, użytkownik zaczyna od korzenia i przedziera się przez całe drzewo danych, aż do interesującego go miejsca (musi dobrze znać strukturę bazy danych). GIS
model sieciowy: struktura danych ma postać grafu (sieci), wierzchołki grafu - typy obiektów, łuki w grafie - wiązania między typami, opis obiektu (rekord) zbudowany z pól zawierających dane opisujące obiekt.
strumieniowe bazy danych (dane są w postaci zbioru strumieni danych).
bazy relacyjne (złożone) - wiele tablic danych może współpracować ze sobą. Bazy relacyjne posiadają wewnętrzne języki programowania (SQL), za pomocą których możemy tworzyć własne menu oraz zaawansowane funkcje obsługi danych. Relacyjne bazy danych (i przeznaczony dla nich SQL) oparte są na kilku zasadach:
Wszystkie wartości danych oparte są na prostych typach danych. (dalej tabelka)
Wszystkie dane w bazie relacyjnej przedstawiane są w formie dwuwymiarowych tabel ("relacji"). Każda tabela zawiera zero lub więcej wierszy ("krotki") i jedną lub więcej kolumn ("atrybuty"). Na każdy wiersz składają się jednakowo ułożone kolumny wypełnione wartościami, które z kolei w każdym wierszu mogą być inne.
Po wprowadzeniu danych do bazy możliwe jest porównywanie wartości z różnych kolumn, zazwyczaj również z różnych tabel, i scalanie wierszy, gdy pochodzące z nich wartości są zgodne. Umożliwia to wiązanie danych i wykonywanie stosunkowo złożonych operacji w granicach całej bazy danych.
Wszystkie operacje wykonywane są w oparciu o logikę, bez względu na położenie wiersza tabeli. Nie można więc zapytać o wiersze, gdzie (x=3) bez wiersza pierwszego, trzeciego i piątego. Wiersze w relacyjnej bazie danych przechowywane są w porządku zupełnie dowolnym - nie musi on odzwierciedlać ani kolejności ich wprowadzania, ani kolejności ich przechowywania. indeksy określające kolejność wyświetlenia
Z braku możliwości identyfikacji wiersza przez jego pozycję pojawia się potrzeba obecności jednej lub więcej kolumn niepowtarzalnych w granicach całej tabeli, pozwalających odnaleźć konkretny wiersz. Kolumny te określa się jak "klucz podstawowy" (primary key) tabeli.
Typ danych |
Zastosowanie |
Rozmiar |
Tekst |
Tekst lub kombinacje tekstowo-liczbowe, jak na przykład adresy. Również liczby nie wymagające obliczeń, jak na przykład numery telefonów, katalogowe czy kody pocztowe. |
Do 255 znaków. Przechowywane są tylko znaki wprowadzone do pola, nie zapisane miejsca nie są przechowywane. |
Memo |
Długie teksty i liczby, np. notatki czy opisy |
Do 64 000 znaków. |
Liczba |
Dane liczbowe, na których będą przeprowadzane działania matematyczne, z wyjątkiem obliczeń finansowych (do tego celu służy typ danych Walutowy). Trzeba ustawić Rozmiar pola, aby określić odpowiedni rodzaj danych liczbowych. |
1, 2, 4 lub 8 bajtów. 16 bajtów tylko dla Identyfikatora. |
Data/ Godzina |
Daty i godziny. |
8 bajtów. |
Walutowy |
Wartości walutowe. Typu tego należy używać, aby zapobiec zaokrągleniom podczas obliczeń. Dokładność 15 cyfr dla części całkowitej i 4 cyfr dla części dziesiętnej liczby. |
8 bajtów. |
Autonumer |
Unikatowe liczby kolejne (rosnące od 1) lub losowe, wpisywane automatycznie przy wprowadzaniu rekordu. |
4 bajty (16 bajtów tylko dla identyfikatora ID replikacji (GUID)). |
Tak/Nie |
Pole zawierające jedną z dwóch wartości, jak na przykład Tak/Nie, Prawda/Fałsz, Wł./Wył. |
1 bit. |
Obiekt OLE |
Obiekty (takie jak dokumenty Worda, arkusze Excel, rysunki, dźwięki lub inne dane binarne), utworzone w innych programach używających protokołu OLE, które mogą być połączone z tabelą lub osadzone w tabeli |
Do 1 gigabajta (w zależności od pojemności dysku). |
Hiperłącze |
Pola do przechowywania hiperłączy. Hiperłączem może być ścieżka UNC lub URL. |
Do 64 000 znaków. |
Kreator odnośników |
Tworzy pole pozwalające wybierać wartość z innej tabeli lub z listy wartości za pomocą pola kombi. Wybranie tej opcji w liście typów danych uruchamia Kreatora definiującego cały układ. |
Taki sam jak rozmiar pola klucza podstawowego realizującego odniesienie, zwykle 4 bajty. |
- Jakie wartości będą dozwolone dla pola? Nie można np. zapisać tekstu w polu o typie danych Liczba.
- Ile miejsca mogą zająć dane zapisywane w polu.
- Jakie operacje będą wykonywane na wartościach pola? Można na przykład sumować wartości z pól typu Liczba czy Walutowy, lecz nie da się sumować pól typu Tekst czy Obiekt OLE.
- Czy wartości pola będą sortowane lub indeksowane? Pól typu Memo, Hiperłącze lub Obiekt OLE nie da się sortować ani indeksować.
- Czy pole będzie używane do grupowania rekordów w kwerendach lub raportach? Obiekty Memo, Hiperłącze i OLE nie mogą być użyte do grupowania rekordów.
- W jaki sposób wartości pola będą sortowane, w polu typu Tekst liczby są sortowane jako ciągi znaków (1, 10, 100, 2, 20, 200, itd.), a nie jako wartości liczbowe. Aby poprawnie sortować liczby, należy je zapisywać w polu typu Liczba lub Walutowy. Podobny problem z sortowaniem może wystąpić dla dat zapisanych w polu typu Tekst, aby go uniknąć, należy daty zapisywać w polu typu Data/Godzina.
SQL - Structured Query Language (strukturalny język zapytań), opracowany w latach siedemdziesiątych w firmie IBM, standard w komunikacji z serwerami relacyjnych BD, (DB2, SQL/DS, MySQL, MySQL, PostgreSQL InterbaseSQL, Oracle, MS SQL Server, MS Access i inne. -> korzystanie z relacyjnych baz danych, to korzystanie z SQLa.
Produkty związane z relacyjnymi bazami danych to nie tylko serwery. Sam serwer to "back end", "engine", czy też "motor bazy danych". Przechowuje on dane oraz zapewnia ich pobieranie i aktualizacje w odpowiedzi na pobierane instrukcje w SQLu.
Uzupełnieniem serwera jest zazwyczaj "front end", "middleware" czy też "fronton" - narzędzia upraszczające komunikację z serwerem i wyposażone w mechanizmy pozwalające wykorzystać pobrane dane. Należą do nich mechanizmy generowania i obsługi formularzy oraz raportów, języki czwartej generacji (4GL), graficzne języki zapytań, narzędzia konstrukcyjne użytkownika, oprogramowanie do prezentacji multimedialnych, systemy tworzenia hipertekstu, systemy CAD/CAM, arkusze kalkulacyjne, jak również interfejsy dostępu bezpośredniego. Wszystkie one wykorzystują do komunikacji z serwerem i wykonywania za jego pośrednictwem różnych operacji, język SQL. Serwer odpowiada za przechowywanie, porządkowanie i pobieranie danych, zapewnia ich integralność, bezpieczeństwo oraz zabezpiecza przed ewentualnymi konfliktami między użytkownikami.
Z technicznego punktu widzenia, SQL jest podjęzykiem danych. Oznacza to, że jest on wykorzystywany wyłącznie do komunikacji z bazą danych. Nie posiada on cech pozwalających na tworzenie kompletnych programów. Wykorzystywane formy:
SQL interaktywny - do bezpośredniej rozmowy z bazą danych
Statyczny SQL - zapisany w aplikacji
Dynamiczny SQL - generowany w trakcie działania aplikacji np. przez graficzne języki zapytań
Zapytania (SELECT) - najbardziej charakterystyczne dla SQLa:
Najprostsza postać zapytania w języku SQL służy do wybierania krotek pewnej relacji, które spełniają określone w zapytaniu warunki, co stanowi odpowiednik operatora selekcji w algebrze relacji. Prawie wszystkie zapytania w tym języku, konstruuje się za pomocą trzech charakterystycznych dla SQLa słów kluczowych: SELECT, FROM i WHERE.
Instrukcją wykorzystywaną do wyprowadzania informacji umieszczonych w tablicach jest instrukcja SELECT. Należy stosować składnię:
SELECT <klauzula>
[INTO <klauzula>] FROM <klauzula> [WHERE <klauzula>]
[GROUP BY <klauzula>] [HAVING <klauzula>]
[UNION <instrukcja SELECT>...]
[ORDER BY <klauzula>/FOR UPDATE OF <klauzula>]
[SAVE TO TEMP <klauzula>];
Przykład pozwala wyprowadzić wszystkie wpisy z tabeli status, które posiadają ID większe od 0 w kolejności rosnącej.
SELECT * From status WHERE status_id > 0 ORDER BY status_id ASC;
Projektowanie baz danych - relacyjnych, konstruowanie BD i aplikacji - 3 etapy:
Projekt bazy danych w aspekcie logicznym (zdefiniowanie tabel oraz należnych do nich pól, ustalenie kluczy podstawowych i obcych, zdefiniowanie relacji i wprowadzenie integralności danych na różnych poziomach) - diagram ER
Implementacja projektu logicznego w konkretnym pakiecie oprogramowania bazodanowego (utworzenie tabel, określenie pól kluczowych i relacji oraz wykorzystanie dostępnych narzędzi do zagwarantowania integralności danych).
Stworzenie aplikacji, z którą będzie komunikował się użytkownik zewnętrzny. Aplikacja ta powinna umożliwić pojedynczym użytkownikom lub ich grupom interakcję z danymi przechowywanymi w bazie (można to podzielić na mniejsze etapy: określenie czynności, które ma wykonywać użytkownik, ustalenie sekwencji tych czynności, które ułatwią poruszanie się po aplikacji, itd.)
PROJEKT BAZY DANYCH stworzenie diagramu ER (Entity Relationship Diagram - diagram związków encji)
♦Identyfikacja obiektów bazy (encji).
♦Określenie cech obiektów (atrybutów).
♦Identyfikacja związków pomiędzy obiektami bazy danych (związki encji, relacje).
Prostokąty - reprezentują encje, każdy opatrzony zrozumiałą, prostą etykietą.
Romby - reprezentują związki miedzy encjami; związek powinien zawierać opisowy tytuł, który informował będzie o zasadach relacji miedzy encjami.
Elipsy - reprezentują atrybuty opisujące określoną encję.
Linie główne - łączą ze sobą encje tworząc związki. Mogą one nie mieć żadnych etykiet albo zawierać etykiety M i N, M i 1 lub N i 1, 1 i 1.
Linie zwykłe - łączą atrybuty z jednostkami, bez etykiet.
Relacje:
“jeden do jeden” - jeden obiekt wykazuje zależność funkcyjną od drugiego.
“jeden do wielu” - jeden obiekt powiązany jest z wieloma innymi. Obiekty te umieszcza się w osobnych tabelach powiązanych parą klucz główny (w tabeli, gdzie znajduje się element, który jest “jeden”) - klucz obcy (w tabeli gdzie znajduje się “wiele” elementów). Np. W bazie ze studentami: student - oceny - każdy student ma wiele ocen, jednak każda ocena jest przyporządkowana jednemu, konkretnemu studentowi. (linia 1 i M lub 1 i N).
“wiele do wielu” - gdy istnieją dwie grupy obiektów, które mogą łączyć się ze sobą w taki sposób, że zarówno dowolny obiekt z pierwszej grupy może łączyć się z wieloma obiektami grupy drugiej, jak również dowolny obiekt grupy drugiej może łączyć się z wieloma obiektami grupy pierwszej.
W bazie z wynikami studenckimi np. jeśli wydzielimy obiekt “forma sprawdzania wiedzy” (kolokwium, praca domowa, projekt itp.). Wtedy powiązanie studentów z “formą sprawdzania wiedzy” jest relacją “wiele do wiele”: każdy student brał udział w wielu formach sprawdzania wiedzy, ale też w danej formie sprawdzania wiedzy badano umiejętności wielu studentów.
Związki „wiele do wielu” są złożone, aby unikać takiego związku tworzy się tzw. tabelę pośredniczącą, umieszczaną między pierwotnymi tabelami, 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ą. (linia M i N).
6
Internet
INTERNET
Warstwa klienta
----------------------------
----------------------------
----------------------------
----------------------------
Mechanizm
skryptowy
Serwer WWW
Skrypty
Warstwa środkowa
System zarządzania
bazą danych
(SZBD)
Baza
danych
Warstwa bazy danych