MSI dr. Inż. Mariusz Trzaska. obiektowych językach programowania

Podobne dokumenty
MAS dr. Inż. Mariusz Trzaska

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

1. Mapowanie diagramu klas na model relacyjny.

PODSTAWY BAZ DANYCH. 5. Modelowanie danych. 2009/ Notatki do wykładu "Podstawy baz danych"

Baza danych. Modele danych

Model relacyjny bazy danych

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Zasady transformacji modelu DOZ do projektu tabel bazy danych

MAS dr. Inż. Mariusz Trzaska. Realizacja różnych modeli dziedziczenia w obiektowych językach programowania

Systemy baz danych. mgr inż. Sylwia Glińska

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

MAS dr. Inż. Mariusz Trzaska

Plan wykładu: Relacyjny model danych: opis modelu, podstawowe pojęcia, ograniczenia, więzy.

Baza danych. Baza danych to:

Wykład 2. Relacyjny model danych

Jarosław Kuchta Projektowanie Aplikacji Internetowych. Projektowanie warstwy danych

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Podejście obiektowe do relacyjnych baz danych Hibernate.

Transformacja modelu ER do modelu relacyjnego

Projektowanie struktury danych

WPROWADZENIE DO BAZ DANYCH

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

PLAN WYKŁADU BAZY DANYCH GŁÓWNE ETAPY PROJEKTOWANIA BAZY MODELOWANIE LOGICZNE

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

Autor: Joanna Karwowska

FUNKCJE SZBD. ZSE - Systemy baz danych 1

Technologia informacyjna

Projektowanie warstwy danych

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

Utwórz klucz podstawowy relacji na podstawie unikalnego identyfikatora encji. podstawie kluczy podstawowych wiązanych relacji.

Technologie baz danych

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Programowanie obiektowe

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Bazy danych Wykład zerowy. P. F. Góra

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Rysunek 1: Przykłady graficznej prezentacji klas.

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

Zaawansowane Modelowanie I Analiza Systemów Informatycznych

Technologia informacyjna

TRANSFORMACJA MODELU ER DO MODELU RELACYJNEGO

Paweł Kurzawa, Delfina Kongo

Wprowadzenie do baz danych

Bazy danych - wykład wstępny

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Pierwsza postać normalna

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Alicja Marszałek Różne rodzaje baz danych

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

Transformacja modelu ER do modelu relacyjnego

WPROWADZENIE DO BAZ DANYCH

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

Bazy Danych i Systemy informacyjne Wykład 7. Piotr Syga

SIECI KOMPUTEROWE I BAZY DANYCH

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

2017/2018 WGGiOS AGH. LibreOffice Base

Model relacyjny. Wykład II

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

1 Wstęp do modelu relacyjnego

PODSTAWOWE POJĘCIA BAZ DANYCH

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Diagramy klas. dr Jarosław Skaruz

Hurtownie danych wykład 5

Wykład II Encja, atrybuty, klucze Związki encji. Opracowano na podstawie: Podstawowy Wykład z Systemów Baz Danych, J.D.Ullman, J.

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL

Bazy danych TERMINOLOGIA

Metody dostępu do danych

Modelowanie danych, projektowanie systemu informatycznego

Relacyjny model baz danych, model związków encji, normalizacje

MAS dr. Inż. Mariusz Trzaska. Realizacja asocjacji w obiektowych językach

Teoretyczne podstawy informatyki

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

Pierwsza postać normalna

Język SQL, zajęcia nr 1

Diagramy związków encji ERD Ćwiczenia w modelowaniu danych

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Podstawowe zagadnienia z zakresu baz danych

JAVA bazy danych. na bazie: Język Java - Podstawy Programowania - Jacek Rumiński

Transformacja modelu EER do postaci relacyjnego modelu danych. Zbyszko Królikowski

Programowanie wielowarstwowe i komponentowe

Programowanie w języku Java. Bazy danych SQLite w Javie

Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Bazy danych. Wykład 4: Model SERM. dr inż. Magdalena Krakowiak

INTERNETOWY KURS PODSTAW IT

BAZY DANYCH NORMALIZACJA BAZ DANYCH. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

WYKŁAD 1. Wprowadzenie do problematyki baz danych

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania

Bazy danych. Algebra relacji

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

