Informatyka (10) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego i Mostów p. 4 Hydro katpalik@pg.gda.pl katarzyna.palikowska@wilis.pg.gda.pl
Architektura Klient-Serwer Gruby klient Cienki klient Serwer www???
Architektura systemów baz danych Internet Serwery aplikacji Cache danych
HTML HTML - HyperText Markup Language.html znaczniki atrybuty
XML extensible Markup Language - rozszerzalny język znaczników przeznaczony do reprezentowania różnych danych w strukturalizowany sposób Korzeń (Root).xml Element (znacznik) Atrybut Struktura drzewa
Format XML SQL
Typ danych xml
Proces walidacji sprawdzanie zgodności danych ze schematem XSD XML Schema XSD SQL create table Ksiazka ( isbn char(30), tytul char(200), rok_wydania integer, nr_wydania char(10), id_wydawnictwa integer, PRIMARY KEY (isbn) )
XSLT Extensible Stylesheet Language Transformations - język przekształceń dokumentów XML Źródło: Wikipedia
Zastosowanie XML Formaty.docx,.xlsx Wymiana danych pomiędzy systemami Firma transportowa Firma windykacyjna / Biuro prawne Komornik Poczta E-Sąd www.e-sad.gov.pl
SUMO/RailML
XQuery XPath XPath -XML Path Language - Język ścieżek XML Parent() Child() Siblings() 1. Wybierz nazwiska Pracowników /Pracownicy/Pracownik/Nazwisko <Nazwisko>Nowak</Nazwisko> <Nazwisko>Kowalski</Nazwisko> 2. Wybierz imiona Pracowników /Pracownicy/Pracownik/Imie <Imie>Jan</Imie> <Imie>Andrzej</Imie> //Imie <Imie>Jan</Imie> <Imie>Karol</Imie> <Imie>Karolina</Imie> <Imie>Andrzej</Imie> element /Pracownicy/Pracownik[Region= pomorskie ]/Nazwisko /Pracownicy/Pracownik/Dzieci/Dziecko/@Data_ur atrybut
XML extensible Markup Language - rozszerzalny język znaczników przeznaczony do reprezentowania różnych danych w strukturalizowany sposób MatLab / SciLab.xml Struktura drzewa
SciLab XML Object dok=xmlreadstr("<pracownicy><pracownik><imie>jan</imie><nazwisko>nowak</nazwisko><stawka>2500</stawka ><Region>pomorskie</Region><Dzieci><Dziecko><Imie>Karol</Imie></Dziecko><Dziecko><Imie>Karolina</Imie></Dziecko>< /Dzieci></Pracownik><Pracownik><Imie>Andrzej</Imie><Nazwisko>Kowalski</Nazwisko><Stawka>3000</Stawka><Region>mazo wieckie</region></pracownik></pracownicy>"); dok.root ans = XML Element dok : XML Document name: Pracownicy type: XML_ELEMENT_NODE s=xmlxpath(dok,"//pracownik") s = XML List size: 2 s.content ans =!JanNowak2500pomorskieKarolKarolina AndrzejKowalski3000mazowieckie! s(1).content ans = JanNowak2500pomorskieKarolKarolina s=xmlxpath(dok,"count(//pracownik/dzieci/dziecko)") s = 2. s=xmlxpath(dok,"count(//pracownik/dzieci/dziecko[imie=""karol""])") s = 1. root : XML_ELEMENT_NODE ->dok.root.children(1) ans = XML Element name: Pracownik type: XML_ELEMENT_NODE
Relacyjno-obiektowe bazy danych Rozbudowane typy danych: obiekt OLE, Blob, Text (Nota), XML Procedury składowane (stored procedures) Triggery (triggers) Widoki / Perspektywy (views) select nazwisko, miejscowosc From widok_1 Ostrożna ewolucja relacyjnych baz danych w kierunku obiektowości
Porównanie metodologii Projektowanie strukturalne Konto bankowe Projektowanie obiektowe Klasa, obiekt (instancja klasy) ID Numer konta Data Stan 1 2 3. Konto Atrybuty Procedura Przelew(data, konto1, konto2, kwota) Procedura Załóż( ) 1 2 ID Id_konta Id_wlasciciela 3. Procedura Likwiduj( ) Załóż() Likwiduj() Wpłać(data,kwota) Wypłać(data,kwota) PodajStan() Metody wersjonowanie obiektu, temporalność (historia zmian)
Hermetyzacja Hermetyzacja (enkapsulacja) Podstawowy paradygmat obiektowości Kolejka Opróżnij() Czy_zawiera(element) Wstaw(element) Pobierz()
Dziedziczenie, polimorfizm Object Figura: Pole: real ObliczPole() Rysuj() Osoba: PESEL Adres Klasy potomne Okrąg:Figura Wielokąt:Figura Student Pracownik Promień: real Srodek: Punkt Wierzch:Punkt[] Nr indeksu Nr ewiden. ObliczPole() Rysuj() ObliczPole() Rysuj()
Obiektowy model danych Osoba Nazwisko* Imię* Adres* Pracownik Zawód* PZ Zatrudnienie Data Wypłata* Ocena* FZ Firma Nazwa Miejsce* OQL: select p.adres from Firma, Firma.FZ.PZ as p where Radom in Firma.Miejsce
Relacyjny model danych Firma ID 1 2 3. Nazwa Zatrudnienie 1 1 2 ID_firmy 3. ID Id_firmy Id_pracow nika Miejsce Data 1 Pracownik Adres ID Nazwisko Imię ID Id_pracownika ulica 1 2 3. Zawód ID Id_pracownika Zawód 1 2 3. Wypłata 1 ID Id_zatrudnienia Kwota Data Ocena 1 ID Id_zatrudnienia Opis Data
Porównanie OQL i SQL Object Query Language OQL: select p.adres from Firma, Firma.FZ.PZ as p where Radom in Firma.Miejsce Structured Query Language SQL: select a.adres from Miejsce as m, Zatrudnienie as z, Pracownik as p, Adresy as a where m.miejsce = Radom and m.id_firmy = z.id_firmy and z.id_pracownika = p.id and p.id =a.id_pracownika Źródło: K.Subieta Obiektowość kontra model relacyjny
Python Wartości traktowane są jako obiekty Zmienne traktowane są jako referencje Wiązania dynamiczne Hermetyzacja Dziedziczenie Polimorfizm Wsparcie paradygmatu programowania obiektowego Język interpretowany >>>a= ala ma kota >>>b = a.upper() ALA MA KOTA >>> ala ma kota.capitalize() Ala ma kota >>>imiona = [ Jan, Karol, Jan, Kamila ] >>>imiona.count( Jan ) 2 >>>imiona.append( Janina ) >>>imiona.replace( Jan, Janek ) Obiekt posiadający unikalny id >>> a.id() Inny obiekt posiadający również swój unikalny id >>> a is b False