Temat : SBQL 1 obiektowy język zapytań.

Podobne dokumenty
Temat : SBQL 1 obiektowy język zapytań.

Języki i środowiska przetwarzania danych rozproszonych

Języki i środowiska przetwarzania danych rozproszonych

SBQL. język zapytań dla obiektowych baz danych. Kamil Adamczyk. Uniwersytet Warszawski 20.IV.2009

Języki i Środowiska Programowania Baz Danych 2010/2011 PJWSTK, 2010

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

XML-owe bazy danych ćwiczenia 1

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

SQL (ang. Structured Query Language)

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

JPS. cwiczenia 3. Stosy, proste zapytania. Michał Lentner Polsko-Japońska Wyższa Szkoła Technik Komputerowych

Spis treści. Przedmowa

Model relacyjny. Wykład II

SZKOLENIE: Administrator baz danych. Cel szkolenia

Programowanie współbieżne i rozproszone

Programowanie obiektowe

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

3. Podzapytania, łączenie tabel i zapytań

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Instrukcja użytkownika systemu Komornik SQL-VAT

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Post-relacyjne bazy danych

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Teoretyczne podstawy informatyki

epuap Archiwizacja w Osobistym Składzie Dokumentów

Programowanie obiektowe

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

System zarządzania wersjami I Subversion

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

KOR. Konstrukcja systemów obiektowych i rozproszonych. PJWSTK, 2010 Emil Wcisło.

Systemy GIS Tworzenie zapytań w bazach danych

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

INTENSE PLATFORM Zmiany w wersji Wersja 7.2

PRZEWODNIK PO PRZEDMIOCIE

Backend Administratora

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Baza danych sql. 1. Wprowadzenie

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Definicje. Algorytm to:

Tips & Tricks. Czy wiesz że. wersja Aktualizacja dokumentu: Copyright COMARCH S.A.

Użycie Visual Basic for Applications ("VBA")

Bazy danych. Dr inż. Paweł Kasprowski

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Technologie baz danych

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Podręcznik instalacji Command WorkStation 5.6 z aplikacjami Fiery Extended Applications 4.2

RBD Relacyjne Bazy Danych

Hurtownie danych - przegląd technologii

Books. by HansaWorld. Przewodnik instalacji. wersji 6.2

IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa)

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

System imed24 Instrukcja Moduł Analizy i raporty

Podstawy i języki programowania

System kontroli wersji git

Ćwiczenie zapytań języka bazy danych PostgreSQL

Przestrzenne bazy danych Podstawy języka SQL

SERWER AKTUALIZACJI UpServ

IBM SPSS Statistics Version 22. Windows - Instrukcja instalacji (licencja wielokrotna)

PRÓBNY EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE CZĘŚĆ PRAKTYCZNA

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Aplikacje internetowe - laboratorium

Algebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.

Symfonia Produkcja. Kreator raportów. Wersja 2013

Instalacja systemu humansoft MiniCorax

Sage Symfonia Sage Symfonia Start Wystawianie nieobsługiwanych w programach e-deklaracji i załączników do e-deklaracji

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Books. by HansaWorld. Przewodnik instalacji. Wersji 6.2

Karta (sylabus) modułu/przedmiotu Mechanika i Budowa Maszyn Studia I stopnia

Zad. 3: Układ równań liniowych

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Model relacyjny. Wykład II

LITERATURA. Wprowadzenie do systemów baz danych C.J.Date; WNT Warszawa 2000

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Płace Optivum. 1. Zainstalować serwer SQL (Microsoft SQL Server 2008 R2) oraz program Płace Optivum.

Tomasz Greszata - Koszalin

METODY REPREZENTACJI INFORMACJI

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Systemy Rozproszone Technologia ICE

Bazy danych i strony WWW

Zad. 5: Układ równań liniowych liczb zespolonych

Modelowanie obiektowe - Ćw. 1.

Transkrypt:

Laboratorium Języki i środowiska programowania systemów rozproszonych Temat : SBQL 1 obiektowy język zapytań. Historia zmian Data Wersja Autor Opis zmian 23.4.2012 1.0 Tomasz Kowalski Utworzenie dokumentu na podstawie materiałów z 2011. 11.5.2012 1.1 Tomasz Kowalski Wskazówki do zadań. 1 Stack-Based Query Language

1. Cel laboratorium Głównym celem laboratoriów jest zapoznanie się podstawami obiektowego języka zapytań SBQL (Stack-based Query Language) wywodzącego się z podejścia stosowego (SBA 2 ) do języków zapytań i baz danych autorstwa prof. Kazimierza Subiety z PJWSTK 3. Ze względu na kompozycyjność języka SBQL, pojęcie zapytania w systemie ODRA odnosi się praktycznie do wszystkich wyrażeń spotykanych w językach programowania. Zapytaniem jest proste wyrażenie składające się z np. z liczby ciągu znaków czy nazwy. Bardziej skomplikowane zapytania budowane są poprzez łączenie pod-zapytań za pomocą operatorów. Ważną cechą języka SBQL jest iż, poza znanymi z języków programowania operatorami, wprowadza on również zestaw tzw. operatorów nie-algebraicznych, które umożliwiają wykonywanie operacji na kolekcjach. To właśnie ta grupa operatorów wprowadza na poziom języka programowania, znane z języków zapytań, konstrukcje takie jak selekcja projekcja, złączenie czy kwantyfikatory. Co bardzo istotne, semantyka tych operatorów została zdefiniowana za pomocą tych samych elementów co pozostałe elementy języka (z technicznego punktu widzenia, podstawowym wyróżnikiem operatorów niealgebraicznych jest wpływ na środowisko przetwarzania reprezentowane przez stos środowisk). Umożliwia to wykorzystanie pełnej mocy języka programowania oraz języka zapytań (włącznie z operacjami aktualizacji) w jednym, homogenicznym środowisku przetwarzania. Cecha ta jest inherentna dla semantyki podejścia stosowego i opartego na nim języka SBQL. 2. Zasoby 2.1. Wymagane oprogramowanie Polecenia laboratorium będą dotyczyły podstaw programowania przy użyciu platformy ODRA. Wersję ODRA przygotowana na potrzeby laboratoriów należy wyeksportować z repozytorium svn: https://dev.kis.p.lodz.pl:8443/svn/samples/trunk/jispsr/odra2 Do uruchomienia systemu ODRA potrzebne będzie środowisko uruchomieniowe JRE (Java Runtime Environment). 2.1. Materiały pomocnicze Materiały dostępne w Internecie: http://www.sbql.pl/ http://www.sbql.pl/sba_sbql_description.html http://www.sbql.pl/various/odra/odra_manual_sbql_queries.html 3. Laboratorium: 1. Do nowego folderu na dysku wyeksportuj z repozytorium svn platformę ODRA. 2. Zapoznaj się ze strukturą plików pobranej wersji ODRA. 3. Uruchom edytor notepad++. Zaimportuj styl języka platformy ODRA z pliku notepadsbqlcli.xml. (Widok->Definiowanie własnego stylu->import). Zrestartuj edytor. 4. Użyj skryptu easystart.bat w celu utworzenia bazy, uruchomienia serwera ODRA oraz interfejsu poleceń CLI (Command Line Interface). 5. Na 10 minut przed końcem zajęć utwórz nowy folder zawierający standardową strukturę projektu, tj. podkatalogi: 2 Stack-based Architecture 3 Polsko-Japońska Wyższa Szkoła Technik Komputerowych

branches folder pomocniczy na potrzeby testowania eksperymentalnej funkcjonalności (nie musi być używany w ciągu zajęć). tags folder zawierający tzw. snapshot-y postępów prac wykonywane pod koniec każdych zajęć w kolejnych pod-folderach (lab1, lab2,... ). Snapshot należy wykonać używając polecenia svn copy (w tortoisesvn opcja Branch/tag...) z źródłem ustawionym na folder trunk w zdalnym repozytorium i docelowym folderem labx. Zmiany w folderze trunk powinny zostać uprzednio zacommitowane. trunk zawierający biężącą wersje rezultatów Twoich prac. Wyłącznie ten folder powinien być checkout-owany w celu pracy na lokalnej wersji repozytorium. 6. Do katalogu trunk skopiuj pliki, które utworzyłeś bądź zmodyfikowałeś w trakcie zajęć. 7. Następnie zaimportuj zawartość swojego folderu do repozytorium svn o adresie podanym przez prowadzącego (w tortoisesvn opcja Import) do podfolderu o nazwie imię_nazwisko. W tym folderze na repozytorium mają być przechowywane wyniki Twoich prac na laboratoriach (t.j. pliki utworzone bądź zmodyfikowane w trakcie zajęć). 8. W celu otagowania pracy na laboratorium najpierw do PUSTEGO nowo utworzonego folderu na dysku wykonaj checkout Twojego folderu trunk na repozytorium zdalnym (w tortoisesvn opcja SVN checkout...). Następnie wykonaj polecenie svn copy (tortoisesvn opcja Branch/tag...) ze źródłem ustawionym na zcheckout-owany folder (operacja svn copy zostanie wykonana na folderze trunk w zdalnym repozytorium) i docelowym folderem lab1. 9. UWAGA: wyniki prac na laboratorium muszą być każdorazowo umieszczane w repozytorium SVN w odpowiednim pod-folderze folderu tags. Braki w tym zakresie są równoważne z brakiem obecności na zajęciach.

Schemat relacyjny Adres NrP Miasto Ulica NrDomu Ilustracja 1: Przykładowy schemat relacyjnej bazy danych Na ilustracji 1 przedstawiony jest przykładowy schemat relacyjnej bazy danych. Jego obiektowy odpowiednik znajduje się na ilustracji 2. Oba schematy są zgodne z modelem AS0, więc można je odpytywać za pomocą języka SBQL, natomiast języka SQL można używać tylko odnośnie schematu relacyjnego. Schemat obiektowy (diagram klas) Prac[0..*] Nazwisko Stan Zar Adres [0..1] Miasto Ulica NrDomu Prac NrP Nazwisko Stan Zar PracujeW PracujeW[0..1] Kieruje[0..1] Dział NrD Nazwa Szef Zatrudnia[0..*] Szef Ilustracja 2: Przykładowy schemat obiektowej bazy danych Lokacje NrD Lokacja Strzałki modelują asocjacje; prowadzą od klucza obcego do głównego Dział [0..*] Nazwa Lokacja[1..*] Asocjacje są zrealizowane jako (bliźniacze) obiekty pointerowe Uruchom skrypt ODRA znajdujący się w pliku res/lab1/batch/my1stdb.cli tak, aby utworzył on bazę danych o schemacie przedstawionym na ilustracji 2. Twoim zadaniem jest ułożenie zapytań do załączonych schematów oraz analiza zapytań. Zadania domyślnie dotyczą schematu obiektowego. Zakładamy, że platforma ODRA wykonuję automatycznie operację dereferencji na finalnym rezultacie. Potencjalnemu użytkownikowi domyślnie zależy na sprawdzeniu wartości obiektów, a nie ich referencji. 3.1. Proste zapytania 1. Podaj pełną informację o pracownikach. (analogicznie do zapytania SQL: select * from Prac) Co zwraca zapytanie SQL? Co zwraca zapytanie SBQL? (bez dereferencji i z dereferencją) 2. Podaj nazwiska wszystkich pracowników. Jaki jest odpowiednik SQL? Wskaż lukier syntaktyczny zapytania SQL. Co zwraca zapytanie SBQL? 3. Podaj pełną informację o Kowalskim.