Funkcjonalność relacyjnej i obiektowej bazy danych po usunięciu z modelu atrybutów przyjmujących wartości Null

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

Relacyjne bazy danych

Posługiwanie się tabelami

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Transkrypt:

MSI dr. Inż. Mariusz Trzaska Wykład 12 Wykorzystanie modelu relacyjnego w obiektowych językach programowania

o Model relacyjny Zagadnienia o Przyczyny popularności relacyjnych baz danych. o Mapowanie poszczególnych konstrukcji z obiektowości Klasy, Asocjacje, Dziedziczenie. o Relacyjne bazy danych w obiektowych językach programowania (m. in. JDBC). Wykorzystano fragmenty wykładu Relacyjne Bazy Danych opracowanego przez L. Banachowski, J. Wierzbicki. Modelowanie Systemów Informacyjnych (MSI), wykład 12 2

Model relacyjny o Twórca: Edgar Codd (1970) o Pojęcia Tabele Relacje Klucze Modelowanie Systemów Informacyjnych (MSI), wykład 12 3

o Tabele Model relacyjny (2) Liczba kolumn jest z góry ustalona. Z każdą kolumną jest związana jej nazwa oraz dziedzina, określająca zbiór wartości, jakie mogą wystąpić w kolumnie. Na przecięciu wiersza i kolumny znajduje się pojedyncza (atomowa) wartość należąca do dziedziny kolumny. Wiersz reprezentuje jeden rekord informacji np. osobę. W modelu relacyjnym abstrahujemy od kolejności wierszy (rekordów) i kolumn (pól w rekordzie). Modelowanie Systemów Informacyjnych (MSI), wykład 12 4

o Tabele c. d. Model relacyjny (3) IdWykładowcy Imię Nazwisko Tytuł 237 Jan Kowalski Doktor 3245 Maciej Jankowski Docent 8976 Artur Malinowski Profesor NazwaPrzedmiotu Kod IdWykładowcy Bazy danych BDA 1237 Projektowanie systemów informacyjnych PSI 3245 Technologie internetowe TIN 3245 Programowanie obiektowe POB 8976 Systemy decyzyjne SDE 1237 Modelowanie Systemów Informacyjnych (MSI), wykład 12 5

Model relacyjny (4) o Znaczenie kolumny IdWykladowcy Jej wartość nie opisuje cechy wykładu. Reprezentuje związek danego przedmiotu z wykładowcą, o którym informacja znajduje się w innej tabeli i tylko korzystając z identyfikatora możemy rozpoznać w innej tabeli wiersz właściwego wykładowcy i odczytać o nim informacje. Istotne jest więc, aby identyfikator ten jednoznacznie określał danego wykładowcę - w modelu relacyjnym nie ma innej możliwości identyfikacji wiersza tylko poprzez wartości kolumn, które jednoznacznie identyfikują wiersz. Modelowanie Systemów Informacyjnych (MSI), wykład 12 6

o Klucz Model relacyjny (5) Główny.. Jedna lub więcej kolumn, w których wartości jednoznacznie identyfikują cały wiersz. Obcy Klucz obcy jest to jedna lub więcej kolumn, których wartości występują jako wartości ustalonego klucza głównego w tej lub innej tabeli i są interpretowane jako wskaźniki do wierszy w tej drugiej tabeli. Przykład: w tabeli Przedmioty kluczem obcym jest IdWykładowcy,, którego wartości pochodzą z kolumny IdWykładowcy w tabeli Wykładowcy. Modelowanie Systemów Informacyjnych (MSI), wykład 12 7

o Wartość Null Model relacyjny (6) Dziedziny kolumn (dopuszczalne wartości) są rozszerzane o specjalny obiekt Null - oznaczający brak wartości. Brak ten może być chwilowy, wynikający z dziedziny biznesowej. NULL jest czymś innym niż 0 lub o Indeks Umożliwia błyskawiczne wyszukiwanie wartości w kolumnach objętych indeksem. Modelowanie Systemów Informacyjnych (MSI), wykład 12 8

Popularność modelu relacyjnego o Popularność modelu relacyjnego, czy raczej popularność baz danych? o Rola systemów spadkowych (legacy) o Termin baza danych kojarzony jest głównie z relacyjną bazą danych. o Prawdopodobnie w przyszłości ulegnie to zmianie. Biblioteki zapewniające m. in. trwałość danych, np. Hibernate. Obiektowe bazy danych. Modelowanie Systemów Informacyjnych (MSI), wykład 12 9

