Baza danych to kolekcja danych umieszczonych w określony sposób w strukturach odpowiadająca założonemu modelowi danych. W potocznym ujęciu obejmuje dane oraz program komputerowy wyspecjalizowany do gromadzenia i przetwarzania tych danych. Program taki (lub zestaw programów) nazywany jest "Systemem zarządzania bazą danych" - ang. DataBase Management System (DBMS). (Ponieważ określenie "system zarządzania bazą danych" jest niewygodne w użyciu, to często samo oprogramowanie nazywa się również "bazą danych", lub DBMS'em). Bazy danych operują głównie na danych tekstowych i liczbowych, lecz większość współczesnych baz umożliwia przechowywanie danych binarnych typu: grafika, muzyka itp. Bazy danych można podzielić według struktur danych których używają: 1. 2. 3. 4. 5. bazy kartotekowe (proste) - każda tablica danych jest samodzielnym dokumentem i nie może współpracować z innymi tablicami. Do baz tego typu należą liczne programy typu - książka telefoniczna, książka kucharska, spis książek, kaset lub płyt. Wspólną cechą tych baz jest ich zastosowanie w jednym wybranym celu. bazy relacyjne (złożone) - wiele tablic danych może współpracować ze sobą. Bazy relacyjne posiadają wewnętrzne języki programowania, wykorzystujące zwykle SQL do operowania na danych, za pomocą których możemy tworzyć zaawansowane funkcje obsługi danych. Relacyjne bazy danych (jak również przeznaczony dla nich standard SQL) oparte są na kilku prostych zasadach: 1. Wszystkie wartości danych oparte są na prostych typach danych. 2. Wszystkie dane w bazie relacyjnej przedstawiane są w formie dwuwymiarowych tabel (w matematycznym żargonie noszących nazwę "relacji"). Każda tabela zawiera zero lub więcej wierszy (w tymże żargonie - "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. 3. 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 pochodą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. 4. 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. 5. 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ę jako "klucz podstawowy" (primary key) tabeli. bazy obiektowe strumieniowe bazy danych temporalne bazy danych Podstawowe funkcje bazy danych to: projektowanie rekordów o nazwa pola o długość pola o rodzaj pola (tekstowe, liczbowe, logiczne) edycja (dopisywanie, usuwanie, poprawianie rekordów) sortowanie wyszukiwanie i selekcja danych tworzenie zapytań tworzenie raportów drukowanie UWAGA: W potocznym znaczeniu przyjęło się użycie pojęcia Baza danych określając system zarządzania danymi. Jednak w ścisłej nomenklaturze przez bazę danych rozumiemy zbiór danych zarządzany przez system zarządzania danymi. System zarządzania danymi zapewnia metody dostępu do danych. Tabela From Wikipedia Skocz do: navigation, szukaj Tabela - sposób zapisu i przedstawiania informacji, w którym dane umieszcza się w odpowiednio rozmieszczonych polach. Pola te utworzone są poprzez poziome i pionowe linie. Miejsce pomiędzy dwoma sąsiednimi pionowymi liniami nazywa się kolumną, a miejsce pomiędzy dwoma sąsiednimi poziomymy liniami nazywa się wierszem. Pierwszy wiersz tabeli nazywa się nagłówkiem. Tabele umożliwiają szybsze zapoznanie się z niektórymi rodzajami informacji oraz ułatwiają ich porównywanie. Rekord - struktura danych Rekord zwany w niektórych językach po prostu strukturą (ang. structure, struct, record) (logiczny odpowiednik to krotka). Jest to obiekt programistyczny, grupa danych - takiego samego lub różnego typu - posiadająca swoją ustaloną strukturę, oraz możliwość zmiany i odczytania jego elementów. W odróżnieniu od tablic zawierających wiele elementów tego samego typu, typem elementu tablicy może być również rekord (struktura), a tablica może być składową rekordu. Przykładowy rekord dotyczący osoby pracownika może zawierać np.: Nazwisko - dana typu string (lub character) Imię - j.w. Data urodzenia - dana typu string lub rekord typu data Miejsce zamieszkania - dana typu string lub rekord typu adres Data zatrudnienia - j.w. stanowisko - dana typu string lub rekord typu stanowisko Użyty tutaj rekord typu data może być definiowany jako: rok - liczba całkowita lub string (4 cyfry) miesiąc - liczba całkowita lub string (2 cyfry) dzień - j.w. Itd. Model relacyjny From Wikipedia (Przekierowano z Relacyjna baza danych) Skocz do: navigation, szukaj Model relacyjny to model baz danych oparty na postulatach relacyjności. Twórcą teorii relacyjnych baz danych jest nieżyjący już Edgar F. Codd. Postulaty te zostały opublikowane po raz pierwszy w A Relational Model of Data for Large Shared Data Banks. Dane w modelu relacyjnym są reprezentowane jako zbiór krotek, w szczególności w znormalizowanych bazach danych wszystkie one są unikalne i nie gra roli ich kolejność, a dostęp do nich jest realizowany za pomocą algebry relacji - czyli dostep do danych definiujemy poprzez operatory relacyjne takie jak: rzutowanie, selekcja, złączenie, suma, różnica, produkt kartezjański . Ograniczenie redundancji danych dokonuje się w procesie przejścia do kolejnych postaci normalnych. Zbiory danych powiązane są logicznie za pomocą encji. W ten sposób uniezależnia się widziany przez użytkownika obraz bazy danych od jej postaci fizycznej. Na modelu relacyjnym oparta jest relacyjna baza danych (RDBMS ang. Relational Database Management Systems) - baza danych, w której dane są przedstawione w postaci relacyjnej, gdzie relacja reprezentowana jest przez tablicę (tablica=relacja, stąd nazwa) a tablice są pewnym zbiorem rekordów o identycznej strukturze i wewnętrznie powiązanych za pomocą związków zachodzących pomiędzy danymi. Powoduje to ułatwienie zarządzania bazą danych w stosunku do tradycyjnego podejścia, gdzie dane są przechowywane w postaci strumienia. Takie podejście ułatwia wprowadzania zmian, zmiejszenie możliwość pomyłek, ale dzieje się to kosztem wydajności. Tradycyjną, nierelacyjną bazą danych jest BerkeleyDB. Większość współczesnych relacyjnych baz danych korzysta z jakiejś wersji języka SQL pozwalajacego wprowadzać zmiany danych w bazie i wybieranie informacji z bazy danych. Język ten opiera się na motorze bazy danych, który pozwala zadawać w języku SQL pewnego rodzaju pytania (kwerendy) i wyświetlać dane, które spełniają warunki zapytania, a także wykonywać operacje wstawiania danych, usuwania danych i ich aktualizacji. Język SQL zapewnia również zarządzanie bazą danych. Informacja o samej bazie przechowywana jest w postaci relacji (tabel) wewnątrz bazy danych. Sukces relacyjnych baz danych leży w istnieniu formalnej matematycznej struktury zwanej rachunkiem relacyjnym, pozwalającym przeprowadzić automatyczne sprawdzanie pewnych konstrukcji, gwarantującym wykonalnośc pewnych operacji i spójnośc zbiorów danych. Pierwszy dokument opisujący stosowane do dziś algorytmy zarządzania relacyjnymi bazami danych pt.: "A Relational Model of Data for Large Shared Data Banks" został opublikowany przez E. F. Codda z laboratoriów IBM w roku 1970-tym. Zobacz też: obiektowa baza danych, strumieniowa baza danych, dBASE, RDBMS, SQL. 4. Definiowanie kwerend 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) oraz język QBE (ang. Query By Example). 4.1 Kwerendy krzyżowe Kwerendy dają możliwość gromadzenia danych lub wykonywania akcji na danych z kilku tabel lub kwerend. Na przykład można obejrzeć informacje o klientach wraz z zamównieniami, które zostały przez nich złożone. Aby obejrzeć te informacje, potrzebne są dane z tabel "Klienci" i "Zamówienia". Jeśli tabele w kwerendzie nie są ze sobą sprzężone program Microsoft Access nie wie, które rekordy są ze sobą skojarzone, wyświetla więc każdą kombinację rekordów (tak zwany "iloczyn krzyżowy" lub "kartezjański") obu tabel. Jeśli każda tabela zawiera 10 rekordów, w wynikach kwerendy znajdzie się 100 rekordów (10X10). 4.2 Kwerendy modyfikujące Kwerendy modyfikujące pozwalają na wprowadzanie zmian w wielu rekordach. Istnieją cztery rodzaje kwerend modyfikujących: usuwająca, aktualizująca, dołączajca i tworząca tabele. 4.2.1 Kwrenda usuwajaca Usuwa grupę rekordów z jednej lub kilku tabel. Kwerenda usuwająca może być użyta na przykład do usunięcia produktów, które zostały wycofane z oferty i na które nie ma zamówień. Użycie kwerendy usuwającej powoduje usunięcie całych rekordów, nie zaś wybranych pól w rekordach. 4.2.2 Kwerenda aktualizująca Dokonuje globalnych zmian w grupie rekordów w tabeli lub kilku tabelach. Na przykład można podwyższyć o 10% ceny wszystkich produktów mlecznych lub dać pięcioprocentową podwyżkę wszystkim pracownikom należącym do określonej kategorii zawodowej. Za pomocą kwerend aktualizujących można zmieniać dane w istniejących tabelach. 4.2.3 Kwerenda dołączająca Dodaje grupę rekordów z tabeli lub tabel na końcu innej tabeli lub tabel. Na przykład jeśli firmie przybywają nowi klienci, których dane znajdują się w osobnej bazie danych, aby uniknąć wpisywania wszystkich tych informacji, można dołączyć je do tabeli "Klienci". Kwerendy dołączające są również przydatne w następujących sytuacjach: - Dołączanie pól wybranych na podstawie kryteriów. Na przykład można dołączyć tylko nazwy i adresy klientów o największych zamówieniach. - Dołączanie rekordów w sytuacji, gdy część pól jednej tabeli nie ma swoich odpowiedników w drugiej tabeli. Na przykład tabela "Klienci" w przykładowej bazie danych Northwind ma 11 pól. Jeśli do tej tabeli chcemy dołączyć rekordy z tabeli, w której 9 z 11 pól jest takich samych, jak w tabeli "Klienci", kwerenda dołączająca uwzględni tylko dane w dopasowanych polach, pozostałe zaś będą zignorowane. KWERENDA KRZYŻOWA Wyświetla zliczone wartości z pola i porządkuje wartości w wiersze i kolumny. Łączy analizy zliczania oraz sumowania. Ma budowę zbliżoną do tabeli, gdyż składa się z wierszy i kolumn. Każdy wiersz to oddzielny rekord, a kolumna to pole w danym rekordzie. Niekiedy kwerenda powinna zawierać jedynie ograniczony zakres danych. KWERENDA MODYFIKUJˇCA Pozwala na wprowadzenie zmian w wielu rekordach. Istnieją cztery rodzaje kwerend modyfikujących: usuwająca, aktualizująca, dołączająca i tworząca tabele. KWERENDA USUWAJˇCA Usuwa grupę rekordów z jednej lub kilku tabel. Użycie kwerendy usuwającej powoduje usunięcie całych rekordów, nie zaś wybranych pól w rekordach. KWERENDA AKTUALIZUJˇCA Dokonuje globalnych zmian w grupie rekordów w tabeli lub kilku tabelach. Za pomocą kwerend aktualizujących można zmienić dane w istniejacych tabelach. KWERENDA DOŁˇCZAJˇCA Dodaje grupę rekordów z tabeli lub tabel na końcu innej tabeli lub tabel. Kwerendy dołaczające są również przydatne w następujących sytuacjach: - dołączanie pól wybranych na podstawie kryteriów; - dołączanie rekordów w sytuacjach, gdy część pól jednej tabeli nie ma swoich odpowiedników w drugiej tabeli. KWERENDA TWORZˇCA TABELĘ Tworzy nowa tabelę z wszystkich lub części danych znajdujących się w jednej lub kilku tabelach. Kwerendy tworzące tabelę są przydatne w następujacych sytuacjach: - tworzenie tabel, które maja być eksportowane do innych baz danych programu Microsoft Access; - tworzenie raportów zawierających dane od określonego momentu; - tworzenie kopii zapisowej tabeli; - tworzenie tabeli archiwalnej, zawierającej nieaktualne rekordy; - poprawianie sprawności działania formularzy i raportów utworzonych na podstawie kwerend korzystających z danych z wielu tabel lub instrukcji SQL; Wstęp Co to jest baza danych? Nawet nie korzystając z komputerów mamy do czynienia z bazami danych (świadomie lub nieświadomie). Przykładem bazy danych może być kartka papieru zawierająca dwie tabelki; pierwsza zawiera listę pracowników przedsiębiorstwa wraz z ich danymi personalnymi: imieniem, nazwiskiem, datą urodzenia, adresem zamieszkania, stanowiskiem służbowym, natomiast druga tabelka zawiera listę płac dla tych samych pracowników wraz takimi danymi jak: imieniem, nazwiskiem, kwotami płacy zasadniczej, premii, płacy brutto za miesiąc maj 1999 r: PRACOWNICY Imię i nazwisko Data urodzenia Adres Stanowisko Zenon Adamski 12.09.1960 Sopot ul. Lipowa 10/2 Dyrektor Zenon Biernacki 01.04.1963 Sopot ul. 23 Marca 23/4 Kierownik brygady Jerzy Wołoś 09.06.1974 Gdynia ul. Morska 123/6 Murarz-tynkarz WYNAGRODZENIE ZA M-C MAJ 1999 r. Imię i nazwisko Płaca zasadnicza Premia Płaca brutto Zenon Adamski 2000,- zł 300,- zł 2300,- zł Zenon Biernacki 1500,- zł 100,- zł 1600,- zł Jerzy Wołoś 800,- zł 50,- zł 850,- zł Jednak w przypadku dużej ilości informacji lepiej jest przechowywać je w komputerach w postaci bazy danych. Bazą danych nazywamy zbiór danych w postaci tabel oraz narzędzi stosowanych do gromadzenia, przekształcania oraz wyszukiwania danych. Tabelą w bazie danych nazywamy zbiór rekordów opisujących obiekty np. pracownicy zawierających informacje o tych obiektach w sposób ujednolicony. Rekord – pojedynczy wiersz w tabeli. Polem nazywamy najmniejszą część rekordu, która przechowuje jedną daną. Przykład: W kolejnych kolumnach obu tabelek są zgromadzone dane opisujące pracowników przedsiębiorstwa. Każdy rekord zawiera dane opisujące jednego pracownika. Każde przecięcie się rekordu z kolumną tworzy pole zawierające pojedynczą daną. Co to jest relacyjna baza danych? Nasza przykładowa baza danych składa się z 2 tabel. Po przeprojektowaniu w każdej z nich pojawił się dodatkowy atrybut (pole, kolumna) o nazwie Nr , który służy do powiązania rekordów pomiędzy obiema tabelami tak, aby nie trzeba było przechowywać imienia i nazwiska podwójnie. Powiązanie to nazywa się relacją. W tym przypadku relacja wiąże 1 rekord z pierwszej tabeli z 1 rekordem w drugiej tabeli itd. Podsumowanie: Relacyjną bazą danych nazywamy bazę danych w postaci tabel połączonych relacjami. Ogólny schemat logiczny bazy danych Podsumowanie:Baza danych składa się z tabel, tabele składają się z rekordów, rekordy składają się z pól. Pola mogą przechowywać elementarne dane, które są niepodzielne, czyli zakładamy, że mniejszych jednostek danych nie ma. Pojęcia podstawowe Dana (ang.data) najmniejsza, elementarna jednostka informacji o obiekcie będąca przedmiotem przetwarzania komputerowego. Relacyjna baza danych (ang.database) – zbiór danych w postaci tabel połączonych relacjami. Typ danej (ang. data type) - rodzaj danej, czyli forma zapisu informacji: znakowy (ang.character) dana może przybierać tylko wartości znaków pisarskich liczbowy (ang.number) dana może przechowywać tylko liczby logiczny (ang.logical) dana może przybierać tylko dwie wartości: prawda, fałsz (tak, nie) data (ang.date) dana może przyjmować postać daty i czasu np. rok.miesiąc.dzień godz:min:sek alfanumeryczny (ang.alphanumeric) dana może przybierać wartości znaków ASCII oraz cyfry numeryczny (ang.numeric) wartościami danej mogą być tylko cyfry i znaki: + (plus), - (minus). walutowy (ang.currency) dana może przyjmować wartości liczbowe razem z symbolem waluty notatnikowy (ang.memo) dana może być oddzielnym zbiorem tekstowym służącym do przechowywania dowolnych opisów. binarny (ang.binary) dana może być np. plikiem dźwiękowym lub filmowym. graficzny (ang.graphic) dana przechowuje grafikę np. rysunki. obiektowy (ang.OLE) – dana przechowuje obiekty do których dostęp dokonuje się za pomocą techniki OLE (ang. object linking and embleding), czyli obiektów tworzonych przez inne aplikacje. Format danej (ang. data format) postać wprowadzania i wyświetlania danej np. format 99-999 oznacza, że dana numeryczna może być wyświetlona jako ciąg 2 cyfr, pojedynczej kreski i 3 cyfr. Format ten może służyć do wprowadzani i wyświetlania kodu pocztowego. Rekord (ang.record) zwany także krotką lub wierszem, to pozioma struktura danych opisująca jeden obiekt. Rekord składa się z pól opisujących dokładnie cechy obiektu np. pojedynczego pracownika. Pole (ang. field) zwane także atrybutem lub kolumną, to struktura danych opisująca pojedynczą daną w rekordzie np. nazwisko pracownika. Tabela (ang. table) - nazywamy zbiór rekordów opisujących obiekty w sposób ujednolicony tj. każdy rekord posiada te same nazwy pól. Uwaga: w niektórych systemach baza danych np. dBase każda tabela nazywana jest bazą danych i jest przechowywana w oddzielnych plikach. Klucz podstawowy (ang. primary key field) Klucz podstawowy (ang. primary key) zwany też kluczem głównym to jedno lub więcej pól, których wartość jednoznacznie identyfikuje każdy rekord w tabeli. Taka cecha klucza nazywana jest unikatowością. Klucz podstawowy służy do powiązania rekordów w jednej tabeli z rekordami z innej tabeli. Klucz podstawowy jest nazywany kluczem obcym, jeśli odwołuje się do innej tabeli. Na przykład, w bazie pracowników kluczem podstawowym może być numer ewidencyjny pracownika. Klucz podstawowy jednopolowy (ang. single primary key) Jeśli istnieje pole zawierające dane unikatowe, jak na przykład numer katalogowy czy numer identyfikacyjny, można je zadeklarować jako klucz podstawowy. Jeśli jednak w polu tym powtarzają się wartości, klucz podstawowy nie zostanie ustawiony. Aby znaleźć rekordy zawierające te same dane, należy usunąć rekordy o powtarzających się wartościach bądź zdefiniować wielopolowy klucz. podstawowy. Klucz podstawowy wielopolowy zwany też kluczem złożonym (ang.composed key) W sytuacji, gdy żadne z pól nie gwarantuje unikatowości wartości w nim zawartych, należy rozważyć możliwość utworzenia klucza podstawowego złożonego z kilku pól. Relacja (ang.relation) Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat sposobu poprawnego łączenia powiązanych danych w logiczną całość. W tym celu definiuje się relacje między tabelami. Typy relacji (ang.relation types) 1. relacja jeden-do-jednego 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 części tabeli ze względów bezpieczeństwa, albo do przechowania informacji odnoszącej się tylko do podzbioru tabeli głównej. 2. Relacja jeden-do-wielu Relacja jeden-do-wielu jest najbardziej powszechnym typem relacji. W relacji jeden-do-wielu 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. 3. Relacja wiele-do-wielu W relacji wiele-do-wielu, 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ą. Na przykład, tabele "Zamówienia" i "Produkty" są powiązane relacją wiele-do-wielu zdefiniowaną przez utworzenie dwóch relacji jeden-do-wielu z tabelą "Opisy zamówień". Sortowanie (ang.sorting) Sortowaniem rekordów nazywamy ich porządkowanie według jakiegoś kryterium. Kryterium to nazwa lub nazwy pól według których odbywa się sortowanie. Przykładowo może być to sortowanie rosnące (sortuje wartości w porządku rosnącym (od A do Z, od 0 do 9) lub sortowanie malejące (sortuje wartości w porządku malejącym od Z do A, od 9 do 0). Zapytanie (ang.query) Zapytanie, czyli kwerenda to taka konstrukcja językowa, która pozwala na wyszukiwanie danych z bazy danych za pomocą zadawania pytań. Może to być specjalna konstrukcja języka programowania lub okno graficzne w którym należy podać parametry poszukiwanych danych. W zaawansowanych systemach baz danych kwerend można używać także do wyświetlania, zmiany i analizy danych. Kwerenda wybierająca jest najczęściej używanym rodzajem kwerendy. Służy do otrzymywania danych z tabeli lub tabel i wyświetlania wyników w arkuszu danych, w którym można je następnie przeglądać. Kwerendy wybierające mogą być również używane do grupowania rekordów i obliczania sum, zliczeń, wyliczania średnich i przeprowadzania innych obliczeń. Pojęcia zaawansowane Filtr (ang. filter) Filtr pozwala na wyszukiwanie rekordów spełniające pojedyncze kryterium lub wiele kryteriów albo sortować rekordy w porządku rosnącym lub malejącym. Formularz (ang. screen form) Formularz, czyli tzw. formatka ekranowa służy do wygodnego wprowadzania, edytowania i usuwania danych w tabeli. Wymienione operacje wykonuje się za pomocą okna w którym użytkownik obsługuje pola. Znaczenie pól opisane jest za pomocą etykiet, czyli nazw pól. Raport (ang.report) Raportem nazywamy konstrukcję systemu bazy danych, która służy do definiowania postaci i zawartości danych pobieranych z tabel, a następnie umieszczanych na wydruku. Procedura (ang.procedure) Procedurą nazywamy serię poleceń zapisaną w języku programowania baz danych, służącą do wykonywania obsługi na elementach bazy: tabelach, formularzach, raportach, kwerendach. Makro (ang. macro) Ciąg akcji wykonywanych na tabelach, formularzach, raportach, kwerendach uruchamianych przyciskami umieszczonymi w oknie np. formularza lub gdy wystąpi jakieś zdarzenie np. kasowanie rekordu. Moduł (ang.module) Moduł to podprogram w systemie bazy danych, który wykonuje wiele funkcji użytkowych powiązanych ze sobą tematycznie np. obsługa danych personalnych pracowników lub obliczanie kwot wypłat albo wydruk listy płac. Funkcje te umieszcza się zwykle w menu głównym aplikacji służącej do przetwarzania danych. W niektórych bazach danych aplikacja ta jest nazywana programem wykonawczym bazy (ang. run-time system). System zarządzający bazami (ang.database management system) Jest to program zarządzający (system bazy danych) bazami danych oraz służący do wykonywania tabel, formularzy, kwerend, raportów, makr, procedur, podprogramów oraz produkcji gotowych aplikacji. Najpopularniejsze systemy zarządzania relacyjnymi bazami danych dla komputerów klasy IBM PC to: Access, Dbase, Delphi, FoxPro, Informix, Paradox. Program wykonawczy bazy (ang.run-time system) Gotowa aplikacja bazy danych w postaci pliku(ów ) typu EXE sprzedawana użytkownikowi w celu dostarczenia mu systemu (zbioru programów) za pomocą którego może on przetwarzać swoje dane bez konieczności znajomości podstaw baz danych . Pytania kontrolne Podaj definicję bazy danych. Omów strukturę pojedynczej tabeli, która jest podstawowym elementem bazy danych. Podaj definicję tabeli, rekordu, pola. Jaką bazę danych nazywamy relacyjną? Wymień co najmniej cztery typy danych. Podaj definicję klucza podstawowego. Wyjaśnij pojęcie relacji. Opisz na czym polega relacja jeden-do-jednego? Opisz na czym polega relacja jeden-do-wielu? Opisz na czym polega relacja wiele-do-wielu? W jakim celu stosuje się indeksowanie pola? Podaj definicję sortowania. Podaj definicję kwerendy tj. zapytania. Opisz przeznaczenie: a. formularzy, b. raportów, c. kwerend. 15. Podaj definicję systemu zarządzani bazami danych. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Co to jest baza danych? # Co to jest baza danych? # Wymień rodzaje baz danych i je krótko scharakteryzuj. # Co to jest relacyjna baza danych? # Wymień i scharakteryzuj obiekty MS Access (np. tabele). # Co to jest klucz podstawowy (główny) w bazie danych? # Co to jest klucz obcy w bazie danych? BAZA DANYCH Baza danych to zbiór kartotek i informacji, które można przetwarzać za pomocą odpowiednich programów komputerowych. Multimedialne bazy danych zawierają pola różnorodnego typu: numeryczne, znakowe, tekstowe, a także wskaźnikowe odnoszące się do zapamiętanych w komputerze cyfrowych obrazów, animacji, dźwięków. W zależności od charakteru przedmiotu zainteresowania bazy danych tworzą wielokolumnowe tabele spełniające ścisłe wymogi. Bazę danych można nazwać bazą informacji, ponieważ obejmuje wszelkiego rodzaju zbiory informacji, które tworzone są za pomocą kartotek, segregatorów, teczek na dokumenty, itp. Bazy danych umożliwiają szybkie wyszukiwanie informacji według określonego kryterium nawet z bardzo dużego zbioru. Informatycy mogą tworzyć programy - systemy informatyczne umożliwiające przetwarzanie danych. Do tworzenia tego typu systemów używają odpowiednich programów, np.: Access lub FoxPro. Aby program mógł przetworzyć informacje użytkownik musi je najpierw zgromadzić, np.: na twardym dysku. Niektóre bazy danych zawierają już pewne informacje wprowadzone przez autorów programów - tak jest na przykład w słownikach czy encyklopediach. Tymi informacjami mogą być np.: rysunki, animacje, muzyka umieszczone w programie. Każdy użytkownik komputera może stworzyć własna bazę danych, pod warunkiem, że zna podstawowe metody jej tworzenia. Baza danych może zawierać jedną lub więcej tabel, w których przechowywane będą połączone informacje. Tabela bazy danych zwana również arkuszem danych podzielona jest na kolumny i wiersze. Pola tabeli określają rodzaj informacji zawartych w poszczególnych w poszczególnych kolumnach. Wiersze tabeli to rekordy, zawierają informacje o jednym elemencie tabeli bazy danych i są ponumerowane. Aby posortować (uporządkować) rekordy, należy wskazać pola, według których mają być posortowane, oraz ustalić porządek - rosnący lub malejący. Na rekordach można wykonywać różne operacje, np.: usuwanie lub wstawianie nowych rekordów. Aby wyszukać informację należy utworzyć kryterium wyboru, które będziemy nazywać zapytaniem lub filtrem. Ze względu na budowę: a) Relacyjne bazy danych b) Hierarchiczne bazy danych c) Sieciowe bazy danych d) Obiektowe bazy danych e) Obiektowo - relacyjne bazy danych Ze względu na sposób zarządzania nimi: a) Operacyjne bazy danych b) Analityczne bazy danych Wszystkie te typy baz łączą kilka podstawowych cech, które powinny spełniać systemy baz danych: Możliwość bezpośredniego, interakcyjnego, uzyskiwania informacji z bazy poprzez formułowanie pytań. Możliwość przechowywania danych w postaci trwałej i zarządzanie pamięcią wtórną, w której przechowuje się informacje bazy danych. Zapewnienie kontroli jednoczesnego dostępu do danych. Możliwość odzyskiwania danych w wypadku błędów pracy systemu i ochrony danych przed niepowołanymi użytkownikami. Analityczne bazy danych. Ten typ baz wykorzystywany jest przede wszystkim do przechowywania danych historycznych i informacji związanych z pewnymi wydarzeniami. Są to dane, które nie wymagają modyfikowania, są one statyczne tzn. bardzo rzadko, lub w ogóle nie ulegają zmianom. Bazy te są wykorzystywane po to, aby np. przeanalizować tendencje rynkowe lub na podstawie długoterminowych danych statystycznych przewidzieć prognozy na przyszłość. Przykładem takiej bazy są np. bazy testów chemicznych lub danych pomiarowych. Operacyjne bazy danych. Bazy operacyjne są to bazy wykorzystywane wszędzie tam, gdzie istnieje potrzeba nie tylko na gromadzenie danych, ale również na możliwość ich modyfikowania. Ten typ baz przechowuje dane dynamiczne, tzn. takie, które ulegają ciągłym zmianom i przedstawiają aktualny stan rzeczy, której dotyczą. Zazwyczaj to ten typ bazy można spotkać w różnych organizacjach, firmach. Przykładem takiej bazy danych są np. bazy inwentaryzacyjne lub bazy obsługi zamówień. Hierarchiczne bazy danych Jest to pierwsza udana elektroniczna baza danych, do tej pory jeszcze używana w dużych magazynach. Powstała na początku lat sześćdziesiątych, oparta jest o strukturę drzewiastą o wielu gałęziach. Wszystkie elementy danych w bazie hierarchicznej są zorganizowane w bardzo logiczny sposób, to znaczy każda wartość obiektu danych jest logicznie powiązaną z jedną lub kilkoma wartościami innego obiektu danych. Hierarchiczna baza danych ma wiele zalet: przede wszystkim jest łatwa do wdrożenia, ma bardzo prostą i łatwą do zrozumienia strukturę, oraz zazwyczaj bardzo krótki czas dostępu (o ile baza danych jest poprawnie napisana oraz poprawnie są stworzone relacje). Wadą takiej bazy jest to, że pozwala zobrazować jedynie relacje jedno-jedno i jednowiele lub wiele-jedno. Sieciowe bazy danych Jest to zmodyfikowana wersja modelu hierarchicznego, stworzona przede wszystkim w celu rozwiązania problemów związanych z bazami danych opartych właśnie o model hierarchiczny. Elementy danych w tym modelu, są zorganizowane w strukturę drzewiasta podobnie jak w przypadku modelu hierarchicznego. Jednak, inaczej niż w modelu hierarchicznym, model sieciowy pozwala na definiowanie relacji wiele-wiele w postaci struktury drzewiastej bez powtarzania poszczególnych wartości w ramach obiektu danych. Zaletą sieciowego modelu baz danych jest szybkość, z jaką można odczytać dane, oraz większe możliwości bazy. Obiektowe bazy danych (ODBMS)Obiektowe bazy danych nie są określone żadnym oficjalnym standardem, nie ma żadnych teorii, czy nawet ogólnie przyjętego zbioru zasad dotyczących konstruowania obiektowych systemów zarządzania bazami danych (OSZBD). Nie ma, tak jak jest to w przypadku relacyjnych baz danych, ogólnie przyjętej metody projektowania takich baz, ani jednolitej terminologii dotyczącej tej tematyki. Obiektowe bazy danych są efektem połączenia koncepcji opracowanych na gruncie: bazy danych, obiektowych języków programowania i ogólnych rozważań na temat obiektowego postrzegania świata. Jednym z podstawowych celów tego typu bazy danych jest bezpośrednie odwzorowanie obiektów i powiązań między nimi wchodzących w skład aplikacji na zbiór obiektów i powiązań w bazie danych. Cechą ODBMS jest to, że pozwala na przechowywanie danych o dowolnej strukturze, zdefiniowanej przez projektanta, co powoduje że taka baza sprawdza się wszędzie tam, gdzie relacyjna baza danych napotyka trudności, przede wszystkim chodzi tutaj dynamicznie rozwijający się Internet i WWW. Relacyjno - obiektowe bazy danych (ORDBMS) ORDBMS jest stosunkowo nowym modelem baz danych, który powstał w wyniku ewolucji systemów relacyjnych w kierunku obiektowych. Posiada wszystkie cechy bazy relacyjnej rozszerzonej o możliwości bazy obiektowej, chodzi tutaj przede wszystkim o możliwość przechowywania danych multimedialnych, przestrzennych, czy np. abstrakcyjnych; co do tej pory dla bazy relacyjnej nie było możliwe do uzyskania. Jednocześnie prosty interfejs powoduje, że ORDBMS są zdecydowanie bardziej \"przyjazne\" dla przeciętnego użytkownika w porównaniu z bazami obiektowymi Operacyjne bazy danych Operacyjne bazy danych.Bazy operacyjne są to bazy wykorzystywane wszędzie tam, gdzie istnieje potrzeba nie tylko na gromadzenie danych, ale również na możliwość ich modyfikowania. Ten typ baz przechowuje dane dynamiczne, tzn. takie, które ulegają ciągłym zmianom i przedstawiają aktualny stan rzeczy, której dotyczą. Zazwyczaj to ten typ bazy można spotkać w różnych organizacjach, firmach. Przykładem takiej bazy danych są np. bazy inwentaryzacyjne lub bazy obsługi zamówień. Analityczne bazy danych Analityczne bazy danych.Ten typ baz wykorzystywany jest przede wszystkim do przechowywania danych historycznych i informacji związanych z pewnymi wydarzeniami. Są to dane, które nie wymagają modyfikowania, są one statyczne tzn. bardzo rzadko, lub w ogóle nie ulegają zmianom. Bazy te są wykorzystywane po to, aby np. przeanalizować tendencje rynkowe lub na podstawie długoterminowych danych statystycznych przewidzieć prognozy na przyszłość. Przykładem takiej bazy są np. bazy testów chemicznych lub danych pomiarowych Relacyjne bazy danych (RDBMS) Za autora technologii relacyjnych baz danych uważa się E. F. Codda. Ostatecznie standard RDBMS został opracowany przez ANSI X3H2. Zwykle produkt kwalifikuje się przy pomocy wersji specyfikacji języka SQL’96 ostatni to SQL’92. Model danych Dane przechowywane są w tabelach, z których każda ma stalą ilość kolumn i dowolna ilość wierszy. Wiersze odpowiadają niepodzielnym krotkom (tuple), a kolumny odpowiednim atrybutom (attribute). Kolumny zawierają dane określonego typu, po jednej wartości w wierszu. Typy są zdefiniowane na etapie projektowania bazy danych i jest ich określona ilość, maja stały rozmiar i zwykle są to ogólnie znane typy proste (liczba, data, godzina, ciąg znaków, znak, itp.). Każda tabela (relacja) ma zdefiniowany klucz (key) wyróżniony atrybut lub kilka atrybutów, którego wartość jednoznacznie identyfikuje dany wiersz. Język zapytań Dane z bazy są wybierane na podstawie wartości z konkretnych pól w krotkach. Zapytania mogą mieć prosta postać i wymagać danych z wyłącznie jednej tabeli, jak również mogą być bardzo wyrafinowane wymagając od systemu operowania łączeniem (join), zagnieżdżaniem (nesting), różnica i suma teorii zbiorów (set union/difference) oraz innymi operacjami. Model obliczeniowy Wszelkie przetwarzanie danych oparte jest na wartościach pól w krotkach. Krotki nie posiadają uniwersalnego identyfikatora. Nie ma tez zabezpieczenia przed odnoszeniem się do innego wiersza tej samej tabeli. Przeglądanie wyników zapytań odbywa się przy pomocy \\\"kursora\\\" umożliwiającego przeglądanie wiersza po wierszu. Podobnie ma się sprawa uaktualniania danych. Manipulacja relacjami odbywa się w sposób globalny przy użyciu operatorów algebry relacji lub temu podobnych jeżyków - przetwarzanie wiersza po wierszu nie jest dozwolone. Relacyjna baza danych dominuje w zastosowaniach komercyjnych: ok. 95% rynku baz danych. Access jest systemem zarządzania bazami danych, działającym w środowisku WINDOWS. Dzięki specyficznej organizacji bazy danych w postaci jednego pliku o rozszerzeniu .mdb Access oferuje znacznie bogatsze konwencje dotyczące nazewnictwa obiektów bazy danych niż systemy, w których pojedynczym obiektom odpowiadają osobne pliki. Został on pomyślany tak, aby pomagać w zbieraniu, odzyskiwaniu i prezentowaniu danych. Access oferuje użytkownikom sześć zasadniczych rodzajów obiektów przeznaczonych do budowy systemu bazy danych. Są to tabele, zapytania, formularze, raporty, makropolecenia i moduły. Każdemu z tych elementów można nadać nazwę składającą się maksymalnie z 64 znaków. Dozwolone są przy tym wszystkie znaki alfanumeryczne ( litery i cyfry ), spacje i znaki specjalne. (1. Projektowanie bazy danych Przy pierwszym uruchomieniu okno Accessa nie wygląda zbyt imponująco. Pasek menu zawiera tylko dwie pozycje: Plik i Pomoc. Pasek narzędzi zawiera szereg przycisków, z których dostępne są na razie: Nowa baza danych, Otwórz bazę danych, Sufler i Pomoc. Access oferuje cały zestaw pasków narzędzi, które są wyświetlane stosownie do wykonywanych przez nas czynności. Jedną z ciekawych cech paska narzędziowego jest jego mobilność. Można go przeciągnąć myszką w dowolne miejsce i tak zmienić rozmiar okienka, w którym wyświetlane są przyciski, by uzyskać największy komfort pracy. 2. Tabela w Accessie Definiowanie tabeli w Accessie jest rzeczą łatwą, wystarczy bowiem w oknie bazy danych kliknąć zakładkę Tabela, a następnie przycisk Nowy. Access wyświetli wtedy pole dialogowe z dwoma przyciskami: Kreatory tabel i Nowa tabela. Pierwszy z nich uruchamia jednego z wielu „pomocników” - podprogramów, których zadaniem jest automatyczne tworzenie obiektów bazy danych według życzeń użytkownika. 3. Projektowanie zapytań Projektowanie zapytań odbywa się w oknie projektu zapytania. Aby je otworzyć należy: - w oknie bazy danych kliknąć zakładkę Zapytanie, a następnie przycisk Nowy - wybrać polecenie Plik | Nowy | Zapytanie - kliknąć znajdujący się na pasku narzędziowym przycisk nowego zapytania. W każdym przypadku pojawi się pole dialogowe z dwoma przyciskami: Kreatory zapytań i Nowe zapytanie. Tylko wybór tego drugiego spowoduje otworzenie okna projektu zapytania. Pierwszy uruchomi procedurę automatycznego tworzenia zapytań, czyli jednego z asystentów. 4. Projektowanie formularzy Aby zbudować nowy formularz na „fundamencie” wybranej tabeli należy wyróżnić jej nazwę w oknie bazy danych i kliknąć przycisk nowego formularza na pasku narzędziowym. Spowoduje to pojawienie się pola dialogowego Nowy formularz, w którym znajduje się lista wszystkich tabel i zapytań Wybierz z nazwą wskazaną w oknie bazy danych oraz dwa duże przyciski: Kreatory formularzy i Pusty formularz. Wybierając jeden z nich decydujemy się na skorzystanie z pomocy Accessa lub na budowę formularza od początku. 5. Projektowanie raportów Aby utworzyć raport należy wyróżnić jego nazwę w oknie bazy danych i nacisnąć przycisk nowego raportu na pasku narzędzi lub użyć polecenia Plik | Nowy | Raport. O ile rozwijana lista w polu dialogowym Nowy raport zawiera nazwę właściwego zapytania, klękamy przycisk Kreator raportów. Pierwszy krok to wybór jednego z kilku dostępnych rodzajów raportów: Jednokolumnowego, Grupy podsumowania, Wydruku seryjnego S Ford, Podsumowania lub Tabelarycznego. 6. Makropolecenia Makropolecenia w Accessie to procedury, które można uruchomić i, których działanie powoduje wykonanie jednej lub kilku predefiniowanych czynności, zwanych także akcjami. Każde makropolecenie to po prostu lista czynności wraz z ich argumentami i ewentualnymi warunkami, decydującymi o tym, czy dana czynność jest wykonywana czy nie. Na pojedyncze makropolecenie może składać się nie więcej niż 999 osobnych czynności. Wyrażenie warunkowe musi dać się zapisać za pomocą maksymalnie 255 znaków. Z tylu też znaków może składać się komentarz, opisujący pojedynczą czynność w makropoleceniu. Liczba ta jest także górną granicą długości pojedynczego argumentu czynności. Najważniejsze z zastosowań makropoleceń: - wykonanie dowolnego polecenia z dowolnego menu dostępnego w Accessie - stworzenie indywidualnego paska menu wraz z poleceniami dla dowolnego formularza - obsługa systemowych pól dialogowych, emulacja działań z użyciem klawiatury - wyświetlanie własnych pól dialogowych z komunikatami - sprawdzanie poprawności wprowadzanych danych - zmiana wartości danych w dowolnych detalach formularzy i niektórych detalach raportów - zmiana wartości prawie wszystkich atrybutów formularzy, raportów, ich sekcji i znajdujących się na nich detali - filtrowanie wierszy wyświetlanych w formularzu, dowolna zmiana wiersza bieżącego, wyszukiwanie wierszy według wyspecyfikowanych kryteriów - otwieranie i zamykanie formularzy, drukowanie raportów, uruchamianie zapytań wyszukujących i modyfikujących, automatyczne dostarczanie danych dla zapytań z parametrem - uruchamianie innych aplikacji, zarówno dla Windows, jak i dla DOS-u, wymiana danych pomiędzy aplikacjami, import, eksport i dołączanie tabel innych baz danych, arkuszy roboczych i plików tekstowych - uruchamianie i zatrzymywanie makropoleceń, anulowanie zdarzenia, które uruchomiło makropoleceniem, „zamrożenie” ekranu na czas działania makropolecenia, zatrzymanie aplikacji. 7. Moduły Moduły są to zbiory procedur i funkcji napisane w języku Access Basic.) KLUCZ PODSTAWOWY Klucz podstawowy: jest najważniejszym ze wszystkich kluczy. To on reprezentuje całą tabelą w bazie danych. Musi też spełniać wszystkie te same kryteria, co klucz kandydujący. Dzięki niemu możliwe jest tworzenie relacji pomiędzy tabelami. Klucz podstawowy wybieramy spośród kluczy kandydujących. Zasady definiowania klucza podstawowego: 1) Każda tabela powinna posiadać dokładnie jeden klucz podstawowy ( kluczy kandydujących może być kilka); 2) Wszystkie klucze podstawowe w bazie danych muszą się od siebie różnić - dwie tabele nie mogą posiadać identycznego klucza podstawowego. KLUCZ OBCY Klucz obcy wykorzystywany jest do tworzenia relacji pomiędzy parą tabel. Jest on kombinacją jednego lub więcej atrybutów przedstawionych w dwóch lub większej liczbie relacji. 2.Opis normalizacji Normalizacja to proces organizacji danych w bazie danych. Polega on na tworzeniu tabel i ustanawianiu pomiędzy nimi powiązań według reguł obowiązujących zarówno przy ochronie danych, jak i uelastycznianiu bazy danych przez eliminowanie powtarzających się i niespójnych zależności. Powtarzające się dane niepotrzebnie zajmują miejsce na dysku i są przyczyną powstawania problemów z obsługą. Jeśli konieczna jest zmiana danych istniejących w więcej niż jednej lokalizacji, musi być ona przeprowadzona we wszystkich lokalizacjach w ten sam sposób. Implementacja zmiany adresu klienta jest o wiele łatwiejsza, jeśli dane są przechowywane tylko w tabeli Klienci i w żadnym innym miejscu bazy danych. Co to jest „niespójna zależność” ? O ile przeglądanie tabeli Klienci w poszukiwaniu adresu konkretnego klienta można nazwać zachowaniem intuicyjnym, to poszukiwanie w tej tabeli pensji, której wypłaty wymaga pracownik od klienta, nie ma żadnego sensu. Pensja pracownika jest związana z pracownikiem lub zależy od pracownika i dlatego powinna być przeniesiona do tabeli Pracownicy. Niespójne zależności mogą utrudniać dostęp do danych, ponieważ ścieżka ich odnajdywania może zostać utracona lub uszkodzona. Istnieje kilka reguł normalizacji baz danych. Każda reguła nosi nazwę „postać normalna”. Jeśli przestrzegana jest pierwsza reguła, o postaci bazy danych mówi się, że jest „pierwszą postacią normalną”. Jeśli przestrzegane są pierwsze trzy reguły, postać bazy danych przyjmuje się za „trzecią postać normalną”. Chociaż możliwe są inne poziomy normalizacji, trzecia postać normalna uważana jest za najwyższy poziom wymagany przez większość aplikacji. Jak to bywa z wieloma formalnymi regułami i specyfikacjami, rzeczywistość nie zawsze pozwala na ich dokładne odwzorowanie. Ogólnie, do odnalezienia niedogodności normalizacja wymaga dodatkowych tabel i dla niektórych osób jest to uciążliwe. Przed podjęciem decyzji o złamaniu jednej z pierwszych trzech reguł normalizacji należy upewnić się, że projekt aplikacji przewiduje występowanie problemów, takich jak powtarzające się dane lub niespójne zależności. Do poniższych opisów dodane zostały przykłady. Pierwsza postać normalna W poszczególnych tabelach wyeliminuj powtarzające się grupy. Dla każdego zestawu danych pokrewnych utwórz oddzielną tabelę. Dla każdego zestawu danych pokrewnych określ klucz podstawowy. Do przechowywania podobnych danych w jednej tabeli nie należy używać wielu pól. Na przykład rekord służący do śledzenia pozycji inwentarzowej, która może pochodzić z dwóch różnych źródeł, może zawierać pola Kod sprzedawcy 1 oraz Kod sprzedawcy 2. Co się zdarzy po dodaniu trzeciego sprzedawcy? Dodawanie pola nie dostarcza odpowiedzi. Wymaga to modyfikacji programu i tabel oraz nie umożliwia obsługi zmieniającej się dynamicznie liczby sprzedawców. Zamiast tego należy umieścić wszystkie informacje o sprzedawcach w oddzielnej tabeli o nazwie Sprzedawcy, a następnie połączyć magazyn ze sprzedawcami za pomocą klucza z numerem pozycji, albo sprzedawców z magazynem za pomocą klucza z kodem sprzedawcy. Druga postać normalna Utwórz oddzielne tabele dla zestawów wartości, odnoszących się do wielu rekordów. Ustal powiązania tabel za pomocą klucza obcego. Rekordy nie powinny zależeć od niczego innego niż klucz podstawowy tabeli (w razie potrzeby może to być klucz złożony). Rozważmy, na przykład, adres klienta w systemie księgowym. Obecność adresu konieczna jest w tabeli Klienci, ale również w tabelach Zamówienia, Wysyłka, Faktury, Należności i Inkaso. Zamiast przechowywać adres w postaci wpisu w każdej tabeli, przechowuje się go w jednym miejscu: albo w tabeli Klienci, albo w oddzielnej tabeli Adresy. Trzecia postać normalna Wyeliminuj pola, które nie zależą od klucza. Wartości rekordu, które nie są częścią jego klucza, nie należą do tabeli. Zazwyczaj, jeśli zawartość grupy pól odnosi się do więcej niż jednego rekordu tabeli, należy rozważyć umieszczenie tych pól w oddzielnej tabeli. Na przykład w tabeli Rekrutacja pracowników może znajdować się nazwa i adres uczelni, którą ukończył kandydat. Do korespondencji seryjnej potrzebna jest jednak kompletna lista uczelni. Jeśli informacje o uczelniach przechowywane są w tabeli Kandydaci, nie ma możliwości wyświetlenia listy uczelni bez aktualnych kandydatów. Utwórz oddzielną tabelę Uczelnie i połącz ją z tabelą Kandydaci za pomocą klucza z kodem uczelni. WYJĄTEK: Stosowanie reguł trzeciej postaci normalnej, chociaż teoretycznie wskazane, nie zawsze jest praktyczne. Chcąc wyeliminować wszystkie możliwe wewnętrzne zależności pomiędzy polami tabeli Klienci, należy utworzyć oddzielne tabele dla miast, kodów pocztowych, przedstawicieli handlowych, klas klienta i innych czynników, które mogą być zduplikowane w wielu rekordach. Normalizacja oznacza teoretycznie poprawę wydajności. Jednak wiele mniejszych tabel może spowodować spadek wydajności lub brak możliwości otwarcia pliku i przekroczenie pojemności pamięci. Bardziej realne może okazać się zastosowanie trzeciej postaci normalnej tylko do często zmienianych danych. Pozostawiając niektóre pola zależne, zmień projekt aplikacji tak, aby po zmianie dowolnego pola wymagała od użytkownika sprawdzenia wszystkich pól pokrewnych. Inne postacie normalizacji Istnieje czwarta postać normalna, zwana również postacią normalną Boyce'a-Codda (BCNF) oraz piąta postać normalna, ale są one rzadko wykorzystywane w praktyce. Zlekceważenie tych reguł może skutkować mniej doskonałym projektem bazy danych, ale nie powinno ono wpływać na funkcjonalność. Integralność danych Model relacyjny dostarcza dodatkowych, specyficznych dla siebie postaci reguł integralności: Integralność encji: każda tabela musi posiadać klucz główny, a wartości klucza głównego muszą być w ramach tabeli unikalne i nie równe NULL. W szczególności, zapobiega to wystąpieniu w tabeli powtórzeń wierszy. Integralność referencyjna: każda wartość klucza obcego może być albo równa jakiejś wartości klucza głównego występującej w tabeli powiązanej, lub (ewentualnie) NULL. Pociąga to za sobą konieczność określenia reguły postępowania w wypadku usuwania wiersza z tabeli powiązanej, co mogłoby unieważnić niektóre wartości kluczy obcych w tabelach do niej się odnoszących. W grę wchodzą trzy postacie takiej reguły: o Restricted: usunięcie wiersza jest zabronione, dopóki nie zostaną usunięte lub odpowiednio zmodyfikowane wiersze z innych tabel, których wartości kluczy obcych stałyby się wskutek tej operacji nieważne; o Cascades: usunięcie wiersza powoduje automatyczne usunięcie z innych tabel wszystkich wierszy, dla których wartości kluczy obcych stały się nieważne; o Nullifies: nieważne wartości kluczy obcych ulegają zastąpieniu przez NULL. Hierarchiczny model danych W modelu hierarchicznym dane są na zasadzie rekordów nadrzędnych-podrzędnych, tzn. rekordy przypominają strukturę drzewa. Każdy rekord (za wyjątkiem głównego) jest związany z dokładnie jednym rekordem nadrzędnym. Dane w takim modelu są znajdowanie na zasadzie wyszukiwania rekordów podrzędnych względem rekordu nadrzędnego. Przykładem takiego modelu może być struktura katalogów na dysku twardym komputera. [Edytuj] Relacyjny model danych (RDBMS) Relacyjny model baz danych został wymyślony przez E.F. Codda na przełomie lat 70. i 80. zeszłego stulecia. Standard RDBMS został ostatecznie opracowany przez ANSI X3H2. Dane w takim modelu przechowywane są w tabelach, z których każda ma stałą liczbę kolumn i dowolną liczbę wierszy. Każda tabela (relacja) ma zdefiniowany klucz danych (key) - wyróżniony atrybut lub kilka takich atrybutów, którego wartość jednoznacznie identyfikuje dany wiersz. Wyszukiwanie danych odbywa się za pomocą odwołania się programu do danego klucza i identyfikacji danego wiersza za pomocą tegoż. Obiektowe bazy danych (ODBMS) Obiektowe bazy nie są zdefiniowane żadnym oficjalnym standardem. Obowiązujący obecnie standard opracowany przez ODMG został opublikowany w 1993 roku. Jednym z podstawowych celów modelu obiektowego jest bezpośrednie odwzorowanie obiektów i powiązań miedzy nimi wchodzących w skład aplikacji na zbiór obiektów i powiązań w bazie danych. Dzięki mechanizmom obiektowym można tez zwiększyć niezależność danych od aplikacji poprzez przeniesienie procedur obsługi danych (w postaci metod) do systemu zarządzania baza. Model danych Model danych w obiektowych bazach danych posługuje się pojęciami takimi jak klasy, atrybuty, metody, udostępnia identyfikatory obiektów (OID), hermetyzacje danych oraz metod i wielokrotnego dziedziczenia. Obiektowe bazy danych łącza własności obiektowości i obiektowych języków programowania z możliwościami systemów bazodanowych. Rozszerzają możliwości obiektowych jeżyków programowania (takich jak C++, Java czy Smalltalk) czyniąc z nich narzędzia do łatwego i efektywnego tworzenia systemów baz danych zmniejszając stopień złożoności i ilość kodu programów. Język zapytań Obiektowo zorientowany język staje się zarówno językiem programowania jak i językiem bazy danych, zapewniając bezpośrednia zależność miedzy obiektem w aplikacji a obiektem w bazie. Z takiej bezpośredniej zależności korzystają języki definicji danych, przetwarzania danych oraz zapytań. OBDMS zostały do tej pory zintegrowane z językami C++, C, Smalltalk, Java oraz LISP. Standard ODMG-93 dostarcza dodatkowo język OQL. Język ten nie jest w pełni kompatybilny z SQL’86 i SQL92. Pomija zupełnie pojecie typu w znaczeniu postrzeganym przez model obiektowy. Wynik zapytania w języku OQL może natomiast być struktura, literałem, obiektem lub zbiorem obiektów. Większość baz obiektowych jest jednak wyposażona w SQL w celu zapewnienia zgodności ze standardem ODBC (Object Database Connectivity). Model obliczeniowy Mimo, ze podobnie jak w RDBMS, wciąż możliwe są zapytania deklaratywne, głównym sposobem tworzenia i modyfikacji obiektów jest korzystanie bezpośrednio z odpowiedniego dla bazy obiektowego języka programowania. Ponadto tworzone obiekty otrzymują unikalne identyfikatory niezmienne w czasie, które mogą być wykorzystywane przez inne obiekty w celu definiowania powiązań z tymi obiektami. Zwykle identyfikatory są konwertowane na wskaźnik do pamięci w chwili wczytywania konkretnego obiektu - uzyskujemy dzięki temu skrócenie dostępu do obiektu gdy jest on obecny np. w pamięci podręcznej. Liczące się na rynku ODBMS Jasmine [Computer Associates], Gemstone, O2, Object Store [Object Design], Objectivity/DB [Objectivity], Versant ODMBS [Versant]. Co to jest obiektowa baza danych? 1: Zbiór obiektów, ich stan, zachowanie się i związki występujące między nimi określone są zgodnie z obiektowym modelem danych. 2: Jest to system, który umożliwia zarządzanie bazą danych, zorientowany obiektowo. 3: Jest to system, który dziedziczy wszystkie zasadnicze cechy technologii obiektowej (istnienie złożonych obiektów, tożsamość obiektów, enkapsulacja danych i procedur, dziedziczenie, funkcje polimorficzne, rozszerzalność o nowe typy danych) i baz danych (trwałość danych, oddzielenie logicznego i fizycznego poziomu danych, zarządzanie wielodostępem, odtwarzanie spójnego stanu danych po awariach, zapytania ad hoc, zarządzanie transakcjami i in.). Co to jest obiektowy model danych? Model danych, w którym wykorzystano cechy obiektowości tj.: pojęcie klasy i obiektów klasy, enkapsulacja (encapsulation), mechanizm identyfikacji obiektów (object identity), dziedziczenie (inheritance), przeciążanie funkcji (overriding) i późne wiązanie (late binding). Co to jest obiekt? Obiekt jest podstawowym pojęciem dla obiektowości. Obiekt reprezentuje sobą konkretny pojedynczy byt (książkę, osobę, samochód), charakteryzowany poprzez opis stanu (atrybuty obiektu) i zachowania tego bytu (metody obiektu). Opis ten jest realizowany przy użyciu klasy. Co to jest klasa i obiekty klasy? Klasa jest zbiorem obiektów o jednakowej strukturze wewnętrznej (atrybutach i metodach). O obiektach w tym rozumieniu mówi się, że są obiektami pewnej klasy. Opis stanu obiektów klasy realizowany jest za pomocą atrybutów natomiast opis zachowania się obiektów za pomocą metod (procedur, operacji), które można wykonywać dla obiektów tej klasy. Czym różnią się pojęcia obiektu, klasy oraz obiektów klasy dla obiektowych baz danych od tych samych pojęć dla popularnych obiektowych języków programowania? Pojęcia te są z reguły zgodne dla OBD i obiektowych języków programowania (np. C++, Smalltalk itp.). Różnice mogą być spowodowane tym, iż pojęcia te nie zawsze są rozumiane jednakowo w różnych językach programowania a nawet w różnych podejściach do obiektowych baz danych. Co to są atrybuty? Atrybuty stanowią opis statycznej struktury klasy i obiektów, opis ich poszczególnych cech. Wyróżnia się: a) atrybuty klasy czyli tzw. atrybuty dzielone (shared attributes) np.: zestaw nadklas danej klasy oraz atrybuty wspólne dla wszystkich obiektów (czyli występujące jednorazowo dla wszystkich obiektów klasy a nie dla każdego obiektu osobno), b) atrybuty obiektów klasy czyli zbiór atrybutów występujących każdorazowo wraz z występowaniem obiektu; atrybuty te mogą być proste (należące do prostych typów danych) lub złożone. Co to są metody? Metody stanowią opis dynamicznych zachowań obiektów, czyli operacje widocznych na zewnątrz obiektu a pozwalające dokonywać manipulacji na danych; metoda aktywowana jest przez komunikat adresowany do tzw. obiektu docelowego (target object) i w standardowym przypadku operuje wyłącznie na danych wchodzących w skład tego obiektu. Jak definiujemy metodę? Definicja metody składa się z: deklaracji (signature), która określa nazwę metody, nazwy i klasy argumentów, klasę rezultatów (o ile metoda zwraca rezultat) oraz ciała (body), które określa implementację metody i składa się z serii instrukcji w jakimś języku programowania. Jakie elementy składają się na standardowy opis klasy? Są to następujący elementy: a) nazwa klasy, b) cechy (atrybuty) klasy; c) opis statycznej struktury obiektów: zbiór atrybutów obiektów klasy, d) opis dynamicznych zachowań obiektów: zbiór definicji metod. hierarchiczna baza danych baza danych o drzewiastej strukturze powiązań; rekordy w hierarchicznej bazie danych są powiązane jednokierunkowo: rekord "pierwotny" bazy tego typu może być związany z wieloma "rekordami potomnymi", natomiast rekord potomny może wskazywać tylko na jeden rekord pierwotny; taka organizacja bazy podnosi wydajność oprogramowania bazy danych, ale utrudnia przeprowadzanie modyfikacji struktury danych; pierwsze realizacje hierarchicznych baz danych powstały we wczesnych latach 60., m.in. dla maszyn IBM serii 360. Modele baz danych Modele danych Model hierarchiczny Cechy podstawowe struktura danych ma postać drzewa węzły -- typy opisywanych obiektów łuki -- zwi±zki typu ojciec-syn drzewo jest uporz±dkowane, tj. na każdym poziomie kolejno¶ć węzłów jest okre¶lona opis obiektu (rekord) zbudowany z pól zawieraj±cych dane opisuj±ce obiekt zwi±zki zrealizowane jako wskaĽniki Przykład Hierarchiczna struktura danych Języki obsługi o charakterze nawigacyjnym operacje typu: GET LEFTMOST typ WHERE warunek GET NEXT typ Ograniczenia nie ma zwi±zków typu n-m (np. oddziały pomieszane w kilku budynkach) tylko jeden rodzaj zwi±zku między dwoma typami obiektów dodatkowe zwi±zki (np. pracownik-budynek): o dodatkowe drzewa hierarchii o odsyłacze do rekordów "oryginału" Znaczenie praktyczne system IBM IMS (1978) o bardzo wielkie dane zgromadzone o poprzednik użyty w programie Apollo nowych projektów nie robi się Model obiektowy (object-oriented) Cechy podstawowe obiekt w bazie reprezentuje obiekt w ¶wiecie zewnętrznym typ obiektowy (klasa): o definicja złożonego typu danych (może zawierać inne typy obiektowe lub ich kolekcje) o procedury (metody) i operatory do manipulowania tymi danymi tożsamo¶ć obiektu jest niezależna od zawarto¶ci danych dziedziczenie (inheritance): o strukturalne: potomek dziedziczy strukturę danych o behawioralne: potomek dziedziczy metody i operatory Cechy dodatkowe enkapsulacja: wnętrze obiektu dostępne jedynie w sposób w nim zdefiniowany polimorfizm: tak samo nazwane metody i operatory działaj± swoi¶cie w zależno¶ci od klasy obiektu Przykład Model obiektowy -- zawieranie i dziedziczenie Zalety modelu do¶ć naturalna reprezentacja ¶wiata łatwo¶ć działania na złożonych obiektach duża podatno¶ć na zmiany Znaczenie praktyczne w zastosowaniach naukowych lub eksperymentalnych przykłady systemów: GemStone, O2 przewidywana ewolucja baz relacyjnych w kierunku obiektowo-relacyjnych Klucze Klucz główny (primary key) funkcja: jednoznaczne identyfikowanie wiersza tabeli budowa: o ogr. deklaratywne primary key o dla UID z atrybutów -- odpowiednie kolumny o dla UID zawieraj±cego zwi±zki -- kolumny odpowiednich kluczy obcych o wszystkie kolumny klucza głównego musz± być obowi±zkowe (not null) poż±dane cechy: o niezmienno¶ć o mała długo¶ć (wydajno¶ć!) sztuczne klucze główne: o klucz numeryczny o mechanizm do generowania unikalnych numerów (tzw. sekwencja) z kluczem głównym jest z reguły zwi±zany indeks unikalny Klucze obce funkcja: realizuj± zwi±zki budowa: o dodatkowe kolumny klucza obcego odpowiadaj±ce kolumnom wskazywanego klucza głównego o ogr. deklaratywne foreign key sposób obsługi kasowania/modyfikacji wskazywanego klucza głównego: o restrykcja o kaskada reprezentacja łuku: o dwa osobne klucze obce opcjonalne o dodatkowy warunek wykluczania (ograniczenia check lub wyzwalacz) należy rozważyć zdefiniowanie indeksu dla klucza obcego Rozkład relacji i normalizacja redundancję usuwa się przez rozkład relacji rozkład odwracalny: można odwrócić przez naturalne zł±czenie rozkład relacji powinien doprowadzić do tzw. postaci normalnej rozkład relacji nie powinien powodować utraty zależno¶ci istniej±cych w relacji pierwotnej Pierwsza postać normalna relacja jest w 1NF gdy wszystkie atrybuty s± atomowe -- prostych typów 1NF jest wymogiem dla rachunku relacyjnego, a więc i języków zapytań kontrprzykłady: o atrybut tablicowy o zbiór Uwaga: Dalej będzie mowa jedynie o relacjach spełniaj±cych 1NF Druga postać normalna relacja jest w 2NF gdy każdy atrybut niekluczowy (nie należ±cy do klucza wła¶ciwego) jest zależny funkcyjnie od całego klucza wła¶ciwego przyczyn± braku 2NF jest zwykle błędne poł±czenie danych kontrprzykład: spis przepustek o nazwisko zależy funkcyjnie od id prac., czyli od fragmentu klucza o rozkład IB, IN doprowadza do 2NF # Id prac. # Budynek Nazwisko Trzecia postać normalna # Id prac. relacja jest w 3NF gdy o jest w 1 NF i o każdy atrybut niekluczowy jest bezpo¶rednio zależny funkcyjnie od całego klucza wła¶ciwego możliwe przypadki naruszenia 3NF: o naruszenie 2NF o istnienie zależno¶ci tranzytywnej (a więc niebezpo¶redniej) od klucza wła¶ciwego przyczyn± braku 3NF jest zwykle błędne poł±czenie danych 3NF jest zazwyczaj wystarczaj±ca dla usunięcia praktycznie ważnych anomalii każdy schemat można doprowadzić do 3NF zachowuj±c: o zależno¶ci o odwracalno¶ć rozkładu kontrprzykład o jest 2NF, bo klucz jest jednoatrybutowy o zależno¶ć tranzytywna: I S P (pensja zależy funkcyjnie od stanowiska) o rozkład INS, IP doprowadza do 3NF Nazwisko Stanowisko Pensja Postać normalna Boyce-Codda relacja jest w BCNF gdy każda nietrywialna zależno¶ć funkcyjna jest zależno¶ci± od klucza (niekoniecznie wła¶ciwego) w BCNF zależno¶ci tranzytywne nie istniej± w ogóle nie każdy schemat można doprowadzić do BCNF z zachowaniem zależno¶ci kontrprzykład: relacja w 3NF z anomaliami: o istniej± tu klucze: MU, UK (nazwy ulic mog± się powtarzać w różnych miastach, zakładamy że nazwy miast się nie powtarzaj±) o o o o występuj± zależno¶ci: anomalie: usuwaj±c ulicę możemy utracić informację o mie¶cie schemat jest w 3NF: brak atrybutów niekluczowych schemat nie jest w BCNF: K nie jest kluczem o o schemat jest nierozkładalny do BCNF bez utraty zależno¶ci Miasto Ulica Kod najczę¶ciej zależno¶ci prowadz±ce do braku BCNF nie s± istotne z punktu widzenia projektu Czwarta postać normalna relacja jest w 4NF gdy je¶li każda nietrywialna zależno¶ć wielowarto¶ciowa jest zależno¶ci± od klucza (niekoniecznie wła¶ciwego) schemat doprowadza się do 4NF przez rozkład kontrprzykład: o istniej± zależno¶ci o o o o Zajęcia i nie ma zależno¶ci funkcyjnych jest więc BCNF występuje nadmiar informacji: powtórzone dane podręczników i wykładowców rozkład ZW, ZP doprowadza do 4NF Wykładowca Podręcznik Zwi±zki między postaciami normalnymi 4NF => BCNF => 3NF => 2NF => 1NF 1.1. Definicje W szerokim znaczeniu: Baza danych. Zorganizowany zbiór informacji, zawierający jednolity rodzaj danych. W węższym znaczeniu Baza danych (ang. data base). Zbiór uporządkowanych, powiązanych ze sobą tematycznie danych zapisanych w pamięci komputera Każda BD jest złożona z elementów o określonej strukturze: rekordów lub obiektów. Z BD związane są z nią mechanizmy zarządzania, określające m. in. zasady porządkowania, wyszukiwania, edycji i modyfikacji Potocznie bazą danych określa się także oprogramowanie do tworzenia i zarządzania bazami danych o Źródło: na podst. A. Rydzewski: Ilustrowany słownik techniki komputerowej, Warszawa 1995 Definicja techniczna: Baza danych to zestaw związanych ze sobą obiektów (tablic, formularzy, raportów, kwerend i zbiorów poleceń) utworzonych i zorganizowanych przez system zarządzania bazą danych (database manegement system - DBMS) o Źródło: P. Dyson: Leksykon komputerowy. Warszawa 1994 Zatem baza danych to: DBMS (system zarządzania bazą danych) Zbiór obiektów (np. plik) Database manegement system [DBMS] (system zarządzania bazą danych - oprogramowanie użytkowe, które steruje danymi w bazie danych. Oprogramowanie to zajmuje się m. in.: organizacją, przechowywaniem, odzyskiwaniem, ochroną i nadzorem nad integralnością danych. DBMS może także: formatować raporty, importować i eksportować dane, a także dzięki własnemu językowi skryptów formułować zapytania (query) o Źródło: P. Dyson: Leksykon komputerowy. Warszawa 1994 Definicja prawna: Baza danych oznacza zbiór danych lub jakichkolwiek innych materiałów i elementów zgromadzonych według określonej systematyki lub metody, indywidualnie dostępnych w jakikolwiek sposób, w tym środkami elektronicznymi, wymagający istotnego, co do jakości lub ilości, nakładu inwestycyjnego w celu sporządzenia, weryfikacji lub prezentacji jego zawartości o Źródło: USTAWA z dnia 27 lipca 2001 r. o ochronie baz danych // Dz.U. z 2001 r. Nr 128, poz. 1402. - Toż tryb dostępu: http://ks.sejm.gov.pl:8009/proc3/ustawy/3121_u.htm 1.2 KLUCZOWE POJĘCIA Rekord (zapis) podstawowa jednostka informacji z bazie danych zawierająca pełny zestaw informacji o gromadzonych obiektach (np. opis bibliograficzny, dane teleadresowe itp.) Wyróżniamy dwa podstawowe typy rekordów: Jednostopniowe, tzn. takie, rekord dzieli się na pola. W schemacie tym rekordy symbolizują wiersze tabeli, zaś polami są kolumny Pola Tytuł Autor Rekordy Podtytuł Miasto Rok Kowalski, Jan Poezje Warszawa 2001 Kowalski, Jan Wspomnienia Wrocław 2001 Wysocka, Ewa Wspomnienia młodość Wrocław 1999 …… Wielostopniowe, tzn. takie, rekord dzieli się na pola, pola zaś na podpola. Bazy tego typu mają własne, zróżnicowane interfejsy (nie są to tabele, lecz wyświetlane sekwencyjnie formularze) Przykładowy rekord: Hasło Nazwisko Kowalski Imię Strefa 1 Tytuł Poezje Podtyt. Strefa 2 Wyd. Wyd. 3 Równol. Strefa 4 Miejsce Warszawa Wydawca Jan Data (1945-1998) PIW Rok 2001 1.3 Typologia baz danych (wybrane podziały) 1. Ze względu na zastosowany model danych wyróżniamy: o bazy kartotekowe o tzw. płaskiej strukturze (np. ISIS, MAK). W modelu tym: istnieje tylko jeden typ rekordów powtarzające się dane są fizycznie wpisywane do każdego rekordu (cechuje je duża redundancja) bazy tego typu nieekonomicznie zarządzają zasobami i są trudne do reorganizacji Przykład bazy kartotekowej Rekord 1 Rekord 2 Rekord 3 N: Kowalski, Jan T: Poezje M: Kraków R: 2000 N: Kowalski, Jan T: Wspomnienia M: Wrocław R: 2001 N: Wysocka, Ewa T: Filozofia M: Kraków R: 2001 o bazy strukturze relacyjnej (np. Access). W modelu tym: istnieje kilka źródeł danych (tabel) połączonych tzw. relacjami brak powtarzających się danych, gdyż te są zwykle wydzielone jako osobna tabela bazy tego typu można łatwo modyfikować łatwiejszy jest nadzór nad utrzymaniem integralności danych bazy tego typu ekonomicznie zarządzają zasobami (cechuje je mała redundancja) 5. Strukturalny język zapytań SQL 6. Zaimplementowany w większości profesjonalnych DBMSach np. Oracje, DB2, Sybase, Accessie, czy MySQL. W przypadku Accessa język ów jest raczej rzadko wykorzystywany bezpośrednio do pracy w konsoli. Zwykle pośrednikiem pomiędzy SQL a użytkownikiem są kwerendy, makra itp. SQL umożliwia łatwą współpracę różnych baz danych i wykorzystanie ich w systemach internetowych i rozproszonych. Definicja: Struktured query language [SQL] (strukturalny język zapytań) - w relacyjnych DBMS język zapytań wynaleziony przez IBM dla użycia na dużych komputerach. Został no też zaadaptowany przez Oracle Corporation do zastosowania na inne platformy (w tym PC). SQL jest obecnie standardem w większości profesjonalnych DBMS, szczególnie opartych na architekturze klient-serwer … SQL zawiera ok. 60 poleceńi jest używany do tworzenia i modyfikacji zapytań o raz sterowania dostępem do danych zorganizowanych w tablicach. SQL może być używany zarówno jako interfejs interaktywny, jak również jako wbudowane polecenia w programie aplikacji [na podst. P. Dyson: Leksykon komputerowy. Warszawa 1994) Inne mechanizmy: 1. Raporty - czyli wydruki 2. Formularze (Access), maski (MAK) - interfejsy ekranowe (inaczej: sposoby prezentacji danych) 3. Makra (skrypty) - miniprogramy wspomagające wykonywanie szeregu kolejnych czynności (np. sterowanie formularzami) 4. Moduły (fragmenty kodu źródłowego w języku programowania wysokiego poziomu, np. Visual Basic, C++ itp.) - moduły pełnią tę samą funkcje co marka. Są stosowane do projektowania skomplikowanych operacji. Np. obliczeń, skalowania, interakcyjnych interfejsów itp. 5. Mechanizmy grupowej modyfikacji (np. kwerendy aktualizujące w Accesie, czy procedury MAKa) 6. Strony dostępu (formularze umożliwiające dostęp przez www, Access 2000 i nowsze) (Wyżej wymienione pojęcia są wspólne dla wszystkich baz danych!!!) 1.6. Typ danych (na przykładzie Accessa) Zależnie od rodzaju danych jakie będziemy gromadzić w określonym polu. W bazie możliwe jest określenie różnych typów danych (wybrane) Tekst (pozwala na wpisanie do pola maksymalnie 255 znaków) - (1 B) Memo/nota (65,535 znaków), ale zajmuje dużo pamięci !!! (16 B) Liczba (konieczne wtedy, gdy chcemy dokonywać obliczenia na danym polu) (1,2,4,8 lub 16 B) Data/Godzina (8 B) Waluta (8 B) Autonuemer (4 lub 16 B) Tak/Nie (1 B) (tzw. „ptaszek”) Obiekt Ole (umożliwia dołączanie do bazy obiektów multimedialnych i różnych plików, np. muzyką, rysunki, filmy, dokumenty tekstowe, archiwa itp.) - do 1 GB Hiperłącze (umożliwia aktywowanie danych jako link) Systemy zarządzania bazami danych – podstawy DBMS Omówione dotąd narzędzia (i szereg innych, do których postaram się nawiązać w formie dygresji w dalszym ciągu wykładu) stwarzają niezłe możliwości elektronicznego przechowywania i przetwarzania danych, jednak w wielu sytuacjach nie są one wystarczające. Szczególnie w większych organizacjach (firmach, instytucjach) pojawia się zapotrzebowanie na bardziej jednolity i systematyczny model zarządzania wielkimi ilościami informacji, a przechowywanie danych np. w plikach tekstowych o określonym ad hoc formacie, przetwarzanych za pomocą tworzonych każdorazowo dla wąskich potrzeb skryptów i programów opartych na standardowych narzędziach manipulacji plikami i ich zawartością nie wystarcza. Dla wypełnienia tego zapotrzebowania stworzono właśnie systemy zarządzania bazami danych (Database Management Systems, DBMS), które stanowią główny temat naszych zajęć. O istnieniu potrzeby skorzystania z DBMS w danej sytuacji świadczyć mogą następujące czynniki: powiązane ze sobą informacje przechowywane są oddzielnie (w różnych plikach, i być może na różnych komputerach), uzyskanie odpowiedzi na zapytania wymagające czerpania informacji z różnych zbiorów danych staje się częstą potrzebą i okazuje się coraz trudniejsze; coraz częściej pojawiają się zadania, których wykonanie wymaga przenoszenia informacji poza komputerem i przetwarzania niezautomatyzowanego, np. raporty tworzone przez jeden z działów organizacji muszą być przekazywane do dalszego przetwarzania innemu działowi zanim przyjmą postać ostateczną, z koniecznością pośredniej konwersji formatów itp. zabiegów ,,ręcznych'', stwarzających okazje do powstawania błędów i opóźnień; te same dane są powielane w wielu różnych plikach, obsługiwanych przez różne narzędzia, prowadząc do zbędnej komplikacji systemu, nadmiernych kosztów i trudności w utrzymaniu spójności danych; rosnąca objętość informacji zaczyna przekraczać możliwości dotychczas używanych narzędzi, prowadząc do spadku wydajności systemu; coraz trudniejsze staje się pogodzenie potrzeby wspólnego dostępu wielu użytkowników do tych samych danych z koniecznością utrzymania ich integralności, tj. ,,porządku'', zgodności z założonymi formatami i z aktualnym stanem faktycznym, oraz ze złożonymi formami kontroli dostępu, tj. wymogiem wyraźnego definiowania zakresu dopuszczalnych operacji dla każdego użytkownika. Łatwo jest wymienić wiele przykładów sytuacji, w których skorzystanie z DBMS jest wskazane: dane personalne o pracownikach większej firmy lub instytucji wykorzystywane są równolegle np. przez dział kadr, dział płacowy, dział socjalny i być może jeszcze inne. Zarazem część tych danych (np. o wysokości wynagrodzeń) może mieć charakter poufny, na mocy przepisów wewnętrznych firmy lub praw ogólnych, dostęp do odczytu danych (a tym bardziej ich modyfikacji) musi być ściśle reglamentowany i udostępniany jedynie w zakresie koniecznym dla zadań danego użytkownika; dane o stanie magazynu firmy muszą być zarazem modyfikowane na podstawie raportów o sprzedaży, jak i dostępne dla działu zaopatrzenia w celu odpowiedniego uzupełniania zapasów; może z nich równiez korzystać np. dział marketingu w celu planowania promocji. Inne typowe obszary zastosowań aplikacji opartych na DBMS to systemy finansowo-księgowe, bazy danych o klientach firmy, spisy abonentów danej usługi (telekomunikacja, elektrownie itp.), systemy ewidencji ludności, katalogi asortymentu, katalogi biblioteczne, i wiele innych. Właściwości DBMS Z bazą danych w używanym tu węższym znaczeniu, i z systemem zarządzania bazą danych (DBMS), mamy do czynienia wtedy, gdy dane przechowywane są w sposób scentralizowany w jednym miejscu, i ponadto wszelkie działania na tych danych zarządzane są w sposób scentralizowany, poprzez wyspecjalizowane w tym celu oprogramowanie. Oznacza to m. in., że w bazie danych przechowywane informacje ujęte są w pewną logiczną strukturę, ,,rozumianą'' przez DBMS, i operacje na danych definiuje się w terminach tej logicznej struktury (a nie w terminach np. umiejscowienia danych w konkretnym pliku, z punktu widzenia systemu plików obsługiwanego przez system operacyjny). Omówimy teraz krótko główne właściwości DBMS, pożądane z punktu widzenia wcześniejszych uwag o zastosowaniach. Współdzielenie danych Informacje przechowywane w bazie danych są zazwyczaj przeznaczone do wykorzystania przez wielu użytkowników, często w tym samym czasie. DBMS ma więc za zadanie zapewnić efektywne mechanizmy wielodostępu. W tym celu często stosuje się w budowie DBMS tzw. model klient-serwer: programy używane przez użytkowników (klienci) są oddzielone od programu bezpośrednio wykonującego operacje na danych (serwera); zazwyczaj klienci komunikują się z serwerem poprzez mechanizmy sieciowe, korzystając z określonego protokołu komunikacji -- umożliwia to uruchamianie klientów na innych komputerach niż serwer, co zwiększa bezpieczeństwo (dostęp klientów do serwera jest ograniczony do operacji możliwych w ramach protokołu) i odciąża serwer np. od zadań związanych z końcową obróbką i prezentacją danych będących wynikiem zapytania. Integracja danych Centralne składowanie wszystkich danych dotyczących danego obszaru działalności umożliwia uniknięcie zbędnych powtórzeń tych samych informacji -- ułatwiając utrzymanie spójności, oraz usprawnia uzyskiwanie odpowiedzi na pytania złożone -wymagające czerpania informacji z różnych logicznie zbiorów danych. Integralność danych Łatwiej jest również utrzymać poprawność i aktualność informacji składowanej centralnie; ponadto powierzenie faktycznych operacji na danych jednemu, dobrze sprawdzonemu programowi serwera zmniejsza ryzyko naruszenia integralności danych w stosunku do sytuacji, gdy operacje te wykonywane są za pomocą wielu, tworzonych niezależnie i często ad hoc narzędzi. Bezpieczeństwo danych Scentralizowanie dostępu do danych umożliwia zastosowanie w DBMS własnego mechanizmu kontroli i autoryzacji dostępu, bardziej szczegółowego aniżeli umożliwia to sam system operacyjny w stosunku do dostępu do plików. Dzięki wykorzystaniu modelu klient-serwer nie jest konieczne, aby każdy użytkownik posiadał dostęp do maszyny serwera bazy danych poprzez inne mechanizmy, aniżeli protokół komunikacyjny danego DBMS. Abstrakcja i niezależność danych Ponieważ końcowy użytkownik bazy danych jest oddzielony przez DBMS od wewnętrznych mechanizmów działania bazy danych, formatu zapisu itp., i ma tylko do czynienia (poprzez program klienta i ew. protokół komunikacji) jedynie z logiczną strukturą danych, to ułatwia to rozwijanie aplikacji korzystających z tych danych w kierunku nowych zastosowań czy np. wprowadzenie zmian w wewnętrznej organizacji bazy danych bez konieczności zmian w klientach. Zadania DBMS Jądro DBMS -- w modelu klient-serwer, program serwera -- zajmuje się faktycznymi operacjami związanymi z dostępem do fizycznego zapisu danych na urządzeniach pamięci masowej. Operacje te zlecane są przez programy klienckie, z którymi ma bezpośrednio do czynienia użytkownik końcowy, zazwyczaj za pośrednictwem mechanizmów komunikacji sieciowej. ,,Językiem'' w jakim się komunikują klienci z serwerem jest określony protokół wyższego poziomu (aplikacyjny). Niestety, w przeciwieństwie do np. protokołu HTTP używanego w sieci WWW, protokoły baz danych klient-serwer nie są zestandaryzowane -- DBMS każdego producenta posługuje się właściwym sobie protokołem. Nierzadko powstaje więc potrzeba posłużenia się dodatkowym pośrednictwem w postaci tzw. middleware (np. sterowniki ODBC), aby uwolnić się od konieczności korzystania jedynie z narzędzi dostarczonych przez producenta jądra DBMS w budowie programów klienckich -- za cenę mniejszej wydajności i dodatkowej komplikacji systemu. Zadania realizowane przez jądro DBMS można sklasyfikować w sposób następujący: 1. 2. 3. Zarządzanie zbiorami danych o tworzenie nowych zbiorów (jednostek logicznej struktury DBMS, tj. baz danych, tabel, ...) o usuwanie zbiorów o modyfikowanie struktury zbiorów o wstawianie, aktualizowanie i usuwanie danych Wyszukiwanie informacji w odpowiedzi na zapytania otrzymane od programów klienckich, jądro bazy danych zwraca dane będące wynikiem odpowiedniego przeszukania bazy danych, a programy klienckie zajmują się ich prezentacją użytkownikowi po ewentualnej dalszej obróbce; Zarządzanie bazą danych jako całością o tworzenie kont użytkowników o definiowanie uprawnień dostępu o monitorowanie działania bazy danych