320 likes | 491 Views
Wykład 1 - Wprowadzenie. Bazy danych. Literatura. [1] System zarządzania bazą danych Oracle 7 i Oracle 8 /R. Wrembel, J. Jezierski, M. Zakrzewicz, wyd. Nakom, Poznań, 2000. [2] Poznaj Oracle 8 /D. Austin, wyd. Mikom, Warszawa , 1999.
E N D
Wykład 1 - Wprowadzenie Bazy danych
Literatura [1] System zarządzania bazą danych Oracle 7 i Oracle 8 /R. Wrembel, J. Jezierski, M. Zakrzewicz, wyd. Nakom, Poznań, 2000. [2] Poznaj Oracle 8 /D. Austin, wyd. Mikom, Warszawa , 1999. [3] Oracle - łatwiejszy niż przypuszczasz /J. Gnybek. Gliwice : Helion, 1996. [4] Learning Oracle PL/SQL /B. Pribyl, S. Feuerstein. Beijing : O’Reilly, 2002. [5] Oracle database 11g :kompendium administratora /K. Loney , Gliwice : Helion, 2010. [6] HTML 4 :biblia /B. Pfaffenberger, B. Karow. Gliwice : Helion, 2001. [7] UML dla każdego :Ujednolicony Język Modelowania - wyrażanie związków między klasami w projektowaniu obiektowym /J. Schmuller. Gliwice : Helion, 2003. [8] UML - przewodnik użytkownika /G. Booch, J. Rumbaugh, J. , Warszawa : WNT, 2002. [9] Techniczne podstawy systemów klient-serwer /C. L. Hall. Warszawa : WNT, 1996. [10] Postawy języka C++/S. Lippman, WNT Warszawa, 2001.
Zastosowania • systemy bankowe (bankomat) • systemy masowej obsługi (hipermarket) • rezerwacja biletów lotniczych • telefonia komórkowa (sms) • Dziekanat Wydziału Elektroniki • toto-lotek • policja (ewidencja przestępców, rejestr samochodów) • rejestry sądowe, księgi wieczyste • ankiety internetowe • sklepy internetowe • gry internetowe • system audiotele • biblioteka PWr.
Kryteria klasyfikacji b.d. • wielkość • liczba odwołań • stopień ważności informacji • struktura informacji • implementacja komputerowa
Cele i zadania • wysoka jakość danych, wiarygodność i spójność • bezpieczeństwo (przed niepowołanym dostępem do informacji i utratą danych) • szybki dostęp do informacji (wielozadaniowość) • prosta obsługa systemu
Konkluzje • informacja jako dobro materialne • wpływ specyfiki informacji na metodę projektowania bazy danych • celowość budowania modelu 6
Pojęcie pliku i procesu • Plik — ciąg bajtów, przechowuje się wskaźnik do początku ciągu, ciąg zakończony jest umowną wartością oznaczającą jego koniec. • Proces — instancja programu w trakcie uruchomienia. • Baza danych = pliki + procesy. • Pliki — przechowują informacje • Procesy — zarządzają przepływem informacji
Transakcyjne bazy danych tutaj komunikują się pomiędzy sobą dwa procesy — większe bezpieczeństwo — większa elastyczność (wielozadaniowość)
Pojęcie klienta i serwera • Klient — proces który prosi o (zleca) wykonanie pewnej usługi. • Serwer — proces czekający na zlecenia klientów i realizujący je (nie mylić, tego samego określenia używa się potocznie dla określenia fizycznej maszyny – komputera — dedykowanego do wykonywania procesów serwerowych).
Transakcja • serwer jest uruchomiony i śpi (czeka, czuwa) • klient przesyła zlecenie do serwera • serwer budzi się i wykonuje szereg procesów mających na celu realizację zlecenia • klient czeka • serwer wysyła odpowiedź do klienta • klient odbiera odpowiedź • serwer jest uruchomiony i śpi (czeka, czuwa)
Popularne systemy b.d. • dBase • Clipper • Firefox • MS Access • MySql • SQL Server • PostgreSQl • Sybase • Informix • SAS • Oracle
Komunikacja warstwowa Kapitanowie grają w szachy („na odległość”) Pośrednicy zapisują kody ruchów (np. c1-c2) i zanoszą na pokład Operatorzy zamieniają kody na impulsy alfabetu Morse’a Jak umożliwić rozgrywanie 2 partii jednocześnie?
Warstwowy model sieci R. Stevens, Programowanie zastosowań sieciowych w systemie Unix, WNT, Warszawa, 1996.
Pojęcie protokołu Protokół – zespół reguł umożliwiających komunikację, standard pozwalający na przekazywanie informacji pomiędzy warstwami, w sposób zrozumiały po obu stronach, łączenie danych w większe paczki itp.
Pojęcie rekordu Rekord — paczka wartości ustalonych atrybutów (tzw. pól) np. imię, nazwisko, pesel, nip, adres, data urodzenia, płeć. Przykład poglądowy w języku C++: struct liczba_zespolona {double re,im;}; ... liczba_zespolona Z; Z.re=0;Z.im=0; cout<<”Z=”<<re<<”+j”<<im;
Pojęcie obiektu • Obiekt — oprócz pól zawiera także metody np. do przetwarzania wartości pól i komunikacji z innymi obiektami Przykład poglądowy w języku C++: class liczba_zespolona { double re,im; public: void ustaw_re(double x) {re=x;}; void ustaw_im(double y) {im=y;}; void wyswietl(void) {cout<<re<<”+j”<<im;}; }; ... liczba_zespolona Z; //Z.re=0;Z.im=0; — bła˛d — brak doste˛pu do pól re i im Z.ustaw_re(0);Z.ustaw_im(0); Z.wyswietl();
Cechy podejścia obiektowego • hermetyczność (tzw. enkapsulacja) — zamknięcie powiązanych danych w „kapsułce”, i udostępnianie ich tylko poprzez interfejs publiczny kontrolujący poprawność; • dziedziczenie — programowanie od ogółu do szczegółu, definiowanie klas obiektów na bazie już istniejących; • polimorfizm — dzięki mechanizmowi przeciażania, metody dla różnych typów obiektów mogą być uruchamiane tym samym poleceniem;
Techniki programowania obiektowego Przeciążanie funkcji różna liczba argumentów, różne typy argumentów, parametry domyślne, rozstrzyganie void fun(int i) {cout<<”\nfun1: i= ”<<i;} void fun(double d) {cout<<”\nfun2: d= ”<<d;} void main(void) { clrscr(); fun(5); fun(5.0); }
Przeciążanie (c.d.) argumenty opcjonalne, wartości domyślne int sum(int a, int b, int c=10, int mnoznik=1) { return( mnoznik*(a+b+c) ); } void main(void) { clrscr(); cout<<”\n”<< sum(0,0); cout<<”\n”<< sum(0,0,1); cout<<”\n”<< sum(1,1,100,2); }
Szablony funkcji – parametryzacja typu T gre(T x, T y) { if(x>y) return(x); //funkcja gre() zadziała dla wszystkich else return(y); //typów (klas) dla których zdefiniowany jest } //operator porównywania > void main() { clrscr(); int i=0,j=1; cout<<gre(i,j); double x=0.22,y=0.88; cout<<”\n”<<gre(x,y); }
Szablony klas – parametryzacja typu (c.d.) template <class T> class Vector { T *data; int size; public: Vector(int); ~Vector( ) { delete[ ] data; } T& operator[ ] (int i) { return data[i]; } //przeciążany operator [] };
… template <class T> Vector<T>::Vector(int n) { data = new T[n]; size = n; }; void main() { Vector<int> x(3); // skonstruowanie wektora 3-elementowego typu int x[0] = 1; x[1] = 2; x[2] = 3; cout<<”\n”<<x[0]<<”\n”<<x[1]<<”\n”<<x[2]; getch(); }
Dziedziczenie class figura { //klasa podstawowa (bazowa) - abstrakcyjna public: void kuku(void) {cout<<"\nKuku";}; virtual double pole(void)=0; //funkcja wirtualna }; class kwadrat:public figura{ //klasa pochodna double a; public: kwadrat(double x) {a=x;}; double pole(void) {return(a*a);}; };
Elementy algebry relacji Relacje Osoba (imię, nazwisko, pesel, data_ur, płeć) Samochód (nr_rejestr, rocznik, marka, poj_siln, pesel_właściciela)
Selekcja Wybieramy podzbiór relacji Przykład. Z tabeli osób wybieramy te wiersze (całe) dla których w polu płeć występuje warość mężczyzna Przykład. Z tabeli samochodów wybieramy te wiersze, w których nr_rejestr rozpoczyna się od DW….
Projekcja (rzut) Wybieramy niektóre kolumny. Przykład. Wybieramy tylko numery pesel (jedną kolumnę) z tablicy osób. Przykład. Wybieramy numery pesel (projekcja), ale tylko te które należą do mężczyzn (selekcja).
Różnica Podobnie jak różnica zbiorów: A \ B – elementy które należą do zbioru A, i jednocześnie nie należą do zbioru B
Iloczyn kartezjański A×B - Zbiór wszystkich możliwych par, w których pierwszy element należy do A, a drugi element należy do B Przykład A – numery pesel mężczyzn B – numery pesel kobiet A×B – wszystkie możliwe pary (mieszane) Liczba możliwych par jest równa iloczynowi liczby mężczyzn i liczby kobiet
Złączenie Równozłączenie – iloczyn kartezjański, a następnie selekcja z warunkiem równości wartości pewnego atrybutu (wspólnego) z obu tabel Złączenie naturalne – dodatkowo usuwane są powtarzające się atrybuty (te porównywane) Złączenie zewnętrzne – w wyniku pozostają wiersze nie mające odpowiednika