Bazy danych o Główne powody korzystania z baz danych: Język zapytań, Szybkość działania, Bezpieczeństwo danych, Bezpieczeństwo dostępu do danych, I oczywiście zdolność do przechowywania dużej ilości informacji. o Wady relacyjnych baz danych model relacyjny Inne Modelowanie Systemów Informacyjnych (MSI), wykład 12 10

Wykorzystanie baz danych o Przykrą konsekwencją wykorzystywania relacyjnych baz danych z poziomu obiektowych języków programowania jest niezgodność impedancji. o Polega na konieczności dopasowania do siebie dwóch różnych światów : Relacyjnego, Obiektowego. Modelowanie Systemów Informacyjnych (MSI), wykład 12 11

Wykorzystanie baz danych (2) o Niezgodność impedancji * -jest rodzicem -Nazwa gatunku -Imię {unique} -Płeć -/Wiek +getwiek {abstract}() Foka -jest dzieckiem * {Urodzenie} Przebywanie Foka ur. na W -Współrzędne znalezienia -Data znalezienia -Szacunkowa data urodzenia -Identyfikator[0..1] +getwiek() Basen -Objętość -Data ostatniej wymiany -Minimalny okres wymiany +getobjetoscwody() -Dokładna data urodzenia +getwiek() * 1 Foka ur. w F przebywa w 0..9 Foka fokariowa... -Data ostatniego badania -Waga -Długość {Co najmniej dwoma rodzajami. Jednorazowa zmiana < 10%} * * * * jest karmiona Karma -Nazwa {unique} -Rodzaj -Opis jest karmiona -Od -Do -Dawka Stanowisko obserwacyjne B. pobytowy -Objętość wysp {< 10%} +getobjetoscwody() B. rehabilitacyjny -Sprzęt rehabilitacyjny [1..*] +getobjetoscwody() 1..3 -Typ {...} -Maks. liczba osób Modelowanie Systemów Informacyjnych (MSI), wykład 12 12

Przejście z modelu obiektowego na relacyjny o Klasy Atrybuty, proste i złożone one wymagane i opcjonalne pojedyncze i powtarzalne obiektu i klasowe wyliczalne Metody obiektu, klasowe, przesłonięcie i przeciążenie. Modelowanie Systemów Informacyjnych (MSI), wykład 12 13

Przejście z modelu obiektowego na relacyjny (2) o Asocjacje binarne, z atrybutem, kwalifikowane, n-arne, agregacje, kompozycje. Modelowanie Systemów Informacyjnych (MSI), wykład 12 14

Przejście z modelu obiektowego na relacyjny (3) o Dziedziczenie overlapping, complete, incomplete, multi-inheritance, multi-aspect, dynamic. Modelowanie Systemów Informacyjnych (MSI), wykład 12 15

Mapowanie klas o Klasy zastępujemy tabelami. o Każdy atrybut jest przechowywany w oddzielnej kolumnie. o Dla każdej tabeli dodajemy specjalny atrybut klucz jednoznacznie identyfikujący obiekt. Raczej nie wykorzystujemy atrybutów biznesowych. o Specjalne rodzaje atrybutów wymagane i opcjonalne pojedyncze i powtarzalne obiektu i klasowe wyliczalne Modelowanie Systemów Informacyjnych (MSI), wykład 12 16

Mapowanie klas (2) o Specjalne rodzaje atrybutów Prosty Kolumna w tabeli, np. Nazwisko. Złożony Jako jeden spłaszczony atrybut, np. adres: ul. Marszałkowska 12, 03-333333 Warszawa, Polska Jako jeden atrybut, ale z użyciem specjalnej notacji np. XML <Adres> </Adres> <Ulica>Marszałkowska</Ulica> <NrDomu>12</NrDomu> <KodPocztowy>03-333</KodPocztowy> <Kraj>Polska</Kraj> Modelowanie Systemów Informacyjnych (MSI), wykład 12 17

Mapowanie klas (3) o Specjalne rodzaje atrybutów Złożony c. d. Stworzenie oddzielnej tabeli Adres i połączenie jej z główną IdAdres Ulica NrDomu KodPoczto wy Kraj 328 Marszałkowska 12 03-333 Polska Opcjonalny Kolumna musi dopuszczać wartości null. Modelowanie Systemów Informacyjnych (MSI), wykład 12 18

