Kolokwium II – przykładowe zadania



  1. Utworzyć nową bazę danych i zapamiętać ją pod nazwą, będącą połączeniem własnego nazwiska, imienia, nazwy grupy i numeru komputera np.: Kowalski_Jan_IZ202_17

  2. Zaimportować do bazy danych tabele z zewnętrznej bazy danych dostarczonej przez prowadzącego.

OPIS PROBLEMU:
Wymienione powyżej tabele przechowują informacje o sprzedaży książek o tematyce komputerowej. W tabeli Asortyment przechowana jest informacja o dostępnych w sprzedaży książkach (tj. tytuł książki i cena). Fakt zakupu książki lub książek rejestrowany jest jako jeden wiersz w tabeli Zamówienie (tj. kto kupił i kiedy) i jeden lub więcej wierszy w tabeli przejściowej Pozycje zamówienia (tj. umieszczany jest w niej odpowiedni kod zamówienia, odpowiedni kod towaru (książki) i ilość zakupionych przez klienta książek). W tabeli (taka tabela jest już nieco historyczna - nie używamy obecnie pojęcia rachunek uproszczony) Rachunek, w której przechowywane będą informacje o wystawieniu rachunku uproszczonego do zamówienia lub rachunku korygującego.

Relacje w tej bazie pokazuje poniższy rysunek:

  1. Wykonać kwerendę wybierającą, która przedstawi informacje o pierwszej połowie złożonych zamówień (tj. kod zamówienia, nazwisko klienta i data złożenia zamówienia). Należy tu zwrócić uwagę, że kolejno przyjmowane zamówienia mają rosnące numery kodu zamówienia.Ad3
  2. Wykonać kwerendę wybierającą, która przedstawi informacje o tym, które tytuły z dostępnych książek jeszcze nigdy nie zostały sprzedane.Ad4
  3. Wykonać kwerendę wybierającą, która przedstawi informacje o zamówieniach, do których zostały wystawione rachunki (tj. kod zamówienia, nazwisko klienta i data złożenia zamówienia).Ad5
  4. Wykonać kwerendę wybierającą, która przedstawi informacje ile warte były książki sprzedane w każdym z zamówień.Ad6
  5. Wykonać kwerendę wybierającą, która przedstawi informacje o dziesięciu najdroższych zamówieniach.Ad7

Odpowiedź 3:
W projekcie tej kwerendzy należało na siatce projektu umieścić wszystkie pola tabeli Zamówienie; posortować rosnąco wg wartości z pola Kod zamówienia; ustawić właściwość tabeli "Najwyższe wartości" na 50%.
Rozwiązanie pokazuje poniższy rysunek:



Odpowiedź 4:
Odpowiedzieć na to pytanie to wyciągnąć z tabeli Asortyment informacje takie, które nie są zapisane w tabeli Pozycje zamówienia. Jednak informacja w kwerendzie wielotabelowej (ogólnie: o wielu źródłach) wybierana jest, gdy wartości w polach połączonych ze sobą (accessowymi) relacjami są sobie RÓWNE (są to sprzężenia wewnętrzne - INNER JOIN).

Dla sprzężenia wewnętrznego (INNER JOIN) rekord jest wybierany, gdy wartości występujące w polach połączonych (accessową) relacją są sobie równe!

Tę właściwość kwerendy możemy zmienić regulując dla (accessowej) relacji (w projekcie kwerendy) właściwości sprzężenia (na sprzężenia zewnętrzne - OUTER JOIN). Należy zmienić je tak, aby wybrać WSZYSTKIE informacje z tabeli Asortyment i uzupełnić je odpowiednio informacjami z tabeli Pozycje zamówienia - w przypadku, gdy łaczone relacją pola mają równe wartości obowiązuje wybór jak dla INNER JOINa, ale w wypadku, gdy nie można przyporządkować odpowiedniej wartości z tabeli Pozycje zamówienia do istniejącej wartości w tabeli Asortyment dobrana zostanie wartość Null. Dla Accessa jest to drugi typ sprzężenia, a technicznie mamy do czynienia za sprzężeniem zewnętrznym lewostronnym - LEFT JOIN. Rozwiązanie pokazuje poniższy rysunek:



Odpowiedź 5:
Żeby wybrać informację o zamówieniach, do których wystawiono rachunki wystarczyło w projekcie kwerendy umieścić opórcz tabeli Zamówienie jeszcze tabelę Rachunek, ponieważ wtedy wybiorą się informacje tylko o tych zamówieniach, do których są wystawione rachunki (isnieje odpowiedni kod zamówienia w tabeli Rachunek). Jednak relacja pomiędzy tymi tabelami jest jeden do wielu i może się okazać, że pewne rekordy powtarzają się. Dzieje się tak dlatego, że rekord w tej kwerendzie wybierany jest wtedy, gdy wartości w polach połączonych ze sobą relacją są sobie równe.
Żeby nie prezentować powtarzających się informacji o zamówieniach (każde zamówienie, do którego wystawiono dwa rachunki: uproszczony i korygujący, wybierze się dwa razy), należy ustawić właściwość kwerendy "Rekordy unikatowe" na Tak.



Odpowiedź 6:
Żeby dobrze wybrać informację o wartości zamówienia, należało najpierw uzmysłowić sobie jak informacja o zamówieniu jest zapisywana. Przyjmimy takie zamówienie: w dniu 10.12.1999r. Jan Kowalski kupił dwie książki "SQL Server 7.0" po 70 zł każda i jeszcze jedną książkę "MS Access 2000" w cenie 60 zł. Ta informacja zostanie zapisana następująco:

  1. Jako jeden rekord w tabeli Zamówienie
    • Przyjmijmy, że dla pola Kod zamówienia będzie to wartość "1000", a dla pól Klient i Data zamówienia będą to odpowiednio wartości: "Jan Kowalski" i "10.12.1999"
  2. W tabeli Asortyment muszą jeszcze przed złożeniem zamówienia znajdować się rekordy z informacją o sprzedawanych produktach:
    • Przyjmijmy, że dla pola Kod towaru będzie to wartość "100", a dla pól Nazwa towaru oraz Wartość brutto odpowiednio wartości "SQL Server 7.0" i "70 zł"
    • Przyjmijmy, że dla pola Kod towaru będzie to wartość "101", a dla pól Nazwa towaru oraz Wartość brutto odpowiednio wartości "MS Access 2000" i "60 zł"
  3. Wobec powyższych zapisów w tabeli Pozycje zamówienia znajdą się wartości
    • Dla pól Kod zamówienia, Ilość, Kod towaru odpowiednio wartości: "1000", "2", "100"
    • Dla pól Kod zamówienia, Ilość, Kod towaru odpowiednio wartości: "1000", "1", "101"

Do wykonania kwerandy wybierającej informację o wartości zamówień należy użyć trzech tabel: Zamówienie, Pozycje zamówienia i Asortyment. W celu wyznaczenia wartości zamówienia należy przemnożyć wartości z pól Ilość i Wartość brutto, a następnie wyniki (pokazujące wartość pozycji zamówienia) zsumować, co pokazuje poniższy rysunek:



Odpowiedź 7:
Należy określić wartość zamówienia; posortować malejąco wybierane rekordy wg wyznaczonej wartości; wyregulować właściwość kwerendy: "Najwyższe wartości" na wartość 10, co pokazuje poniższy rysunek: