PySBQL Język zapytań dla obiektowych baz danych. Aplikacje bazodanowe Główny nurt budowania aplikacji opiera się na połączeniu: SQL JDBC Java Jak wyświetlić

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Programowanie obiektowe
Obiektowe języki zapytań
© K.Subieta. Obiektowe języki zapytań 08, Folia 1 kwiecień 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
Rafał Hryniów Tomasz Pieciukiewicz
XML + relacyjne bazy danych
Wprowadzenie do C++ Zajęcia 2.
© K.Subieta. Konstrukcja systemów obiektowych i rozproszonych 3, Folia 1 październik 2004 Konstrukcja systemów obiektowych i rozproszonych Wykładowca:
Java i bazy danych Programowanie z wykorzystaniem JDBC mgr inż. Piotr Kopniak.
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Relacyjne Bazy Danych wykład XIII
© K.Subieta. Obiektowe języki zapytań 05, Folia 1 marzec 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
© K.Subieta. Obiektowe języki zapytań 12, Folia 1 maj 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
© K.Subieta. Konstrukcja systemów obiektowych i rozproszonych 7, Folia 1 listopad 2004 Konstrukcja systemów obiektowych i rozproszonych Wykładowca: Kazimierz.
© K.Subieta. Obiektowe języki zapytań 09, Folia 1 maj 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 1 marzec 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła.
© K.Subieta. Obiektowe języki zapytań 07, Folia 1 kwiecień 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
© K.Subieta. Obiektowe języki zapytań 02, Folia 1 marzec 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
Marcin Pamuła Mateusz Stefek
Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej JDBC Database Access Wykład 12 mgr inż. Michał Misiak.
Generyczne Repozytorium Dokumentów w XML
Podejście stosowe do obiektowych języków programowania baz danych
KONKURS WIEDZY O SZTUCE
Ksantypa2: Architektura
WekaSQL Język i aplikacja przetwarzania oraz eksploracji danych.
Wykład 8 Wojciech Pieprzyca
Praca Inżynierska „Analiza i projekt aplikacji informatycznej do wspomagania wybranych zadań ośrodków sportowych” Dyplomant: Marcin Iwanicki Promotor:
Dyskretny szereg Fouriera
Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN
Terminy bazodanowe Tabela (relacja) Wiersz (krotka, rekord)
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Podejście stosowe do obiektowych języków programowania baz danych
Automatyczne dereferencje w języku SBQL
Kalendarz 2011 Real Madryt Autor: Bartosz Trzciński.
Kalendarz 2011 Oto ciekawy kalendarz, który zaprojektował
KALENDARZ 2011r. Autor: Alicja Chałupka klasa III a.
MDA – Model Driven Architecture
Plan prezentacji Zarys projektu Geneza tematu
Języki i środowiska programowania systemów rozproszonych, Wykład 06, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 02, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
ŻYWE JĘZYKI PROGRAMOWANIA LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE Sean McDirmid Ecole Polytechnique Fédérale de Lausanne (EPFL)
Programowanie obiektowe – zastosowanie języka Java SE
Języki i środowiska programowania systemów rozproszonych, Wykład 09, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 07, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 05, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Lekcja 13 Strona 15. Lekcja 13 Strona 16 Lekcja 13 Strona 17 Vertical primary and secondary Tesla coil Jacobs ladder.
Kalendarz 2011r. styczeń pn wt śr czw pt sb nd
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Bazy danych, sieci i systemy komputerowe
(C) Jarosław Jabłonka, ATH, 5 kwietnia kwietnia 2017
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Model obiektowy bazy danych
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Kalendarz 2020.
Zbiór danych zapisanych zgodnie z określonymi regułami. W węższym znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zasadami przyjętymi dla danego.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Informatyka Stosowana – ROK II / III
Hibernate Podstawy.
Połączenie JSP z MS SQL Server 2000 Łukasz Sak Tomasz Raciborski.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Strukturalny język zapytań SQL - historia
NEMERLE Michał Maliszewski.
Obiektowe języki zapytań
Obiektowe języki zapytań
Zapis prezentacji:

PySBQL Język zapytań dla obiektowych baz danych

Aplikacje bazodanowe Główny nurt budowania aplikacji opiera się na połączeniu: SQL JDBC Java Jak wyświetlić pensję Kowalskiego?

SQL+JDBC+Java Connection conn; ResultSet R; Statement s;... s=conn.createQuery();... R=s.executeQuery( "SELECT salary FROM empl WHERE sname = 'SMITH'"); while (R.next()){ System.out.println (R.getString(1)); }

Obiektowe bazy danych Grupa OMG w roku 1991 powołuje ODMG ODMG tworzy specyfikacje kolejnych wersji języka OQL Oparty o algebrę obiektową Brak konstrukcji imperatywnych Brak abstrakcji proceduralnych Niespójna semantyka W roku 2001 grupa ODMG zostaje rozwiązana

Obiektowe bazy danych 1990 r. System LOQIS z prototypowym językiem opartym o podejście stosowe (SBA) Początek 2006 r.– reaktywacja ODMG w celu ustanowienia standardu języków zapytań. Rozważany jest standard oparty o podejście stosowe

SBA i SBQL Lata 90-te, Kazimierz Subieta z IPIPAN Stos środowisk ENVS Bindery Struktura dynamiczna Uczestniczy w przetwarzaniu operatorów niealgebraicznych Jedno środowisko może zawierać wiele binderów o danej nazwie empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) ENVS var1(string)... currentDate(...)...

Główne zalety SBA Ujednolicona architektura Uwolnienie od algebr Algorytmiczne definiowanie języka Precyzja w definiowaniu semantyki Możliwość bezpośredniej implementacji definicji Język zapytań traktowany jak język programowania

Modele danych SBA i koncepcja SBQL są niezależne od modelu danych Możliwość zaadoptowania do modelu relacyjnego, XML, abstrakcyjnych modelów obiektowych, itp. Implementacja oparta na konkretnym modelu

Model danych M0 i 1 empl i 2 fname John i 5 salary 2000 i 4 dept i 20 dept i 21 name IT i 22 employee i 3 sname Smith i 6 empl i 7 fname Bob i 9 salary 2300 i 10 dept i 8 sname Gordon i 11 empl i 13 dept i 12 sname Smith i 23 employee i 24 boss i 25 dept i 26 name Marketing i 27 employee i 28 boss R = { i 1, i 6, i 11, i 20, i 25 }

XML a M0 <i1,Osoba, {, <i5, Adres, {, }>

Model relacyjny a M0 Schemat relacyjny: Osoba(Imię, Nazwisko, DataUr) Relacja Osoba: <i1,Osoba, {, }> <i5,Osoba, {, }> ImięNazwiskoDataUr JanNowak AdamKowalski

Model danych M1 Relacja CC Nie zawiera cykli Relacja OC Zbiór C i 40 PersonClass i 41 age (...code...)... i 51 changeSal (...code...)... i 50 EmplClass i 52 netSal (...code...) Dziedziczy po

Rezultaty dla modelu M1 Rezultatem może być: Wartość atomowa (liczba, znak, itp.) Referencja do obiektu Krotki, słowniki i listy rezultatów Bindery

Dlaczego Python? - Bruce Eckel 10. Reduced Clutter 9. Its not backward-compatible in exchange for pain 8. It doesnt value performance over my productivity 7. It doesnt treat me like Im stupid 6. I dont wait forever for a full implementation of the language

Dlaczego Python? - Bruce Eckel 5. It doesnt make assumptions about how we discover errors 4. Marketing people are not involved 3. I dont have to type so much 2. My guesses are usually right 1. Python lets me focus on concepts

Dynamiczne typy #include using namespace std; template R sum(A a, B b) { return a + b; } int main() { string a("one"), b("two") cout (a, b) << endl; cout (1, 2) << endl; }

interface addable { Object add(Object b);} class X implements addable { public Object add(Object b) { return new Object(); // Test } class AddableNotFoundException extends Exception {} public class WeakTyping { public static Object sum(Object a, Object b) throws AddableNotFoundException { Class[] intfs = a.getClass().getInterfaces(); for(int i = 0; i < intfs.length; i++) if(intfs[i] == addable.class) return ((addable)a).add(b); throw new AddableNotFoundException(); } public static void main(String[] args) throws Exception { X a = new X(); X b = new X(); Object c = sum(a, b); }

Dynamiczne typy def sum(arg1, arg2): return arg1 + arg2 print sum(42, 47) print sum('spam', 'eggs')

Grupy operatorów Operatory pogrupowane są ze względu na sposób ewaluacji Brak grup jedno-elementowych

Zapytania atomowe Literały Np. 2, 3.14, napis Nazwy Np. osoba, miasto, x Wynikiem ewaluacji nazwy jest zbindowanie jej na stosie środowisk

Operatory algebraiczne Nie używają ENVS Głównie operatory arytmetyczne, porównania, itp. Jeżeli q 1 i q 2 to zapytania, a to binarny operator algebraiczny to q 1 q 2 jest zapytaniem Jeżeli q 1 to zapytanie, a to unarny operator algebraiczny to q 1 jest zapytaniem

Operatory niealgebraiczne Ewaluowane na stosie środowisk Binarne Np. where,. (kropka), order by itp. Ewaluacja zapytania q 1 θ q 2 : Ewaluacja zapytania q 1 Dla każdego elementu z rezultatu, ewaluowane jest q 2 Do wyniku tej ewaluacji stosowany jest operator θ aby obliczyć wynik częściowy

Drzewo zapytania empl where sname == Smith where empl== snameSmith

Przykładowa baza i 1 empl i 2 fname John i 5 salary 2000 i 4 dept i 20 dept i 21 name IT i 22 employee i 3 sname Smith i 6 empl i 7 fname Bob i 9 salary 2300 i 10 dept i 8 sname Gordon i 11 empl i 13 dept i 12 sname Smith i 23 employee i 24 boss i 25 dept i 26 name Marketing i 27 employee i 28 boss

Ewaluacja empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) ENVSQRES empl where sname == Smith

Ewaluacja empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) ENVSQRES i 1, i 6, i 11 empl where sname == Smith

Ewaluacja empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) ENVSQRES i 1, i 6, i 11 fname(i 2 ) sname(i 3 ) dept(i 4 ) salary(i 5 ) empl where sname == Smith