Mapowanie klas (4) o Specjalne rodzaje atrybutów Powtarzalny Jako jedna kolumna ze specjalną składnią. Poszczególne wartości oddzielone np. przecinkami lub wykorzystanie XML podobnie jak przy atrybucie złożonym. Stworzenie oddzielnej tabeli i połączenie jej z główną. Klasowy Utworzenie specjalnej tabeli zawierającej wartości atrybutów klasowych z różnych klas. Zapamiętanie go poza bazą danych, np. w kodzie programu. Modelowanie Systemów Informacyjnych (MSI), wykład 12 19

Mapowanie klas (5) o Specjalne rodzaje atrybutów Wyliczalny Utworzenie dedykowanej: Perspektywy (jeżeli system zarządzania bazą danych na to pozwala), Metody w języku programowania bazy danych, np. w SQL, Metody w języku programowania (poza bazą danych). Modelowanie Systemów Informacyjnych (MSI), wykład 12 20

o Asocjacje binarne Liczność 1 1, 1 - * Mapowanie asocjacji Zastępujemy je relacjami. Dodajemy klucz obcy do odpowiedniej klasy. Aby odnaleźć pracowników należących do określonej grupy, trzeba przejrzeć wszystkich. Modelowanie Systemów Informacyjnych (MSI), wykład 12 21

o Asocjacje binarne Liczność * - * Mapowanie asocjacji (2) Wprowadzamy klasę pośredniczącą (nowe nazwy ról?). Dzięki temu zamiast jednej asocjacji * - * mamy dwie asocjacje 1 - *. Modelowanie Systemów Informacyjnych (MSI), wykład 12 22

o Asocjacje binarne Mapowanie asocjacji (3) Liczność * - * - c. d. Trzy klasy mapujemy na trzy tabele. W środkowej tabeli umieszczamy klucze obce. Niestety aby znaleźć Pracowników należących do danej grupy, Grupy do których należy konkretny pracownik musimy przejrzeć wszystkie krotki z tabeli Pracownikgrupa. Modelowanie Systemów Informacyjnych (MSI), wykład 12 23

Mapowanie asocjacji (4) o Asocjacje z atrybutem (klasą asocjacji) Postępujemy analogicznie jak w przypadku asocjacji * - * Klasa pośrednicząca z atrybutami pochodzącymi z klasy asocjacji. Modelowanie Systemów Informacyjnych (MSI), wykład 12 24

Mapowanie asocjacji (5) o Asocjacje z atrybutem (klasą asocjacji) c. d. Liczność * - * - c. d. Trzy klasy mapujemy na trzy tabele. W środkowej tabeli umieszczamy klucze obce oraz atrybuty pochodzące z klasy pośredniczącej (klasy asocjacji). Wady podobne jak dla asocjacji * - *. Modelowanie Systemów Informacyjnych (MSI), wykład 12 25

Mapowanie asocjacji (6) o Asocjacje kwalifikowane Brak odpowiednika w modelu relacyjnym. Częściowo można je symulować stosując jako klucz obcy kwalifikator. NazwaGrupy Modelowanie Systemów Informacyjnych (MSI), wykład 12 26

* o Asocjacje n-arne Mapowanie asocjacji (7) Wprowadzamy dodatkową klasę pośredniczącą Modelowanie Systemów Informacyjnych (MSI), wykład 12 27

Mapowanie asocjacji (8) o Asocjacje n-arne c. d. Cztery klasy (n = 3) mapujemy na cztery tabele. W środkowej tabeli umieszczamy klucze obce oraz ewentualnie atrybuty pochodzące z klasy pośredniczącej (klasy asocjacji). Nie uwzględniono tabel pośredniczących. PK Pracownik IDPracownik PracProZad PK PracProZad FK1 IDProjekt FK2 IDPracownik FK3 IDZadanie PK Projekt IDProjekt Zadanie PK IDZadanie Wady podobne jak dla asocjacji * - *. Modelowanie Systemów Informacyjnych (MSI), wykład 12 28

o Agregacje Mapowanie asocjacji (9) Analogicznie jak w przypadku przejścia z modelu pojęciowego na implementacyjny, agregacje realizujemy tak samo jak asocjacje. o Kompozycje Jeżeli system zarządzania bazą danych umożliwia to: Tworzymy odpowiednią perspektywę, Stosujemy specyficzne więzy integralności (np. kaskadowe usuwanie). Modelowanie Systemów Informacyjnych (MSI), wykład 12 29

Mapowanie dziedziczenia o W tradycyjnych relacyjnych bazach danych dziedziczenie nie występuje. o W nowszych systemach, dziedziczenie występuje (przeważnie najprostsze: rozłączne, pojedyncze). o Oczywiście, w przypadku jego braku, można próbować różnych konstrukcji, które problem obchodzą. Modelowanie Systemów Informacyjnych (MSI), wykład 12 30

Mapowanie dziedziczenia (2) o Można powiedzieć, że sposoby obejścia braku dziedziczenia w RBD są zbliżone do tych wykorzystywanych przy przejściu z modelu pojęciowego do implementacyjnego. Wykorzystanie relacji (asocjacji) do opisania zależności pomiędzy tabelami (klasami), Spłaszczenie hierarchii. Modelowanie Systemów Informacyjnych (MSI), wykład 12 31

Mapowanie dziedziczenia (3) (1) (2) (3) Modelowanie Systemów Informacyjnych (MSI), wykład 12 32

o Sposób nr 1 Mapowanie dziedziczenia (4) Całą zawartość wszystkich klas hierarchii dziedziczenia umieszczamy w jednej tabeli. Dodajemy kolumnę określającą typ krotki ( do jakiej klasy należy obiekt ) Wady i zalety. Student -Nr indeksu Osoba -Nazwisko Pracownik -Pensja Modelowanie Systemów Informacyjnych (MSI), wykład 12 33

o Sposób nr 2 Mapowanie dziedziczenia (5) Tworzymy jedną tabelę dla każdej z podklas. W każdej tabeli będą znajdowały się elementy z nadklasy. Wady i zalety. Modelowanie Systemów Informacyjnych (MSI), wykład 12 34

o Sposób nr 3 Mapowanie dziedziczenia (6) Każda klasa ma swoją własną tabelę. Dziedziczenie zastępujemy agregacjami, czyli w przypadku RBD, relacjami pomiędzy tabelami. Dodajemy odpowiednie klucze główne i obce. Wady i zalety. Modelowanie Systemów Informacyjnych (MSI), wykład 12 35

Relacyjne bazy danych w obiektowych językach programowania o Każdy z popularnych języków programowania udostępnia biblioteki do obsługi RBD. o Java JDBC Natywne rozwiązania dla konkretnych baz, o Microsoft C# ADO, o C++ ADO (MS), ODBC. Modelowanie Systemów Informacyjnych (MSI), wykład 12 36

RBD w języku Java o Najpopularniejszym sposobem łączenia się z bazą danych w języku Java jest wykorzystanie funkcjonalności ci udostępnianej przez JDBC. // Próba wczytania driver a try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); } catch (ClassNotFoundException cnfe) { // Błąd System.err.println ("Blad: " + cnfe); System.exit(0); } String url = "jdbc:odbc:" + args[0]; Connection db_connection = DriverManager.getConnection (url, "dba", "sql"); Statement db_statement = db_connection.createstatement(); db_statement.executeupdate("create table employee { int id, char(50) name };"); db_statement.executeupdate("insert into employee values (1, 'Jan Kowlski');"); db_connection.commit(); http://www.javacoffeebreak.com/articles/jdbc/ Modelowanie Systemów Informacyjnych (MSI), wykład 12 37

o JDBC c. d. // [...] RBD w języku Java (2) // Wykonaj zapytanie ResultSet result = db_statement.executequery("select * from employee"); // Przetwarzanie wynikow while (result.next() ) { System.out.println ("ID : " + result.getint("id")); } System.out.println ("Name : " + result.getstring("name")); System.out.println (); http://www.javacoffeebreak.com/articles/jdbc/ o Jak widać nie jest to najłatwiejszy sposób pracy z danymi. o Szczególnie gdy porównamy go z podejściem obiektowym, np. ObjectPlus. Modelowanie Systemów Informacyjnych (MSI), wykład 12 38

Ciąg dalszy na następnym wykładzie Modelowanie Systemów Informacyjnych (MSI), wykład 12 39