Politechnika Wrocławska Wydział Informatyki i Zarządzania Kierunek: Inżynieria Zarządzania Bazy danych Instrukcja laboratoryjna Witold Rekuć Wrocław, 28.09.2016
Spis treści Temat 1. System zarządzania bazą danych MS ACCESS - baza danych i jej składowe. Zakładanie tabel - definiowanie pól. Własności pól. Definiowanie kluczy. Aktualizacja tabel. Powiązania między tabelami...3 Temat 2. Formularze...7 Temat 3. Zapoznanie się z BD firmy handlowej (Firm2013.accdb)....9 Temat 4. Kwerendy wybierające: definiowanie, sortowanie, projekcja, selekcja, złączenie, grupowanie (podsumowanie). Kwerendy tworzące tabelę...12 Temat 5. Operacje teoriomnogościowe algebry relacji - "kwerendy usuwające" i " kwerendy dołączające"...16 Temat 6. Operacja dzielenia...21 Temat 7. Operacja Teta - złączenie...22 Temat 8. Raporty...23 Temat 9. Modelowanie i projektowanie logiczne bazy danych...24 Załącznik...28 1. ZAŁĄCZNIK DO TEMATU 1. PROJEKTOWANIE TABEL....28 1.0. Wstęp...28 1.1. Wyrbbane typy danych (dziedzin wartości)...29 1.2. Formaty danych...29 1.3. Maska wprowadzania...30 1.4. Reguła poprawności (dla pola tabeli lub dla rekordu tabeli)...31 1.5. Wymagane / opcjonalne wprowadzenie. Wartość zerowej długości...32 2. ZAŁĄCZNIK DO TEMATU 4. KWERENDY WYBIERAJĄCE, GRUPOWANIE I AGREGACJA,. KWERENDY TWORZĄCE TABELĘ...32 2.0. Wstęp...32 2.1. Wiersz Pole...32 2.2. Wiersz Sortuj...33 2.3. Wiersz Pokaż...33 2.4. Wiersze Kryteria:...33 2.5. Grupowanie i agregacja danych...34 2.6. Usuwanie duplikatów z tabeli wynikowej...35 2.7. Ograniczenie tabeli wynikowej do podanej liczby rekordów...35 2.8. Definiowanie kwerendy tworzącej tabelę....35 2.9. Oglądanie zdefiniowanej tabeli...35 3. ZAŁĄCZNIK: OPIS BAZY DANYCH "FIRM2013.ACCDB"...36 2
Temat 1. System zarządzania bazą danych MS ACCESS - baza danych i jej składowe. Zakładanie tabel - definiowanie pól. Własności pól. Definiowanie kluczy. Aktualizacja tabel. Powiązania między tabelami Zadanie 1 1. Utwórz bazę danych o nazwie "Sesja" zawierającą trzy tabele: Tabela "Studenci" o nagłówku: Numer liczba z zakresu od 1 do 15000 (kontrolować przy wprowadzeniu) Nazwisko tekst długości nie większej niż 30 znaków, wyświetlać dużymi literami, musi być wprowadzony Kod pocztowy tekst składający się z pięciu cyfr, trzy ostatnie oddzielić kreską przy wyświetlaniu i wprowadzeniu (maska wprowadzenia bez zapamiętania kreski), pole opcjonalne, może być zerowej długości Kluczem podstawowym tej tabeli jest Numer. Tabela "Przedmioty" o nagłówku: Kod 6-cio znakowy ciąg: 2 litery z zakresu A-F i 4 cyfry oddzielone od liter kreską (w bazie) Nazwa przedmiotu tekst długości nie większej niż 25 znaków, wyświetlać dużymi literami, musi być wprowadzony Kluczem podstawowym tej tabeli jest Kod. Kluczem dodatkowym tabeli jest Nazwa przedmiotu. Tabela "Egzaminy" o nagłówku: Nr studenta właściwości jak w tabeli Studenci Kod przedmiotu Data właściwości jak w tabeli Przedmioty wyświetlać w postaci krótkiej, powinna być nie późniejsza niż "dziś" (kontrolować), wyświetlać domyślną datę - "dziś" Ocena liczba ze zbioru 2,0; 3,0; 3,5; 4,0; 4,5;5,0;5,5 Zdefiniuj dwa klucze: klucz podstawowy zapewniający, że dla danego studenta nie można zarejestrować dwóch egzaminów z danego przedmiotu. klucz dodatkowy zapewniający, że dany student nie może mieć więcej niż jeden egzamin w danym dniu. 3. Dodaj po kilka wierszy to każdej tabeli próbując naruszyć reguły poprawności, ograniczenia wynikające z masek i ograniczenia wynikające z kluczy - uświadom sobie skutki ustawień formatu, maski wprowadzania, reguły poprawności, wartości domyślnej, opcjonalności wprowadzania (null). 4. Wykonaj powiązanie tabel z wymuszeniem więzów integralności, kaskadowej aktualizacji i usuwania rekordów. 5. Otwórz wszystkie trzy tabele w oknach sąsiadujących w poziomie lub pionie i: a) spróbuj dodać do tabeli Egzaminy rekord egzaminu dla nieistniejącego studenta i obserwuj, jak zachowuje się MS ACCESS, b) spróbuj dodać do tabeli Egzaminy rekord egzaminu dla nieistniejącego przedmiotu i obserwuj, jak zachowuje się MS ACCESS, c) spróbuj usunąć z tabeli Studenci rekord studenta, który ma egzaminy i obserwuj, jak zachowuje się MS ACCESS, d) spróbuj usunąć z tabeli Przedmioty rekord przedmiotu, z którego są egzaminy i obserwuj, jak zachowuje się MS ACCESS, e) dla studenta mającego egzaminy zmień numer studenta w tabeli student na inną wartość sprawdź, czy zmieni się ten numer we wszystkich rekordach egzaminów studenta? Wykonaj punkty a) e) przy wyłączonych kaskadowej aktualizacji i usuwania rekordów. 3
Odpowiedz sobie na pytanie: jak wpływa połączenie tabel z wymuszaniem więzów integralności, zgoda na kaskadowe aktualizacje i usuwanie na możliwość dodawania, usuwania i aktualizacji rekordów w tych tabelach? Zadanie 2. Załóż bazę danych do pamiętania danych o stanach materiałów w magazynach. Materiał jest charakteryzowany przez: indeks, nazwę, cenę i jednostkę miary. Magazyn jest charakteryzowany przez numer i adres. Chcemy wiedzieć jakie są stany magazynowe materiałów w magazynach, przy założeniu, że każdy materiał może być składowany w wielu magazynach i każdy magazyn może składować wiele materiałów. Zdefiniuj tabele i powiąż je relacjami. Typy danych w kolumnach i właściwości według uznania. Zadanie 3. Załóż bazę danych do pamiętania danych o składnikach potraw. Potrawa jest charakteryzowana przez: numer, nazwę. Składnik jest charakteryzowany przez numer, jednostkę miary i kod dostawcy. Chcemy wiedzieć, jakie składniki są używane do każdego rodzaju potraw i w jakiej ilości. Zdefiniuj tabele i powiąż je relacjami przy założeniu, że każdy potrawa ma wiele składników i każdy składnik może występować w wielu potrawach. Zakładamy także, że składniki są proste, to znaczy nie składają się z innych składników. Typy danych w kolumnach i właściwości według uznania. Wskazówki do wykonania zadań: 1. Uruchom MS ACCESS, wybierz opcję pusta baza danych..., podaj nazwę bazy danych: Sesja, wskaż folder, w którym będzie ona pamiętana i wybierz polecenie Utwórz. Ukaże się tabela w widoku wprowadzania danych arkusza danych, zamknij tę tabelę i usuń ją z bazy danych. 2. Przejdź do menu i pozycji TWORZENIE. Wybierz ikonę Projekt tabeli. Ukaże się okno projektowania tabeli z trzema kolumnami w górnej części ekranu. Nazwa pola: należy wprowadzić nazwę pola (inaczej: kolumny, atrybutu), np., Numer. W nazwie może wystąpić spacja, natomiast nie może wystąpić kropka lub wykrzyknik, maksymalna liczba znaków w nazwie: 64. Typ danych: należy wskazać typ danych (załącznik 1.1) pola, którego nazwę wprowadzono. Ten typ musi być wybrany z listy typów standardowych (domyślnym jest typ Krótki tekst; po kliknięciu na strzałce wyświetli się lista typów). Opis: można wprowadzić opis pola wyjaśniający, na przykład, sens pola (ale nie jest on obowiązkowy). Wprowadź nazwy pól i typy danych pierwszej tabeli. 3. Przejdź do wprowadzenia danych: wybierz ikonę Widok/Widok arkusza danych. Zapamiętaj poczynione definicje, wprowadzając nazwę tabeli Student zamiast Tabela1, na pytanie ACCESS a, czy chcesz utworzyć klucz podstawowy, na razie odpowiedz Nie.Wprowadź kilka rekordów danych i wybierz znów ikonę Widok/Widok projektu. 4. Dla każdego z pól tabeli można określić dodatkowe wymagania co do wprowadzanych danych, sposobu prezentacji danych itp. Zrobić to należy w rubrykach w dolnej części ekranu (tabela Właściwości pola). Definicje, które tam wprowadzimy dotyczą pola, nazwa którego jest aktualne wybrana. Rozmiar pola: to, co wprowadzamy zależy od typu danych pola; jeśli typ danych: Liczba: należy wybrać z listy jeden z typów numerycznych ; Tekst: można podać, ile znaków maksymalnie można wprowadzić; Wybierz dla Numer studenta liczba całkowita ; dla Nazwisko 30; Format: umożliwia określenie sposobu prezentowania (wyświetlania, drukowania) danych z tabeli. Format zależy od typu danych pola (patrz Załącznik 1.2). Spowoduj, żeby dane w polu Nazwisko były wyświetlane zawsze dużymi literami. Maska wprowadzania: umożliwia sterowanie wprowadzaniem i wyświetlaniem wartości pól podczas ich wprowadzania (Załącznik 1.3). Posługując się maską spowoduj, żeby ACCESS zmuszał Cię do wprowadzenia w polu Kod pocztowy obowiązkowo 5 cyfr. W tym celu należy maskę odpowiednio zredagować. Maska ma maksymalnie trzy sekcje oddzielone średnikiem. W sekcji pierwszej umieszczamy ciąg znaków, zwanych sterującymi, mówiący o strukturze wartości dopuszczalnej dla danego pola. Z listy znaków sterujących maski (Załącznik 1.3) wybierz odpowiednie dla pola Kod pocztowy, to znaczy cyfrę 0 (zero). Maska wprowadzania będzie zawierała 5 zer, bo kod pocztowy 4
składa się z pięciu obowiązkowych cyfr, ale po drugim zerze wstaw kreskę, otrzymując maskę 00-000. W odróżnieniu od znaku 0, kreska jest tu znakiem wstawianym (stałym), nie sterującym (zmiennym). W drugiej sekcji, oddzielonej od pierwszej średnikiem, należy umieścić 1 jeśli każdy wstawiany znak umieszczony w masce nie powinien być pamiętany w tabeli, lecz ma tylko pojawiać się na ekranie przy wprowadzaniu wartości lub 0 jeśli każdy wstawiany znak umieszczony w masce powinien być pamiętany fizycznie w tabeli bazy danych (0 jest znakiem domyślnym, gdy nie użyjemy sekcji drugiej). Jeżeli dla Kodu pocztowego zredagujemy maskę 00-000;0, to pole to będzie miało rozmiar 6, bo kreska będzie pamiętana razem z cyframi. Przy masce 00-000;1 pole to będzie miało rozmiar 5, bo kreska nie będzie pamiętana razem z cyframi. W trzeciej sekcji można wstawić znak, który przy wprowadzeniu danych będzie pojawiał się w każdej pozycji znakowej wprowadzanej wartości. Domyślnym znakiem (gdy nie użyjemy sekcji trzeciej) jest podkreślenie _. Dla pola Kod pocztowy wpisz maskę 00-000;1;? Dla pola Kod (przedmiotu) wybierz odpowiedni znak sterujący dla pierwszych dwóch pozycji i odpowiedni znak dla pozostałych czterech, reszta definicji - jak dla pola Kod pocztowy. Reguła poprawności: można w tej rubryce wpisać warunek, który muszą spełniać wprowadzane w polu wartości (Załącznik 1.4). Dla pól: Numer (studenta): >0 and <=15000; lub Between 1 and 15000. Kod (przedmiotu): tu można zredagować warunek z operatorem Like wzorzec; operator ten nakazuje ACCESS'owi sprawdzić, czy wprowadzana w polu wartość jest zgodna ze wzorcem; przeanalizuj przykłady na końcu punktu Załącznik 1.4; Data: w regule poprawności użyj funkcji (wtedy warunek będzie miał postać <Date(), jako reprezentującej aktualną datę z kalendarza komputera (patrz załącznik 1.4); Wartość domyślna: jest propozycją automatycznie wyświetlaną w polu, do którego wartość ma być wprowadzona; można będzie zgodzić się na tę propozycję, akceptując ją ENTER em lub wprowadzić inną wartość. Wartość domyślna jest tu definiowana za pomocą wyrażenia, którego wartość ACCESS jest w stanie obliczyć. Może to być stała, funkcja lub bardziej złożony wzór (wyrażenie) w zależności od sensu pola. Dla pola Data spowodować, żeby propozycją ACCESS a była data aktualna z komputera. Należy w tym celu wpisać Date(). 5. Po wprowadzeniu i pełnym zdefiniowaniu wszystkich pól tabeli należy zdefiniować klucz podstawowy. Klucz podstawowy możemy zdefiniować w widoku projektu tabeli, na dwa sposoby. Pierwszy: podświetl wiersze wszystkich pól wchodzących w skład klucza (jeśli wiersze pól nie są sąsiadujące przy podświetlaniu należy nacisnąć klawisz Ctrl); następnie kliknij ikonę ze znakiem klucza. Drugi: otwórz okno Indeksów (ikona z błyskawicą), wprowadź nazwę indeksu (najlepiej Primary key),wybierz nazwy pól tworzące klucz oraz ustaw opcje Podstawowy=Tak; Unikatowy=Tak oraz Ignoruj zerowe = Nie. Porządek sortowania według uznania. Jako efekt końcowy, w definicji tabeli przy wybranych nazwach pól ukaże się znak klucza. W przypadku pomyłki należy otworzyć okno Indeksów (ikona z błyskawicą) i w oknie tym nanieść poprawki. 6. Aby zdefiniować klucz dodatkowy należy w oknie Indeksy nadać temu kluczowi nazwę (nazwa indeksu) oraz wybrać nazwy pól składających się na ten klucz. Dla pierwszego pola ustawić opcje: Podstawowy=Nie; Unikatowy=Tak oraz Ignoruj zerowe = Nie. 7. Po zdefiniowaniu klucza (jeśli jest to wymagane) należy zapamiętać tabelę korzystając ze standardowych funkcji MS ACCESS. W widoku Arkusza danych można przejść do próbnego wprowadzenia danych celem sprawdzenia poprawności definicji i jej efektów. 8. Celem powiązania tabel należy wykonać następujące czynności: zamknąć wszystkie tabele, z Menu wybrać pozycję NARZĘDZIA BAZY DANYCH i ikonę Relacje. Pojawi się wtedy małe okno z listą tabel, które zdefiniowaliśmy. Należy dodać wszystkie tabele, które będą wiązane i zamknąć to okno. W efekcie w oknie relacji pojawią się symbole wszystkich tabel, które dodaliśmy. Symbol każdej tabeli prezentuje jej nazwę oraz listę nazw pól (kolumn). Tabele wiążemy parami wskazując pola mające ten sam sens (niekoniecznie nazwę). Wskaż więc pola wiążące tabele, ciągnąc myszką pole jednej tabeli i opuszczając je na odpowiadające mu pole w tabeli drugiej. Pole, które ciągniemy musi być jednym z kluczy lub jego składnikiem, natomiast pole, na które je opuszczamy - kluczem obcym lub jego 5
składnikiem. Jeżeli klucze łączące tabele są złożone (składają się z kilku pól) w oknie definiowania powiązania, które się pojawi, wskaż kolejne składniki tych kluczy. Relacja między powiązanymi tabelami jest typu 1 : n, gdzie n może być równe 1. Jeden (1) występuje po stronie tabeli z kluczem, a n występuje po stronie tabeli z kluczem obcym. 9. W oknie definiowania powiązania znajdziemy opcje Wymuszaj więzy integralności, Kaskadowo aktualizuj pola pokrewne i Kaskadowo usuń rekordy pokrewne. Zaznaczenie opcji Wymuszaj więzy integralności spowoduje, że ACCESS nie pozwoli dopisać wiersza do tabeli z kluczem obcym, jeżeli w tabeli z kluczem (głównym lub dodatkowym) nie ma wiersza pokrewnego. Zaznaczenie opcji Kaskadowo aktualizuj pola pokrewne spowoduje, że przy zmianie wartości pola pokrewnego w tabeli z kluczem nastąpi automatyczna zmiana wartości pól we wszystkich wierszach pokrewnych tabeli z kluczem obcym. Zaznaczenie opcji Kaskadowo usuń rekordy pokrewne spowoduje, że przy usuwaniu wiersza tabeli z kluczem nastąpi automatyczne usunięcie wszystkich wierszy pokrewnych tabeli z kluczem obcym. W zależności od zadania, zaznacz odpowiednie opcje jak wyżej i naciśnij przycisk Utwórz. W przypadku niewykonania polecenia (pojawi się informacja o przyczynie) wróć do tabel lub ich definicji, przeanalizuj wartości wprowadzonych danych i definicje typów danych, usuń niezgodności w wartościach lub definicjach pól pokrewnych. Ponów próbę powiązania. Aby ponownie otworzyć okno definiowania powiązania wróć do okna Relacje. Powtórz czynności jak wyżej. Jeżeli w oknie relacji tabele są powiązane bez wymuszenia więzów, otwórz okno definiowania powiązania dwukrotnie klikając linię łączącą tabele. 10. Wprowadzając dane do tabel zbadaj działanie opcji powiązanie z wymuszaniem integralności, skutki zdefiniowania klucza, opcjonalności wartości, reguł poprawności, masek wprowadzania itp. 6
Temat 2. Formularze Zadanie 1. Zdefiniuj formularz ekranowy dla tabeli Student z Tematu nr 1 o następującej postaci: Numer:... STUDENT Nazwisko:... Kod pocztowy:... Właściwości (czcionka, kolory, cieniowania,...) według własnej fantazji i uznania. Zadanie 2. Zdefiniuj formularz ekranowy dla tabel Student i Egzamin jako formularz złożony składający się z formularza dla tabeli Student i pod-formularza dla tabeli Egzamin). Numer:... STUDENT Nazwisko:... Kod pocztowy:... EGZAMINY STUDENTA: Kod przedmiotu Data Ocena............................................. Właściwości (czcionka, kolory, cieniowania,...) według własnej fantazji i uznania. Wskazówki do wykonania zadania: Formularze są obiektami bazy danych MS ACCESS. Można je definiować za pomocą kreatorów lub ręcznie w widoku projektu. W tym celu należy w oknie bazy danych przejść do menu TWORZENIE i wybrać projekt lub kreator obiektów typu Formularze. W przypadku użycia kreatora, należy podążać za wskazówkami kreatora wybierając odpowiednie opcje i ustawienia. Po zaprojektowaniu formularza kreatorem, można zawsze zmienić jego projekt poleceniem Projektuj. W widoku Projekt są dostępne wszystkie ustawienia wszystkich obiektów widocznych na formularzu. W przypadku zadania nr 2 należy utworzyć formularz, w którym znajduje się pod-formularz. W tym celu należy uzupełnić bazę danych o formularz Egzamin, który powinien mieć formę tabelaryczną. Po zamknięciu formularza Egzamin, należy otworzyć w widoku projektu, wykonany w zadaniu nr 1, formularz Student i przeciągnąć doń - z okna bazy danych - symbol formularza Egzamin. Przeciągnięty formularz Egzamin zostanie osadzony w formularzu Student i stanie się jego pod-formularzem. W dalszych krokach można ulepszyć aranżację formularzy stosując widok projekt. W MS ACCESS 2013 można kreatorem utworzyć formularz złożony wybierając do formularza pola obu tabel pokrewnych i wybierając opcję formularza z pod-formularzem. 7
Temat 3. Zapoznanie się z BD firmy handlowej (Firm2013.accdb). Zadania tematu muszą być wykonane samodzielnie, ręcznie w domu, bez użycia komputera. Celem ćwiczenia jest wstępne zapoznanie się z bazą danych, która jest przedmiotem kolejnych tematów i zada. Zadania: 1. Zapoznaj się ze strukturą BD Firm2013.accdb (Załącznik 3) oraz jej fragmentem danym niżej. Zastanów się nad kluczami głównymi tabel danych niżej (klucze główne są zaznaczone kolorem czerwonym). 2. Zastanów się nad kluczami obcymi tabel; jakie jest powiązanie tabel? (klucze obce są zaznaczone kolorem zielonym). 3. Odtwórz "papierową" postać dokumentu NrFaktury=10/07/92; NrSprzedawcy = 4058; (zacznij od tabeli Dokumenty, mając numery sprzedawców i nabywców znajdź w tabeli FIRMY pełną nazwę i adres sprzedawcy, pełną nazwę i adres nabywcy. Mając klucz tabeli Dokumenty NrFaktury=10/07/92 + NrSprzedawcy = 4058 znajdź w tabeli PozycjeDokumentu wszystkie pozycje dokumentu. Dla każdej znalezionej pozycji dokumentu, mając SmbTow znajdź pełną nazwę towaru w każdej pozycji, stawkę VAT i symbol jednostki miary. Struktura tego dokumentu powinna być jak niżej. Sprzedawca Numer... Nazwa... Ulica...... Miejscowość... Nabywca Numer... Nazwa... Ulica...... Miejscowość... Faktura Numer... Data... Np Symbol Nazwa Jm Cena Ilość Wartość netto Stawka VAT Wartość brutto Razem... Podpis wystawcy 4. Odpowiedz na pytanie: dlaczego w tabeli Dokumenty nazwa jednej z kolumn jest zaznaczona dwoma kolorami? 5. Dla niżej podanych fragmentów tabel Firm2013.accdb z danymi: znajdź nazwy miejscowości nabywców pasztetów i zup CHOISE, znajdź nazwy i adresy sprzedawców, którzy sprzedali i "Wodę Halinka" i "Wafle DRAGOLAND" (uwaga: nie "Wodę Halinka" lub "Wafle DRAGOLAND". 8
DOKUMENTY NrFaktury NrSprzedawcy NrNabywcy Data 10/07/92 4058 0 01-07-92 10/07/92 4063 0 02-07-92 12/07/92 4063 0 10-07-92 155/92 4074 0 23-07-92 270/92/Z 717 0 24-07-92 278/92/Z 698 0 29-07-92 R/168/92/Z 0 3263 14-07-92 R/215/92/Z 0 681 02-07-92 R/216/92/Z 0 4083 03-07-92 POZYCJEDOKUMENTU NrFaktury NrSprzedawcy NrPozycji SmbTow Ilość CenaNetto 10/07/92 4058 1 038 12 12,50 10/07/92 4058 2 039 10 12,00 10/07/92 4058 3 049 10 12,00 10/07/92 4063 1 230 1 120,00 10/07/92 4063 2 123 5 2,00 12/07/92 4063 1 098 20 10,00 155/92 4074 1 227 210 0,36 270/92/Z 717 1 013 10 2,70 278/92/Z 698 1 200 1 100,00 R/168/92/Z 0 1 050 77 0,70 R/168/92/Z 0 2 059 2 0,80 R/168/92/Z 0 3 193 7 1,90 R/215/92/Z 0 1 193 32 1,72 R/216/92/Z 0 1 047 500 0,36 9
TOWARY Symbol Nazwa Jm Cena StawkaVat 013 CHRUPKI 4 2,12 22,00% 38 CHESTER TOP 3 8,00 22,00% 039 VONK BLOK 3 4,00 22,00% 047 PASZTET 3 0,27 22,00% 049 KONSERWA "BIERWURST" 5 0,86 22,00% 050 ZUPY CHOISE 4 0,56 22,00% 059 ORZESZKI SOLONE 4 0,76 22,00% 098 Woda "HALINKA" 1 0,60 22,00% 123 MIELONKA TLUSZCZ.-WOL. 300G 5 1,40 22,00% 193 KONSERWA WOLOWO-WIEPRZOWA 5 1,38 22,00% 200 ANDY-KANDY cukierki 4 0,76 22,00% 227 SzprotPasta 5 0,36 22,00% 230 Wafle"DRAGOLAND" 3 9,00 22,00% MIEJSCOWOŚCI Kod Nazwa KodWoj 37 WAŁBRZYCH DL 39 WISŁA MP 41 WROCŁAW DL 43 ZARÓW DL FIRMY Nr NazwaFr Ulica KodMjc Tlf 0 Nasza firma Handlowa 13 41 (071)345-678-234 681 DOZAMELIN ul. Pstra 10 41 698 Grabieczak Roman ul. Pomorska 41 717 Kocwin Maria ul. Ruska 41 3263 Pinowski Jan ul. Legnicka 94/5 41 4058 Parówex S. A. TEINA 500 833/24 39 4063 4067 ul. Lanska 44/22 37 8741,236851 4074 Kiosk Hutnicza 21 43 4083 Backi Wojciech Prowicza 93 41 Województwa Kod MP DL Nazwa małopolskie dolnośląskie 10
Temat 4. Kwerendy wybierające: definiowanie, sortowanie, projekcja, selekcja, złączenie, grupowanie (podsumowanie). Kwerendy tworzące tabelę. Zadania Celem ćwiczenia jest opanowanie podstawowych umiejętności wyszukiwania danych zgromadzonych w bazie danych za pomocą kwerend wybierających i tworzących tabele, jako sposobu realizacji operacji projekcji, selekcji i równo-złączenia. 1. Zapoznaj się ze strukturą powiązań między tabelami bazy danych "Firm2013.accdb". Wykonaj zadania, jak niżej. a) korzystając z tabeli Firmy zdefiniuj kwerendę wybierającą wyświetlającą arkusz danych (tabelę) z kolumnami (atrybutami): Nazwa, Telefon, posortowany według Nazwy; obejrzyj tabelę i zamknij kwerendę zapamiętując ją pod nazwą T4Z01a_NazwyTelefonyFirm ; odpowiedz na pytanie: jaka operacja algebry tabel została tu wykonana? b) korzystając z kwerendy T4Z1a_NazwyTelefonyFirm (traktowanej jako tabela) zdefiniuj kwerendę wybierającą wyświetlającą arkusz danych (tabelę) tylko z kolumną Nazwa, ale zawierającą te wiersze z tabeli T4Z1a_NazwyTelefonyFirm, w których Telefon is Null); obejrzyj tabelę i zamknij kwerendę zapamiętując ją pod nazwą T4Z01b_NazwyFirmBezTelefonu ; odpowiedz na pytanie: jaka operacja algebry tabel została tu wykonana? c) korzystając z tabel Dokumenty i Firmy zdefiniuj kwerendę wybierającą wyświetlającą arkusz danych (tabelę) z kolumnami (atrybutami): NrSprzedawcy, NazwaSprzedawcy, NrFaktury, DataTransakcji, posortowane wg {NrSprzedawcy, NrFaktury} z selekcją na NrSprzedawcy <> 0; zamknij zapamiętując kwerendę pod nazwą T4Z01c_TransakcjeZakupu ; otwórz tę kwerendę, obejrzyj zawartość wyświetlonej tabeli i odczytaj liczbę wierszy w niej zawartych; sprawdź, jak wygląda otrzymana tabela i jaka jest liczba jej wierszy, gdy w definicji kwerendy usuniesz powiązanie między tabelami Dokumenty i Firmy (aby usunąć powiązanie między tabelami należy uaktywnić myszą linię je łączącą i usunąć naciskając klawisz "Del"); odpowiedz na pytanie, dlaczego otrzymana tabela różni się od tej otrzymanej wcześniej; przywróć powiązanie tabel Dokumenty i Firmy i zamknij kwerendę; odpowiedz na pytanie, jaka operacja algebry tabel została tu wykonana? d) korzystając z tabel Dokumenty i Firmy zdefiniuj kwerendę wybierającą wyświetlającą arkusz danych (tabelę) z kolumnami (atrybutami): NrNabywcy, NazwaNabywcy, NrFaktury, DataTransakcji, posortowane wg {NrNabywcy, NrFaktury} z selekcją na NrNabywcy <> 0; zamknij definicję zapamiętując kwerendę pod nazwą T4Z01d_TransakcjeSprzedaży ; otwórz tę kwerendę, obejrzyj zawartość; odpowiedz na pytanie: jaka operacja algebry tabel została tu wykonana? e) korzystając z tabeli T4Z01d_TransakcjeSprzedaży zdefiniuj kwerendę wybierającą wyświetlającą arkusz danych (tabelę) z kolumnami (atrybutami): NrNabywcy, NazwaNabywcy; spraw, aby nie było duplikatów wierszy w wynikowej tabeli (wartości unikatowe); zamknij zapamiętując kwerendę pod nazwą T4Z01e_NasiOdbiorcy ; odpowiedz na pytanie, jaka operacja algebry tabel została tu wykonana? Wskazówki do wykonania zadania: Aby utworzyć nową kwerendę należy postępować jak niżej w oknie bazy danych w pozycji menu TWORZENIE wybrać ikonę Projekt kwerendy. W efekcie zostanie otwarte okno projektowania kwerendy (duże) i okno pokazywania tabel (małe). W pierwszej kolejności w oknie pokazywania tabel należy wybrać i dodać tabele, które będą argumentami kwerendy (tabelami źródłowymi) i zamknąć to okno. Symbole dodanych tabel pojawiły się w oknie projektowania kwerendy, w jego górnej części. W dolnej części okna projektowania kwerendy definiujemy kolumny tabeli, która będzie wynikiem tej kwerendy (wynikowym arkuszem danych). 11
Aby określić, jakie kolumny będzie zawierał arkusz wynikowy należy postępować jak niżej Jeśli nazwa kolumny nowej tabeli ma być identyczna z nazwą kolumny tabeli źródłowej, to należy sprowadzić tę nazwę do wiersza Pole, w odpowiedniej kolumnie tabeli projektowanej; można to zrobić na kilka sposobów: klikamy dwa razy nazwę odpowiedniego pola w symbolu tabeli źródłowej, wybieramy z listy lub ciągniemy ją myszką; Jeżeli kolumnie nowej tabeli chcemy nadać inną nazwę niż nazwa pola źródłowego (przemianowanie), to w odpowiednim miejscu wiersza Pole wpisujemy wyrażenie: Nowa nazwa:[nazwa tabeli źródłowej].nazwa pola źródłowego] Wyrażenie [nazwa tabeli źródłowej]. jest kwalifikatorem. Kwalifikator nie jest konieczny jeżeli [nazwa pola źródłowego] jest unikalna w zbiorze tabel/kwerend źródłowych. Aby posortować należy: W wierszu Sortuj w odpowiednim polu wskazać (wybierając z listy) kierunek sortowania (rosnąco, malejąco, bez sortowania) wierszy arkusza wynikowego. Aby nie wszystkie kolumny były pokazywane w nowej tabeli, należy: w wierszu Pokaż kolumn, które nie powinny się pokazywać usunąć zaznaczenie, klikając myszką. Aby wybrać do arkusza wynikowego wiersze spełniające zadany warunek należy: w wierszu Kryteria odpowiedniej kolumny zapisać ten warunek (patrz Załącznik 2.4) Aby zlikwidować powiązanie między tabelami w oknie projektowania kwerendy, należy: uaktywnić linię między odpowiednimi tabelami klikając myszką i usunąć ją klawiszem Delete Aby powiązać dwie tabele w oknie projektowania kwerendy należy: przeciągnąć myszką odpowiednie pole jednej tabeli i upuścić na odpowiednie pola drugiej. 2. Kwerenda tworząca tabelę. Korzystając z tabeli PozycjeDokumentu zdefiniuj kwerendę wybierającą wyświetlającą tabelę o kolumnach {NrSprzedawcy, NrFaktury, NrPozycji, Wartość: [Ilość]*[CenaNetto]} posortowaną wg NrSprzedawcy, NrFaktury, NrPozycji. Zmień typ tej kwerendy na tworzącą tabelę nadając tworzonej tabeli nazwę KwotyPozycjiDokumentów. Uruchom tę kwerendę i sprawdź, czy tabela KwotyPozycjiDokumentów pojawiła się wśród tabel bazy danych. Zamknij zapamiętując kwerendę pod nazwą T4Z02_UtwórzKwotyPozycjiDokumentów. Aby utworzyć w arkuszu wynikowym kolumnę, której nie ma w żadnej tabeli źródłowej, wpisz w wierszu Pole nazwę nowej kolumny, następnie po dwukropku podać wyrażenie do obliczenia wartości w tej kolumnie, na przykład, Wartość:[Ilość]*[Cenanetto] (Załącznik 2.1). Aby kwerendę zdefiniować jako tworzącą tabelę i uruchomić ją: w oknie projektowania kwerendy: kliknij prawym klawiszem myszy w górną część okna projektowania kwerendy otwierając menu podręczne i wybierz pozycję Typ kwerendy, w pozycji Typ kwerendy wybierz pozycję Kwerenda tworząca tabelę..., w oknie tworzenia tabeli nadaj nazwę nowo tworzonej tabeli, klikając ikonę z wykrzyknikiem (Uruchom) uruchom kwerendę; nowa tabela powinna pojawić wśród innych tabel; teraz możesz otworzyć nową tabelę. 3. Grupowanie i agregacja wewnątrz każdej grupy. a) Za pomocą kwerendy wybierającej utwórz arkusz danych informujący na jaką kwotę sumaryczną został wystawiony każdy dokument (można tu wykorzystać tabelę KwotyPozycjiDokumentów utworzoną w zadaniu 2, z projekcją na atrybuty: {NrSprzedawcy, NrFaktury, Kwota}); przeprowadź grupowanie wg pól NrSprzedawcy, NrFaktury, zsumuj wartości pola Kwota w grupach. Zamknij kwerendę zapamiętując ją pod nazwą T4Z03a_KwotySumaryczneWgDokumentów. 12
Aby zgrupować i wykonać agregacje w grupie należy w oknie projektowania kwerendy: umieść nazwy potrzebnych pól w wierszu Pole najlepiej w następującej kolejności: pola grupujące (w kolejności od lewej do prawej jak przy sortowaniu), pola agregowane, pola selekcyjne (Załącznik 2.5), kliknij ikonę Sumy powodując, że w dolnej części okna projektowania pojawi się wiersz o nazwie Podsumowanie, dla każdego pola grupującego w wierszu Podsumowanie wybierz opcję Grupuj według (ustawienie domyślne), dla każdego pola agregowanego wybierz jedną z proponowanych funkcji agregujących lub napisz własne wyrażenie dla obliczenia wartości zagregowanej dla grupy rekordów. Aby wyselekcjonować grupy spełniające warunek należy: w wierszach Kryteria dla kolumn opatrzonych opcją Grupuj według wpisz odpowiednie wyrażenia selekcji. Aby wyselekcjonować wiersze według pól niegrupujących spełniających zadany warunek należy: w wierszu Podsumowanie: dla pól niegrupujących wybrać opcję Gdzie i w wierszach kryteriów wpisać odpowiednie wyrażenia selekcji. Grupowanie i agregacja wewnątrz każdej grupy (ciąg dalszy). b) Za pomocą kwerendy wybierającej utwórz arkusz danych o kolumnach: NumerFirmy, NazwaFirmy, Wartość, informujący na jaką sumaryczną kwotę otrzymał faktury każdy z nabywców Naszej firmy. Zamknij kwerendę zapamiętując ją pod nazwą T4Z03b_KwotySumaryczneWgNabywców. c) Za pomocą kwerendy wybierającej utwórz arkusz danych o następujących kolumnach: {Symbol, Nazwa, Wartość}, informujący na jaką kwotę sumaryczną został kupiony przez Naszą firmę każdy z towarów w sierpniu 1992 (użyj funkcji Year i Month w dwóch polach Data). Znajdź trzy towary kupione za największą kwotę. Zamknij zapamiętując kwerendę pod nazwą T4Z03c_KwotySumaryczneWgTrzechNajlepszychTowarów. Wykonaj kolejne zadania nadając każdej definiowanej kwerendzie nazwę T4Zx_nazwa (gdzie x = 04, 05,..., 16 z ewentualnymi literami a, b, c..., a nazwa oddaje sens kwerendy). 4. Zdefiniuj i uruchom kwerendę realizującą proces znajdowania firm z Wrocławia lub Krakowa, którym Nasza firma sprzedała cokolwiek w sierpniu 1992 (użyj funkcji Year i Month). 5. Zdefiniuj i uruchom kwerendę realizującą proces znajdowania miejscowości klientów Naszej firmy, którzy to klienci kupili ryż na kwotę większą niż 30 zł jednorazowo lub kupili kawę na kwotę większą niż 50 zł jednorazowo. 6. Zdefiniuj i uruchom kwerendę realizującą proces znajdowania dla każdej firmy z Wrocławia - sumarycznej kwoty podatku VAT zapłaconego w związku z zakupami w "Naszej firmie" w lipcu 1992 (użyj funkcji Year i Month). 7. Zdefiniuj i uruchom kwerendę realizującą proces znajdowania dwóch najlepszych (pod względem kwoty sprzedaży) firm, u których zaopatrywała się Nasza firma w lipcu 1992 (użyj funkcji Year i Month). 8. Zdefiniuj i uruchom kwerendę realizującą proces znajdowania trzech najlepiej sprzedających się towarów klientom Naszej firmy z woj. dolnośląskiego. 9. Zdefiniuj i uruchom kwerendę realizującą proces tworzenia arkusza informującego na jaką sumaryczną kwotę wystawiła faktury Nasza firma (jedna liczba!). 10. Utwórz arkusz informujący na jaką kwotę przeprowadził transakcje każdy nabywca Naszej firmy z każdym z towarów. 11. Utwórz arkusz informujący, na jaką kwotę Nasza firma nabyła każdy z towarów z rozbiciem na województwa firm. 12. Utwórz arkusz danych informujący o tym, z iloma różnymi towarami każdy z nabywców Naszej firmy miał do czynienia (inaczej mówiąc, należy określić liczność asortymentu towarów 13
kupowanych przez klientów). Zadanie wykonać w dwóch krokach: 1 utworzyć arkusz o następujących kolumnach: NrNabywcy, SymbolTowaru nie zawierający duplikatów; 2 na podstawie kwerendy z kroku 1 przeprowadzić agregację (funkcja Policz) i utworzyć arkusz danych o kolumnach {NazwaNabywcy, Liczność asortymentu}. 13. Na podstawie wyniku zadania 12 utwórz tabelę zawierającą 10 klientów o najbardziej szerokich zainteresowaniach (największej liczności asortymentu). 14. Utwórz arkusz informujący o liczności asortymentu towarów nabywanych przez Naszą firmę w każdym województwie. 15. Utwórz arkusz informujący klientom z ilu województw był sprzedany przez Naszą firmę każdy towar. 16. Wykonaj zestawienie obrotów Naszej firmy z podziałem na miesiące (1..12) roku zadanego parametrem (użyj funkcji Year i Month). 14
Temat 5. Operacje teoriomnogościowe algebry relacji kwerendy usuwające i kwerendy dołączające Celem ćwiczenia jest opanowanie podstawowych umiejętności wyszukiwania danych zgromadzonych w bazie danych za pomocą kwerend usuwających i dołączających tabele oraz opanowanych w poprzedniej części, jako sposobu realizacji operacji sumy, iloczynu różnicy i dopełnienia tabel. Zadanie 1. Operacje teoriomnogościowe na abstrakcyjnych tabelach r1 i r2. a) otwórz gotową, dostępną na stronie wykładowcy, bazę danych z tabelami: r1 ( A B ) r2 ( A B ) a1 b1 a1 b1 a1 b2 a2 b2 a3 b3 a3 b4 a2 b3 b) korzystając z materiału wykładu rozpoznaj mechanizm zapytania dołączającego i zdefiniuj kwerendy realizujące dwa warianty sumy tabel: r1 = r1 r2 r3 = r1 r2 Wariant1: r1 = r1 r2: utwórz kwerendę o nazwie T5Z01b_w1k1_Dołącz_r2_do_r1 ; w oknie projektowania kwerendy dodaj tabelę, która będzie dołączana, czyli r2; w wierszu Pole wybierz kolumny z r2, które będą dołączane do kolumn r1; Uwaga! Możesz wybrać wszystkie kolumny (to znaczy r2.*), ponieważ nazwy odpowiadających sobie kolumn r1 i r2 są identyczne i dołączane są wszystkie kolumny. Uwaga: jeśli nazwy odpowiadających sobie pól r1 i r2 nie są identyczne lub do r1 nie są dołączane wszystkie pola r2, należy indywidualnie wskazać w wierszu Dołączane do nazwy pól z r1 odpowiadające nazwom pól z r2, tylko te, które będą dołączane, wybierz typ kwerendy kwerenda dołączająca i wskaż tabelę, do której będzie dołączana r2, czyli wybierz r1, uruchom proces (Ikona '!'); wynikiem sumowania jest tabela r1, zamknij kwerendę. Uwaga: jeżeli klikniesz ikonę Arkusz danych spowodujesz wyświetlenie tabeli r2, a nie wyniku dołączania! Wynik dołączania jest zawarty w tabeli r1. Otwórz tabelę r1 i sprawdź poprawność wyniku, jako sumy teoriomnogościowej r1 r2 oraz czy są duplikaty wierszy w tabeli wynikowej? Aby obejrzeć tabelę r1 bez duplikatów: utwórz kwerendę wybierającą o nazwie T5Z01b_w1k2_Dołącz_r2_do_r1, argumentem której jest tabela r1, ustaw właściwość Wartości unikatowe na TAK (w tym celu kliknij prawym klawiszem myszy w górną część okna projektowania kwerendy, otwierając menu podręczne i wybierz pozycję Właściwości, znajdź właściwość Wartości unikatowe i wybierz TAK), wynikiem tej kwerendy ma być tabela o kolumnach identycznych z r1, ale bez duplikatów wierszy. Przywróć zawartość r1 i r2 do postaci z zadania 1a. Wariant2: r3 = r1 r2: utwórz kwerendę o nazwie T5Z01b_w2k1_Skopiuj_r1 do r3 tworzącą tabelę o nazwie r3 będącą identyczną z r1; uruchom tę kwerendę, 15
utwórz kwerendę T5Z01b_w2k2_Zsumuj_r2_r1 w r3 dołączająca r2 do r3 według przepisu wyżej i uruchom ją; wynikiem sumowania będzie w r3, a tabela r1 pozostanie bez zmian. Aby obejrzeć tabelę r3 bez duplikatów utwórz kwerendę wybierającą T5Z01b_w2k3_Zsumuj_r2_r1 w r3, argumentem której jest tabela r3 oraz w której właściwość Wartości unikatowe jest ustawiona na TAK; wynikiem tej kwerendy ma być tabela o kolumnach identycznych z r3, ale bez duplikatów wierszy. 1c) korzystając z materiału wykładu zdefiniuj kwerendę realizującą iloczyn (część wspólną, intersekcję) dwóch tabel: r3 = r1 r2 Część wspólną dwóch tabel tworzą te same wiersze, występujące w obu tabelach. Aby znaleźć część wspólną dwóch tabel: otwórz (zdefiniuj) kwerendę wybierającą lub tworzącą tabelę T5Z01c_Część Wspólna_r1_r2 ; wybierz tabele mnożone i dodaj jako argumenty w oknie projektowania tabeli, połącz pola, względem których rekordy powinny być równe (albo są to wszystkie pola, albo pola tworzące klucze obu tabel w przypadku r1 i r2 powinny być wszystkie pola), w wierszu Pole określ schemat arkusza wynikowego (nagłówek tabeli wynikowej). Wynikiem mnożenia jest tabela chwilowa, jeżeli kwerenda jest wybierająca lub trwała, jeżeli kwerenda jest tworząca tabelę. 1d) korzystając z materiału wykładu rozpoznaj mechanizm kwerendy usuwającej i zdefiniuj kwerendy realizujące dwa warianty różnicy (odejmowania) tabel: r1 = r1 r2 r3 = r1 r2 Wariant1: r1 = r1 r2: utwórz kwerendę o nazwie T5Z01d_w1k1_Odejmij_r2_od_r1 wybierając jako argumenty obie tabele: r1 i r2, połącz porównywane pola obu tabel aby wyznaczyć ich część wspólną, umieść w wierszu Pole w pierwszej kolumnie oznaczenie wszystkich kolumn, to znaczy r1.*; wtedy od r1 będzie odjęta jej część wspólna z r2, zmień typ kwerendy na kwerendę usuwającą i ustaw we właściwościach kwerendy właściwość Rekordy unikatowe na "TAK", uruchom kwerendę (Ikona '!'). Wynikiem odejmowania jest tabela r1. Sprawdź, czy rzeczywiście zawiera wynik odejmowania r2 od r1. Uwaga: jeżeli klikniesz ikonę Arkusz danych spowodujesz wyświetlenie jedynie wspólnych wierszy tabel r1 i r2, a nie wyniku usuwania! wynik usuwania jest zawarty w tabeli r1! Wariant2: r3 = r1 r2: utwórz kwerendę o nazwie T5Z01d_w2k1_Skopiuj_r1 do r3 tworzącą tabelę o nazwie r3 będącą identyczną z r1; uruchom tę kwerędę; utwórz kwerendę o nazwie T5Z01d_w2k2_Odejmij_r2_od_r3 i wybierając jako argumenty obie tabele: r2 i r3, połącz porównywane pola obu tabel aby wyznaczyć ich część wspólną, umieścić w wierszu Pole w pierwszej kolumnie oznaczenie wszystkich kolumn, to znaczy r3.*; wtedy od r3 będzie odjęta r2, 16
zmień rodzaj kwerendy na kwerendę usuwającą i ustaw we właściwościach kwerendy właściwość Rekordy unikatowe na "TAK", uruchom kwerendę (Ikona '!') Wynikiem odejmowania jest tabela r3. Sprawdź, czy rzeczywiście zawiera wynik odejmowania r2 od r1. 2. Znaleźć dopełnienie. Otwórz gotową, dostępną na stronie wykładowcy, bazę danych z tabelami: GRUPA (Numer, Liczba uczestników) OBIEKT (Nazwa) 1 15 Muzeum 2 19 ZOO 3 17 Zamek 4 19 ZWIEDZILA (Numer_grupy, Nazwa_obiektu) 1 Muzeum 2 ZOO 4 Zamek Zakładając, że każda grupa turystyczna ma zwiedzić każdy obiekt, wyznacz tabelę zawierającą wizyty, które jeszcze muszą mieć miejsce (dopełnienie relacji ZWIEDZIŁA) według następującego algorytmu: a) zdefiniuj i uruchom kwerendę o nazwie T5Z02x_Utwórz wizyty do wykonania tworząca tabelę o nazwie Wizyty do wykonania, zawierającą iloczyn kartezjański grup i obiektów, b) zdefiniuj i uruchom kwerendę o nazwie T5Z02x_Odejmij Zwiedziła od wizyt do wykonania, odejmującą tabelę Zwiedziła od tabeli Wizyty do wykonania. 3. Wykonaj operacje teoriomnogościowe na rzeczywistej bazie danych "Firm2013.accdb" a) zdefiniuj i uruchom dwie kwerendy o nazwach odpowiednio T5Z3a_TwórzDostawców i T5Z03b_TwórzOdbiorców tworzące tabele o nazwach Dostawcy i Odbiorcy i o tym samym nagłówku {Numer, NazwaFirmy, Telefon}; Dostawcy to ci, od których kupowała Nasza firma, a Odbiorcy ci, którym Nasza firma sprzedawała; Nasza firma nie powinna pojawić się w tworzonych tabelach; spraw, aby tworzone tabele nie zawierały duplikatów wierszy (Wartości unikatowe = TAK); b) zdefiniuj i uruchom kwerendę wybierającą T5Z03b_DostawcyIodbiorcy znajdującą wiersze wspólne obu tabel, czyli znajdującą firmy, które są jednocześnie dostawcami i odbiorcami towarów; sprawdź wynik trzech wariantów tej kwerendy: ze złączeniem pól: Numer, NazwaFirmy, Telefon, ze złączeniem pól: Numer, NazwaFirmy, ze złączeniem pól: Numer; właściwy wyniki dają dwa ostatnie warianty odpowiedz: dlaczego?; zauważ, że tabele Dostawcy i Odbiorcy mają wspólne wiersze, ale wiersze te nie są faktycznie identyczne, c) zsumuj tabele Dostawcy i Odbiorcy w tabeli Klienci (Klienci = Dostawcy Odbiorcy); w tym celu zdefiniuj i uruchom: kwerendę T5Z03c1_TwórzRoboczą tworzącą tabelę Robocza identyczną z tabelą Dostawcy, kwerendę T5Z03c2_DołączOdbiorcówDoRobocza dołączającą tabelę Odbiorcy do tabeli Robocza z ustawioną na TAK właściwością Wartości unikatowe; sprawdź po wykonaniu tej kwerendy, czy usunięte zostały duplikaty wierszy?; mimo wszystko duplikaty wierszy w tabeli Klienci są; dalej więc utwórz i uruchom: 17
kwerendę T5Z03c3_TwórzKlientów tworzącą tabelę Klienci, jako kopię tabeli Robocza z ustawioną na TAK właściwością Wartości unikatowe; d) zdefiniuj i uruchom kwerendy znajdujące firmy, które są tylko dostawcami towarów (Dostawcy Odbiorcy), w tym celu zdefiniuj i uruchom: kwerendę T5Z03d1_TwórzTylkoDostawców tworzącą tabelę TylkoDostawcy identyczną z tabelą Dostawcy, kwerendę T5Z003d2_OdDostawcówOdejmijOdbiorców usuwającą, która odejmie tabelę Odbiorcy od tabeli TylkoDostawcy; wynik tego zadania będzie w tabeli TylkoDostawcy, e) analogicznie do zadania T5Z3d) zdefiniuj i uruchom kwerendy znajdujące firmy, które są tylko odbiorcami towarów (Odbiorcy Dostawcy); f) (nadobowiązkowo) zdefiniuj i uruchom kwerendy znajdujące firmy, które nie są jednocześnie dostawcami i odbiorcami towarów (AlboDostawcyAlboOdbiorcy); skorzystaj z tautologii: AlboDostawcyAlboOdbiorcy = (Dostawcy Odbiorcy) (Odbiorcy Dostawcy) Wykonaj kolejne zadania nadając każdej definiowanej kwerendzie nazwę T5Zx_nazwa (gdzie x = 04, 05,..., 11 z ewentualnymi literami a, b, c..., a nazwa oddaje sens kwerendy). 4. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania firm, z którymi nie była przeprowadzona żadna transakcja. 5. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania towarów, które były przez Naszą firmę sprzedawane klientom z Wrocławia i nie były sprzedawane klientom z województwa dolnośląskiego (spoza Wrocławia). 6. Zdefiniuj i uruchom kwerendy realizujące proces utworzenia tabeli "M1" o nagłówku {NazwaMjc} miejscowości klientów kupujących w Naszej firmie konserwę w puszkach albo kawę, oraz utworzenia tabeli "M2" o nagłówku {NazwaMjc} miejscowości klientów kupujących herbatę. Dalej zdefiniuj i uruchom kwerendę znajdującą miejscowości, które znalazły się w obu tabelach. 7. Zdefiniuj i uruchom kwerendy realizujące proces utworzenia tabeli "T1" o nagłówku {Nazwa} towarów, które były kupowane w Naszej firmie przez klientów z Wrocławia w lipcu 1992 albo przez klientów z Krakowa w sierpniu 1992 i utworzenia tabeli "T2" o nagłówku {Nazwa} towarów sprzedawanych klientom z Warszawy kiedykolwiek. Dalej zdefiniuj i uruchom kwerendę znajdującą towary, które są w tabeli "T1" i nie występują w "T2" 8. Zdefiniuj i uruchom kwerendy realizujące proces utworzenia tabeli "W1" o nagłówku {NazwaWoj} województw firm, którym Nasza firma sprzedawała albo od których kupowała kawę na kwotę większą niż 30 zł jednorazowo oraz utworzenia tabeli "W2" nazw województw firm, z którymi przedmiotem transakcji (kupna lub sprzedaży) była konserwa lub ryż. Dalej zdefiniuj i uruchom kwerendy sumująca (zbiorowo) zawartość tabel W1 i W2 w tabeli W2. 9. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania towarów, które były sprzedawane przez Naszą firmę klientom z Wrocławia, ale nigdy nie były sprzedawane klientom z Krakowa. 10. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania towarów, które były kupione od Naszej firmy (na kwotę > 20 zł jednorazowo) przez klientów z Wrocławia i przez klientów z Krakowa. 11. Zdefiniuj i uruchom kwerendy realizujące proces do listy klientów, którzy kupili u nas kawy w sumie na kwotę > 100 dołączyć klientów, którzy kawy u nas nigdy nie kupili, ale każdy z nich kupił pasztet i zupy choise. 18
Temat 6. Operacja dzielenia Operacja dzielenia pozwala znaleźć rekordy dzielnej, które łączą się z każdym wierszem dzielnika. Dane są tabele: r i s r s = {R-S} (r) {R-S} (( {R-S} (r) s) r), gdzie - operacja iloczynu kartezjańskiego, - operacja odejmowania tabel, {R-S} (...) - operacja projekcji tabeli. Wykonaj kolejne zadania nadając każdej definiowanej kwerendzie nazwę T6Zx_nazwa (gdzie numer zadania x = 1, 2,..., 8 z ewentualnymi literami a, b, c..., a nazwa oddaje sens kwerendy). 1. Zdefiniuj i uruchom kwerendy realizujące proces rozwiązania następującego zadania: podaj nazwy i adresy firm, które kupiły od Naszej firmy każdy z towarów podanych w tabeli s: S (Symbol_towaru) 007 009 059 Uwaga: operacja dzielenia tabel ma dwa argumenty: dzielną r oraz dzielnik s; dzielnik s jest dany wyżej; dzielną r należy otrzymać jako wynik kwerendy tworzącej tabelę, która pobiera dane z tabel Dokumenty i PozycjeDokumentu; tabela r powinna mieć nagłówek R={Symbol_towaru, NrNabywcy}; przy tworzeniu tabeli r można ograniczyć się tylko do towarów zadanych w s, wykorzystując selektywne właściwości złączenia r z s. Wykonaj makro. Uwaga: makro jest nazwaną sekwencją akcji wykonywaną jako całość przez wywołanie (kliknięcie) jej nazwy; akcjami składowymi makra mogą być takie akcje jak: otwórz kwerendę, otwórz tabelę, ustaw ostrzeżenia itp.; pełna lista akcji jest dana podczas definiowania makra; argumentami akcji mogą być, w zależności od rodzaju akcji: kwerendy, tabele lub inne argumenty. 2. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania miejscowości, z których klienci kupili w Naszej firmie każdy z towarów: Zupy choise, Orzeszki solone, Kawa BURG (niekoniecznie każdy z klientów każdy z towarów!). 3. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania towarów, które były sprzedawane przez Naszą firmę klientom w każdej z miejscowości: Wrocław, Bytom, Białystok. 4. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania dokumentów, w których występuje każdy z towarów: Kawa BURG, Orzeszki solone, Zupy choise. 5. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania nazw firm, które kupowały w Naszej firmie każdy z towarów sprzedanych nam na podstawie faktury numer R/45/H/92. 6. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania dni, w których Nasza firma sprzedawała każdy z trzech najlepiej sprzedających się (pod względem sumarycznej kwoty) towarów. 7. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania klientów, którzy kupili u nas każdy z towarów wymienionych w dokumentach z dnia 1992-10-09 lub z dnia 1992-07-23. 8. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania towarów, które były u nas kupowane przez każdego z klientów z województwa opolskiego. 19
Temat 7. Operacja Teta - złączenie Wykonaj kolejne zadania nadając każdej definiowanej kwerendzie nazwę T7Zx_nazwa (gdzie numer zadania x = 1, 2,..., 6 z ewentualnymi literami a, b, c..., a nazwa oddaje sens kwerendy). Zadania 1. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania firm, które kupiły od Naszej firmy jakikolwiek pasztet przed firmą o numerze 698. 2. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania firm, które kupiły od Naszej firmy wartościowo więcej niż firma o nazwie X zadanej parametrem. 3. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania firm, które kupowały od Naszej firmy wcześniej niż firma o nazwie X zadanej parametrem. 4. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania towarów typu kawa, które były sprzedane przez Naszą firmę po cenie wyższej niż najwyższa cena kawy o nazwie X zadanej parametrem w miesiącu zadanym parametrem. 5. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania transakcji wcześniejszych od transakcji danej numerem dokumentu i numerem firmy-sprzedawcy. 6. Zdefiniuj i uruchom kwerendy realizujące proces znajdowania firm, których sumaryczna kwota zakupów w Naszej firmie w sierpniu 1992 r. była większa niż w lipcu. 20
Temat 8. Raporty Zadania 1. Zdefiniuj raport przedstawiający liczbę firm z podziałem na miejscowości i województwa o następującej postaci: Liczba firm z podziałem na miejscowości i województwa Stan na dzień: 99 99 99 Nazwa województwa Nazwa miejscowości Liczba firm Podlaskie Śląskie Dolnośląskie BEDKOWICE 2 2 2,00% BYTOM 3 SOSNOWIEC 5 8 8,00% OLEŚNICA 15 WROCŁAW 75 90 90,00% Podsumowanie ogólne: 100 Wskazówka: Użyj kwerendy łączącej tabele Firmy, Województwa i Miejscowości ze zliczaniem liczby firm w poszczególnych miejscowościach 2. Zdefiniuj raport przedstawiający sprzedaż firmy w miesiącach zadanego parametrem roku z podziałem na firmy (Miesiąc, Firma, Kwota) z podsumowaniami kwot dla miesiąca. 21
Temat 9. Modelowanie i projektowanie logiczne bazy danych Zadanie 1. Wykonaj następujące czynności: przeanalizuj poniższy dokument i, posługując się notacją modelowania informacji, zbuduj model rzeczywistości w nim opisanej (diagram związków encji), dla zbudowanego modelu opracuj strukturę bazy danych przeznaczonej do pamiętania informacji zawartej w tym dokumencie, wykaż, że projekt logiczny bazy danych zawiera tabele znormalizowane (są w trzeciej postaci normalnej). 22
Zadanie 2. Wykonaj następujące czynności: przeanalizuj poniższy tekst i, posługując się notacją modelowania informacji, zbuduj model rzeczywistości w nim opisanej (diagram związków encji) Nasza organizacja chciałaby udoskonalić swój system informacyjny w zakresie szkoleń pracowników. W pierwszym kroku chcemy zbudować model informacji o procesach szkolenia pracowników. Proces szkolenia rozpoczyna się gdy kierownik działu szkoleń otrzymuje od pracownika wniosek o skierowanie na szkolenie. Wniosek ten zawiera informacje dotyczące zainteresowanego, to znaczy: imię i nazwisko, kod i nazwę jednostki organizacyjnej zainteresowanego, datę wniosku, preferowany okres szkolenia oraz przedmiot szkolenia. Jednostki organizacyjne oprócz kodu i nazwy są charakteryzowane przez ich adresy. Kierownik działu szkoleń szuka w katalogu szkoleń pozycji odpowiedniej dla zainteresowanego. W katalogu tym szkolenia są opisane za pomocą takich danych jak kod szkolenia, jego nazwa, opis przedmiotu szkolenia, cena, data rozpoczęcia i zakończenia. Szkolenia mają także kategorię (podstawowe, zaawansowane) i formę (tradycyjna i e-learning). Kursy są organizowane przez firmy szkoleniowe, które są opisane w katalogu takimi atrybutami jak nazwa, data założenia adres. Firmy szkoleniowe mogą organizować wiele szkoleń, ale każde konkretne szkolenie jest organizowane tylko przez jedną firmę. Kierownik działu szkolenia proponuje pracownikowi listę możliwych konkretnych szkoleń. Pracownik, być może razem ze swoim szefem, wybiera odpowiadające szkolenie, kierując się różnymi względami, jak terminem, organizatorem i miejscem. Mając informację o decyzji pracownika, dział szkoleń sporządza formularz zgłoszenia na szkolenie i wysyła go do firmy szkoleniowej. Jednocześnie kopia tego zgłoszenia zostaje złożona w kartotece pracownika wraz z jego wnioskiem. Gdy pracownik zostaje przyjęty na szkolenie, kierownik działu szkolenia rejestruje ten fakt na kopii zgłoszenia. Po zakończeniu szkolenia uczestnik otrzymuje certyfikat, który zawiera takie pozycje jak kod i nazwę szkolenia, daty faktycznego rozpoczęcia i zakończenia, datę wydania certyfikatu, ocenę końcową. Kserokopia certyfikatu zostaje dołączona do kartoteki pracownika do pozostałych certyfikatów przez niego uzyskanych. Gromadzone w dziale szkoleń informacje służą nie tylko sprawnemu przeprowadzeniu procesu kierowania na szkolenia i rejestracji wyników szkoleń, ale także sprawozdawczości. Raz na pół roku dział szkoleń opracowuje sprawozdania dla zarządu mówiące o szkoleniach odbytych przez pracowników z ich podziałem na kategorie, formy oraz przedmiot. dla zbudowanego modelu opracuj strukturę bazy danych przeznaczonej do pamiętania informacji zawartej w tym tekście, wykaż, że projekt logiczny bazy danych zawiera tabele znormalizowane (są w trzeciej postaci normalnej), 23