Ewaluacja ENVSQRES i 1, i 6, i 11 empl where sname == Smith empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) fname(i 2 ) sname(i 3 ) dept(i 4 ) salary(i 5 )

Ewaluacja ENVSQRES i 1, i 6, i 11 empl where sname == Smith i3i3 empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) fname(i 2 ) sname(i 3 ) dept(i 4 ) salary(i 5 )

Ewaluacja ENVSQRES i 1, i 6, i 11 empl where sname == Smith i3i3 Smith empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) fname(i 2 ) sname(i 3 ) dept(i 4 ) salary(i 5 )

Ewaluacja ENVSQRES i 1, i 6, i 11 empl where sname == Smith True empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) fname(i 2 ) sname(i 3 ) dept(i 4 ) salary(i 5 )

Ewaluacja ENVSQRES i 1, i 6, i 11 empl where sname == Smith Wynik pomocniczy: i 1 empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) fname(i 2 ) sname(i 3 ) dept(i 4 ) salary(i 5 )

Ewaluacja ENVSQRES i 1, i 6, i 11 empl where sname == Smith i8i8 Wynik pomocniczy: i 1 empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) fname(i 2 ) sname(i 3 ) dept(i 4 ) salary(i 5 )

Ewaluacja ENVSQRES i 1, i 6, i 11 empl where sname == Smith i8i8 Smith Wynik pomocniczy: i 1 empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) fname(i 2 ) sname(i 3 ) dept(i 4 ) salary(i 5 )

Ewaluacja ENVSQRES i 1, i 6, i 11 empl where sname == Smith False Wynik pomocniczy: i 1 empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) fname(i 2 ) sname(i 3 ) dept(i 4 ) salary(i 5 )

Ewaluacja empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) ENVSQRES i 1, i 6, i 11 fname(i 12 ) dept(i 13 ) empl where sname == Smith Wynik pomocniczy: i 1

Ewaluacja empl(i 1 ) empl(i 6 ) empl(i 11 ) dept(i 17 ) dept(i 22 ) ENVSQRES i 1 empl where sname == Smith

Konstrukcje imperatywne Mogą modyfikować stan bazy i stan ENVS Mogą tworzyć nowe sekcje na ENVS Np. for, while, create, delete, operatory przypisania, wstawiania

Funkcje Otwierają nowe środowisko Mogą być deklarowane z konkretną, bądź zmienną ilością parametrów Parametry mogą mieć wartości domyślne Wynikiem funkcji może być referencja do innej funkcji

Funkcje def averegeWage(*wages): i,sum=0,0.0 for w in wages: i+=1 sum+=w else: print No wages given print sum/i averegeWage((employee where dept.name==Sales).salary)

SQL+JDBC+Java Connection conn; ResultSet R; Statement s;... s=conn.createQuery();... R=s.executeQuery( "SELECT salary FROM empl WHERE sname = 'SMITH'"); while (R.next()){ System.out.println (R.getString(1)); }

PySBQL print (empl where sname == "Smith").salary

PySBQL – przykłady for n, surn in empl.(fname,sname): print n, surn

PySBQL – przykłady for p in (dept where name==IT).employee: p.salary *=1.15 if (p.salary as ps> p.dept.boss.salary as bs): ps, bs = bs, ps print p.(fname, sname, salary)

PySBQL – przykłady print empl.(Mr, fname, sname, earns, salary)

PySBQL – przykłady nowak = first( osoba where nazwisko == Nowak ) if nowak.pensja as p < 2000: p*=1.30 print nowak else: p+=

PySBQL – przykłady def fib(n): #Lista liczb Fibonacciego mniejszych od n wynik = [] a, b = 0, 1 while b < n: wynik+=[b] a, b = b, a+b return wynik