4. Podaj zarobek Kowalskiego. Jaki jest odpowiednik SQL? Użyj rezultat zapytania (bez dereferencji) do aktualizacji zarobku Kowalskiego. Jaki jest odpowiednik aktualizacji w SQL? 5. Podaj nazwiska i stanowiska pracowników zarabiających więcej niż 3000. 6. Podaj referencje do obiektu PracujeW dla pracownika Kowalskiego. Dokanaj jawnej dereferencji rezultatu tego zapytania. Wyjaśnij sens rezultatu. 3.2. Wyrażenia ścieżkowe 1. Podaj pełne dane o dziale, w którym pracuje Kowalski, bez jawnego użycia operatora dereferencji. 2. Podaj nazwę działu, w którym pracuje Kowalski. Napisz wersje zapytania z prawostronnym i lewostronnym nawiasowaniem operatora kropki. Jaki wpływ ma nawiasowanie na rezultat, a jaki wpływ na stos ENVS w trakcie przetwarzania zapytania. 3. Podaj nazwisko szefa pracownika Bleja. 4. Podaj nazwisko i miasto zamieszkania pracowników pracujących w Radomiu. Czy wyświetlono wszystkich pracowników pracujących w Radomiu? Jeżeli nie, to wyjaśnij dlaczego? 5. *Czy wyrażenia ścieżkowe są specjalną konstrukcją SBQL? Odpowiedź uzasadnij. 3.3. Zapytania złożone 1. Podaj wszystkie informacje o pracownikach zarabiających więcej od Kowalskiego. Wskazówka I: Wykorzystaj zapytanie 3.1.4 jako podzapytanie. wskazówka II: Napisz zapytanie podające informacje o pracownikach zarabiających więcej niż 2000 (możesz skorzystać z 3.1.5). 2. Przeanalizuj zapytanie Prac join (PracujeW.Dzial). Co ono zwraca? Co zwraca zapytanie SBQL bez dereferencji? Ułóż to samo zapytanie do schematu relacyjnego w SBQL i SQL. 3. Podaj informację o działach i średnich zarobkach pracowników w działach. Wskazówka I: Napisz zapytanie zwracające zarobek pracowników w dziale Magazyn. Wskazówka II: Napisz zapytanie zwracające średni zarobek pracowników w dziale Magazyn. Użyj funkcji agregującej avg tak aby jej argumentem było możliwie najmniejsze zapytanie. 4. Podaj średnią liczbę pracowników w działach (dla schematu obiektowego i relacyjnego). Wskazówka I: Napisz zapytanie zwracające wszystkich pracowników w dziale Magazyn. Wskazówka II: Napisz zapytanie zwracające liczbę wszystkich pracowników w dziale Magazyn. Użyj operatora count tak aby jego argumentem było możliwie najmniejsze

zapytanie. Wskazówka III: Zmodyfikuj poprzednie zapytanie, żeby zwracało kolekcję złożoną z liczb pracowników dla wszystkich działów. 5. Co oznaczają następujące zapytania i jaka jest między nimi różnica: Prac where forsome(adres)(miasto = Warszawa ) Prac where forall(adres)(miasto = Warszawa ) 6. Sprawdź czy wszyscy szefowie są zatrudnieni w działach, którymi kierują. Uwaga: zapytanie powinno zwrócić odpowiedź typu boolean (true lub false). Wskazówka I: Napisz zapytanie zwracające wszystkich szefów. Wskazówka II: Napisz zapytanie zwracające szefa oraz dział, którym kieruje. (Dopisz do poprzedniego zapytania operator join oraz opowiednie zapytanie po prawej stronie.) Wskazówka III: Napisz zapytanie zwracające szefa oraz dział, w którym pracuje. Wskazówka IV: Zbuduj zapytanie przy użyciu operatora forall. 7. Sprawdź poprawność bliźniaczych asocjacji, tzn.: czy szef działu nim kieruje, czy pracownik jest zatrudniony w dziale, w którym pracuje. Uwaga: zapytania powinny zwrócić odpowiedź typu boolean (true lub false). połącz oba zapytania w jedno. 8. Za pomocą konstrukcji imperatywnych dokonaj zmian w referencjach tak, aby dwa poprzednie zapytania zwróciły odpowiedź fałsz. 9. Podaj nazwiska i zarobki techników zarabiających więcej od swoich szefów. Wskazówka I: Napisz zapytanie zwracające techników. Wskazówka II: Napisz zapytanie zwracające szefów techników. Wskazówka III: Napisz zapytanie zwracające pracowników zarabiających więcej od swoich szefów.