Zobacz, jakie to proste - naucz się tworzyć baz Jak tworzyć formularze i raporty? ■ Jak modyfikować strukturę tabel? ■ Jak stosow ać mechanizmy wymiany danych? ■
• 7
,
‘t ,
• t r-,‘
„ . "■■.Ml 'J:) '
1 ‘ W ł v ł *t' P ' i
'
A
, r. t r t ó r i A i /
■2'- . ^ \py.
A
IU I
'
PI
ADAM PELIKANT tSMłSkWi r •Ślb'iii
W s tę p ............................................................................................................. 5 Rozdział 1.
Zakres b a d a ń ................................................................................................ 7 Podstawy teorii m nogości.......................................................................................................... 8 Normalizacja .............................................................................................................................10
Rozdział 2.
Projektowanie bazy danych — narzędzia wizualne ................................15 Tworzenie tabel .........................................................................................................................15 Wizualne tworzenie zapytań................................................................................................... 23 Tworzenie formularzy ............................................................................................................. 29 Tworzenie raportów................................................................................................................. 48 Zaawansowane metody obsługi aplikacji ..............................................................................54 Synchronizacja zawartości podformularza z kontrolką................................................ 54 Zapytanie przez form ularz................................................................................................ 64 Wykorzystanie zapytań modyfikujących z poziomu form ularzy........................................75
Rozdział 3.
Strukturalny język zapytań SQL w wersji MS Jet SQL ........................... 85 Informacje podstawowe...........................................................................................................85 Zapytania wybierające — SELECT ...................................................................................... 86 Składnia podstawowa........................................................................................................86 Sortowanie w zapytaniach................................................................................................ 88 Filtrowanie w zapytaniach................................................................................................ 89 Grupowanie i funkcje agregujące.................................................................................... 94 Zapytania do wielu tabel — złączenia................... 97 Zapytanie z podzapytaniem............................................................................................ 102 Unia — koniunkcja zbiorów (krotek)............................................................................ 109 Inne formy zapytań wybierających................................................................................ 115 Zapytania modyfikujące d a n e ................................................................................................122 Zapytania modyfikujące strukturę b a z y ............................................................................... 127 Tworzenie ta b e l................................................................................................................ 127 Modyfikowanie struktury tabel ......................................................................................134
Rozdział 4.
Zastosowanie języka zapytań SQL z poziomu formularzy ................... 139 Zastosowanie zapytań wybierających jako dynamicznych źródeł danych...................... 139 Wywoływanie zapytań modyfikujących dane z poziomu form ularza.............................. 145
Rozdział 5.
Mechanizmy wymiany danych ................................................................ 155 Zastosowanie obiektów DAO (Data Access Objecls) ....................................................... 155 Remote Data Objects (R D O ).................................................................................................169 ActiveX Data Objects (A D O )................................................................................................170
4
Rozdział 6.
Bazy danych. Pierwsze starcie
Zastosowanie mechanizmów wymiany danych przy tworzeniu aplikacji .......................................................................... 183 Zadanie magazynowe ............................................................................................................ 183 Obliczanie wyniku meczu na podstawie strzelonych bram ek...........................................189 Wyświetlanie zawartości b a zy .............................................................................................. 190 Zakończenie .............................................................................................193 Skorowidz ................................................................................................. 195
W otaczającej nas rzeczywistości w sposób lawinowy przybywa danych, które chcemy i musimy przetwarzać. Można próbować przenieść prawo Moore’a mówiące, że „moc obliczeniowa komputerów co dwa lata podwaja się, bez wzrostu ceny procesora”, na zadania przetwarzania danych. Jednak od pewnego czasu coraz dobitniej mówi się o ograniczeniach stosowalności prawa Moore’a ze względu na ograniczenia technolo giczne, jak chociażby najbardziej trywialne, że szerokość ścieżki nie może być mniej sza niż średnica atomu. W przypadku przyrostu przetwarzanych danych możemy wysnuć hipotezę, że ich przyrost jest szybszy niż liniowy i może być opisany funkcją x“, gdzie a e ( l, 2>. Bardziej w oparciu o intuicję niż rzeczywiste przesłanki skłaniam się ku hi potezie, że wykładnik ten powinien wynosić ■Niestety brak dostatecznie precy zyjnych badań skazuje nas w tej mierze na spekulacje. Pomimo to wzrost liczby prze twarzanych danych jest faktem. Dodatkowo możemy zakładać, że nie jest to proces, który będzie kiedykolwiek spowolniony, ograniczony. Przytoczone tutaj fakty wskazują na wagę poruszanej problematyki. Głównym narzędziem przetwarzania da nych są systemy zarządzania danymi i tej tematyce poświęcona jest niniejsza książka. Pierwsze próby tworzenia baz danych powinny opierać się na środowisku, które po zwala na łatwą autokontrolę poprawności tworzonych projektów. Takim środowiskiem jest MS Access. Dodatkowo na korzyść tej aplikacji przemawia integracja w jednym miejscu narzędzi do tworzenia struktury relacyjnej oraz programowania końcówki klienta. Atutem jest również duża zgodność ze standardem języka zapytań SQL. Książka jest przeznaczona dla osób, które rozpoczynają swoją przygodę z bazami da nych, i ma stanowić łagodne wprowadzenie w tę tematykę. Głównymi adresatami opra cowania są studenci studiów technicznych, kierunku informatyka. Nie wyklucza to odbiorców studiujących na innych kierunkach, pragnących poszerzyć swoją wiedzę o nowoczesne metody przetwarzania danych. W zasadzie dla opanowania materiału zawartego w książce nie jest potrzebna żadna wstępna wiedza, a jedynie ogólne wy kształcenie. Jednakże wskazana jest umiejętność posługiwania się notacją matematyczną ze szczególnym uwzględnieniem teorii mnogości. Przydatne jest posiadanie podstawo wych umiejętności programowania w językach wyższego rzędu, ze wskazaniem na umie jętność kodowania w języku Yisual Basic lub innym pokrewnym.
6
Bazy danych. Pierwsze sta rcie
Na treść książki składają się głównie praktyczne przykłady, które szczegółowo omó wiono. Każdy z nich został przetestowany, dlatego precyzyjne jego odtworzenie musi prowadzić do uzyskania przedstawionych rezultatów. Takie podejście spowodowało, że nie są prezentowane pełne schematy składni poleceń zawarte w dokumentacji w po staci zapisów z wieloma opcjami. Bardziej istotne jest przedstawienie praktycznego wykorzystania możliwości środowiska niż poznanie wszystkich potencjalnych moż liwości, nawet tych, których zastosowanie w praktyce jest znikome. Największy nacisk położono na przedstawienie języka SQL oraz jego zastosowania do budowania końcó wek klienta. Język ten jest podstawą wszystkich współczesnych systemów relacyjnych, a duża zgodność ze standardem pozwala przenieść zdobyte doświadczenie na inne środowiska. Równie istotnym elementem jest szerokie przedstawienie mechanizmów wymiany danych DAO i ADO, które, chociaż zilustrowane na przykładzie MS Access, stanowią ważne metody dostępu do danych (szczególnie ADO) dla każdego języka wyższego rzędu. Jedną z najważniejszych przesłanek wpływających na formę tej książki są słowa, jakie w sławetnej rozmowie padły z ust Bohra do jego ucznia Heisenberga — „...piszę o trudnych sprawaclt tak, aby moja żona mogła to zrozumieć”. Prostota wywodu nie ma być świadectwem „populamonaukowości”, jak to się często słyszy, a jedynie dowo dem zrozumienia przez autora materii, którą opisuje. Słowa te nie są świadectwem braku skromności autora wobec szerokiego zakresu omawianej tematyki, a jedynie wyrazem jego głębokiego przeświadczenia o tym, że wykłady powinny być tworzone w oparciu o wła sne badania i doświadczenia z konstruowaniem aplikacji — to sprzyja prostocie formuło wania tez. Podobnego zdania był autor najlepszego podręcznika z fizyki, R. Feynman. Książka ta jest sumą doświadczeń z wieloletniego prowadzenia wykładów z porusza nej w niej tematyki, zarówno na Politechnice Łódzkiej, jak i w Wyższej Szkole In formatyki. Od wielu lat wykłady te są oparte na tworzeniu przeze mnie „on-line” — na oczach studentów bazy danych zawierającej materiał prezentowany w tej książce. Nie bez znaczenia jest fakt kilkunastoletniej opieki nad kołem naukowym baz danych. Uwagi studentów tego gremium miały znaczący wpływ na postać tej publikacji.
W zasadzie każdy sposób rozpoczęcia tego wywodu ma istotne wady ze względu na zło żoną materię, w której przyszło nam się poruszać. Trudno jest jak w każdej dojrzałej na uce wskazać jednoznacznie miejsce, w którym się ona zaczyna. Dlatego spróbujmy tak. W najszerszym rozumieniu możemy przyjąć definicję: Każdy uporządkowany zestaw informacji nazywamy bazą danych. Abstrahujemy przy tym od sposobu organizacji i zakresu, jaki ta informacja obejmuje. Możemy zatem powiedzieć, że po pierwsze bazy danych istnieją od czasów, gdy czło wiek zgromadził jakiekolwiek informacje; po drugie skoro nie ograniczamy zakresu tematycznego baz danych do żadnego konkretnego zbioru ograniczonego, to opisują one wszystko. Ponieważ bazy danych w tym rozumieniu istnieją „od zawsze” i opisują „wszystko”, badania nad nimi są bez wątpienia najważniejszą dziedziną nauki. Taki wywód, mimo że jest tylko popisem „retoryki”, wskazuje jednak na wagę badania po ruszanych tutaj zagadnień. Dodatkową weryfikacją tego twierdzenia jest ciągle rosnące zapotrzebowanie na specjalistów z zakresu baz danych w firmach. Współcześnie interesują nas aplikacje, które zarządzają danymi zawartymi w bazie danych i przetwarzają je. Nazywamy je systemami zarządzania bazą danych (SZBD). Wielokrotnie pojęcia bazy danych i systemu zarządzania bazą danych są utożsamiane. Od początku lat 70. ubiegłego wieku króluje relacyjny model przetwarzania danych i pomimo różnych prób wprowadzenia innych rozwiązań, w zastosowaniach stanowi on ponad 90% całego rynku. W celu opisania podstaw matematycznych tego modelu wskazane jest przypomnienie podstawowych informacji z zakresu teorii mnogości.
Rodzinę zbiorów złożoną ze wszystkich zbiorów Ak, gdzie k e K , oznaczamy przez {At : k e K } . Zbiór K jest wtedy zbiorem wskaźników. Niech / będzie ustalonym niepustym zbiorem, nazywanym dalej przestrzenią ~ \ I A . cl 1. UK k Klasą zbiorów /l* jest zbiór G spełniający warunek A K e At : w(at )} => {at e G : w(a, )}. Wielokrotnie pojęcia przestrzeni, klasy i rodziny traktowane sąjako tożsame. A' = {a £ I :a £ A} — dopełnienie zbioru A do przestrzeni I. Działania na zbiorach w przestrzeni / Suma
Iloczyn
W szczególności dla pary zbiorów A i B, takich
żc A cz I a
B cl I:
Suma zbiorów A i B A u B s {a e A v a e Iloczyn zbiorów A i B A c \B = {a e A a o e B }s [a e A: a e B)= {a e B :a e A} Różnica zbiorów A i B A \ B = {a e A a a £ B} = [a e A : a e B} Jeżeli A jest przestrzenią, różnica A\B jest dopełnieniem zbioru B do przestrzeni A. Prawa de Morgana dla przestrzeni I: