BAZY DANYCH model obiektowy. Opracował: dr inż. Piotr Suchomski

Podobne dokumenty
Paweł Kurzawa, Delfina Kongo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie współbieżne i rozproszone

Podstawy Programowania Obiektowego

Obiektowe bazy danych

Programowanie obiektowe - 1.

Definicja obiektowego modelu danych: struktura i zachowanie

BAZY DANYCH model związków encji. Opracował: dr inż. Piotr Suchomski

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

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

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Modelowanie i Programowanie Obiektowe

Technologie baz danych

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

Obiektowe bazy danych

WYKŁAD 1. Wprowadzenie do problematyki baz danych

Projektowanie systemów informatycznych. Roman Simiński siminskionline.pl. Modelowanie danych Diagramy ERD

Baza danych. Baza danych to:

Bazy danych. Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Wykład 3: Model związków encji.

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

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Bazy danych i usługi sieciowe

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Bazy Danych i Usługi Sieciowe

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Technologie i usługi internetowe cz. 2

Technologie obiektowe

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Baza danych. Modele danych

Modelowanie danych, projektowanie systemu informatycznego

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Wprowadzenie do szablonów szablony funkcji

Obiektowe bazy danych Obiektowe i obiektowo-relacyjne bazy danych

Dziedziczenie. dr Jarosław Skaruz

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Wprowadzenie do szablonów szablony funkcji

Zaawansowane programowanie w C++ (PCP)

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

Szablony funkcji i szablony klas

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Programowanie obiektowe. Obiekt Klasa Składnia klasy: Interfejsy Składnia interfejsu: Metody Składnia instrukcji Sub: Składnia instrukcji function:

Programowanie obiektowe

RDF Schema (schematy RDF)

Materiały do laboratorium MS ACCESS BASIC

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Bazy danych TERMINOLOGIA

Dziedziczenie. Tomasz Borzyszkowski

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Aplikacje w środowisku Java

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Bazy danych i usługi sieciowe

Typy sparametryzowane

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

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

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Dokumentacja do API Javy.

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

Wykład 8: klasy cz. 4

Programowanie obiektowe

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe

Transformacja modelu ER do modelu relacyjnego

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Dziedziczenie jednobazowe, poliformizm

Programowanie obiektowe

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

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

Pojęcie bazy danych. Funkcje i możliwości.

Dr Michał Tanaś(

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Interfejsy i klasy wewnętrzne

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Bazy danych - wykład wstępny

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

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Programowanie obiektowe

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Jarosław Kuchta Projektowanie Aplikacji Internetowych. Projektowanie warstwy danych

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

TEMAT : KLASY DZIEDZICZENIE

Programowanie obiektowe

MODELOWANIE OBIEKTOWE

Funkcje i instrukcje języka JavaScript

Klasy cd. Struktury Interfejsy Wyjątki

Wykład 5: Klasy cz. 3

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Świat rzeczywisty i jego model

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Platformy Programistyczne Podstawy języka Java

Programowanie obiektowe

Język C++ Różnice między C a C++

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Transkrypt:

BAZY DANYCH model obiektowy Opracował: dr inż. Piotr Suchomski

Wprowadzenie Relacyjny model danych jest zbyt płaski i prosty do reprezentacji danych o bardziej skomplikowanej i nieregularnej strukturze (p. dane multimedialne). W teorii baz danych istnieją inne modele, za pomocą których można lepiej odwzorować rzeczywiste obiekty danych. Głównym, alternatywnym do relacyjnego modelu danych jest model obiektowy.

Obiektowy model danych Obiektowa koncepcja baz danych bazuje na rozszerzonej koncepcji obiektowych języków programowania takich jak C++ czy Java o mechanizmy zapewniające trwałość danych. W czasie wykładu zostanie przedstawiony czysty model obiektowy ODL Object Definition Language, zdefiniowany przez organizację ODMG Object Data Managment Group)

Cechy obiektowości Rozbudowany system typów, Pojęcie klasy, które są typami związanymi z ekstensją lub zbiorem obiektów należących do danej klasy. Klasa oprócz atrybutów, które mogą być typami atomowymi lub złożonymi, może zawierać metody, które są procedurami stosowanymi do obiektów danej klasy. Tożsamość obiektu (jednoznaczny identyfikator) niezależna od jego wartości. Dziedziczenie, które pozwala tworzyć hierarchiczną organizację klas, w której klasy niższe dziedziczą właściwości klasy wyższej.

System typów Można korzystać z typów atomowych (liczby całkowite, rzeczywiste, łańcuchy znaków, typy logiczne itp.) Korzystając z tzw. konstruktorów typów można tworzyć nowe typy:

System typów Typ struktury służy do tworzenia typu rekordu. Analogicznie jak struktury w języku C i C++ składają się z określonej liczby pół, a każde pole jest określonego typu. Typ kolekcji gdy jest dany jakiś typ T to za pomocą różnych operatorów kolekcji można utworzyć np. tablice, listy, zbiory (np. lista liczb całkowitych, zbiór liczb naturalnych, tablica rekordów itp.) Typ referencji Referencją do typu T jest typ, którego wartości jednoznacznie wskazują na wartości typu T (wskaźniki).

Identyfikacja obiektu W modelu obiektowym zakłada się, że każdy obiekt posiada dokładnie jeden, niepowtarzalny identyfikator (OID object identity). W modelu obiektowym mogą istnieć dwa obiekty o takich samych wartościach ale różnych identfikatorach.

Metody i hermetyzacja Klasa może, ale nie musi, posiadać funkcje/metody pozwalające przetwarzać dane obiektów danej klasy. Dzięki metodom możliwa jest realizacja hermetyzacji (encapsulate). Ograniczony jest dostęp bezpośredni do danych obiektów. Wszystkie operacje na danych wykonywane są wyłącznie za pomoca metod. Takie rozwiązanie pozwala zabezpieczyć obiekty danych przed modyfikacjami jakich nie przewidział projektan bazy. Hermetyzacja jest jedną z podstaw tworzenia niezawodnego oprogramowania.

Hierarchia klas - dziedziczenie Pewna klasa C może być podklasą klasy D. Podklasa C dziedziczy wszystkie własności oraz metody klasy D włącznie z jej typem. W klasie C mogą być zdefiniowane dodatkowe własności oraz metody lub metody klasy C mogą zastępować metody klasy D.

Jezyk ODL Język ODL jest standardowym językiem do specyfikowania struktury bazy danych w terminologii obiektowej. Stanowi on rozszerzenie języka IDL (Interface Description Language), który jest składnikiem standardu CORBA (Common Object Request Broker Architecture) znany standard obiektowego przetwarzania rozproszonego.

Projekt klas w ODL W skład projektu klas w języku ODL wchodzą 3 składniki: Atrybuty wartości związane z obiektami danej klasy, Związki opisują powiązanie danego obiektu z obiektami innych klas, Metody funkcje, które pozwalają przetwarzać dane obiektów danej klasy. Atrybuty, związki i metody tworzą własności klasy.

Atrybuty W modelu obiektowym atrybuty nie muszą być typu atomowego. Class Film{ }; attribute string tytul; attribute integer rok_prod; attribute integer czas_trwania; attribute enum dźwięk{mono, stereo, DD, SDDS} standarddzwieku; Class Aktor{ }; attribute string nazwisko; attribute Struct Adr{miasto, ulica, nr_domu} adres;

Typy w języku ODL Typy atomowe typy całkowite, zmiennoprzecinkowe, łańcuchy znaków, logiczne, wyliczeniowe. Nazwy klas, Typy strukturalne powstają z typów bazowych za pomocą tzw. konstruktorów typów (tzw. typy kolekcji): Zbiór Jeżeli T jest nazwą jakiegoś typu, to Set<T> oznacza typ, którego wartość są dowolnymi skończonymi zbiorami elementów typu T. W zbiorze każdy element występuje tylko raz.

Typy w języku ODL Wielozbiór - Jeżeli T jest nazwą jakiegoś typu, to Bag<T> oznacza typ, którego wartości są dowolnymi skończonymi zbiorami z powtórzeniami. W wielozbiorze element może występować wielokrotnie. Lista - Jeżeli T jest nazwą jakiegoś typu, to L1st<T> oznacza typ, którego wartości są dowolnymi skończonymi listami zero lub więcej elementów typu T. Szczególny przypadek stanowi typ strlng, który jest skrótowym zapisem typu List<char>. W liście ważny jest porządek elementów np. {3,5,3} i {3,3,5} to takie same wielozbiory, ale różne listy. Tablica - Jeśli T jest nazwą typu oraz i jest nazwą typu integer, to Array<T, i> oznacza typ, którego elementami są tablice i elementów typu T.

Typy w języku ODL Słownik - jeśli T i S są typami, to Dictionary<T,S> oznacza typ, którego wartościami są skończone zbiory par. Każda para składa się z wartości klucza typu T oraz wartości zakresu typu S. W słowniku nie mogą wystąpić dwie pary z taką samą wartością klucza. Z założenia metoda implementacji słownika jest efektywna w sensie wyszukiwania wartości z zakresu typu S na podstawie określonej wartości t klucza typu T. Struktura (analogicznie jak w języku C i C++) posiada pola, które mogą być również złożonego typu.

Związki Związki pozwalają określić powiązania z innymi obiektami tej klasy lub innej klasy. Class Film{ }; attribute string tytul; attribute integer rok_prod; attribute integer czas_trwania; attribute enum dźwięk{mono, stereo, DD, SDDS} standarddzwieku; relationship Set<Aktor> aktorzy; W każdym obiekcie typu Film istnieje zbiór referencji do obiektów klasy Aktor.

Związki odwrotne Bardzo często istnieje potrzeba wyrażenia tego, że istnieje związek odwrotny do zadeklarowanego związku (np. w danym filmie występują różni aktorzy, ale każdy aktor może występować w różnych filmach). Jeżeli związek R w klasie C wiąże obiekt x klasy C ze zbiorem jednego lub więcej obiektów y 1, y 2,,y n klasy D, to związek odwrotny do R wiąże z każdym z obiektów y i obiekt x.

Związki odwrotne Class Film{ }; attribute string tytul; attribute integer rok_prod; attribute integer czas_trwania; attribute enum dźwięk{mono, stereo, DD, SDDS} standarddzwieku; relationship Set<Aktor> obsada Class Aktor{ inverse Aktor::zagrałW; attribute string nazwisko; attribute Struct Adr{miasto, ulica, nr_domu} adres; relationship Set<Film> zagrałw inverse Film::obsada;

Krotność związków Analogicznie jak w przypadku związków E/R para związków odwrotnych może być wiele do wiele, wiele do jeden, jeden do wiele i jeden do jeden. m:n między klasami C i D typem związku w klasie C jest Set<D>, a w klasie D typem związku jest Set<C>; n:1 z klasy C do D typem związku w C jest D, a w klasie D typem związku jest Set<C>; 1:n (odwrotnie niż w punkcie poprzednim); 1:1 typem związku w C jest D, a w D jest C.

Związki wieloargumentowe ODL wspiera tylko związki binarne. Związki wieloargumentowe należy zamienić na wiele związków binarnych.

Metody Metody stanowią fragment kodu wykonywalnego na obiektach danej klasy. W ODL można zadeklarować nazwy metod związanych z daną klasą oraz typy wejść/wyjść (sygnatury). Kod funkcji nie jest elementem języka ODL. Kod metody zapisywany jest w języku podstawowym. Deklaracja metod występuje w deklaracji klasy razem z atrybutami i związkami. Tak jak w językach programowania metoda jest związana z daną klasą i działa na obiektach tej klasy

Metody - syntaktyka Syntaktyka deklaracji jest zbliżona do języka C. Dodatkowo rozszerzona została o dwa elementy: Parametry metod określane są dyrektywami in, out oraz inout. Wartości parametrów out i inout mogą być zmieniane i dlatego są przekazywane przez referencję, natomiast parametr in jest niezmienny i jest przekazywany przez wartość. Ponadto (tak jak w C) metoda może zwrócić wartość. W metodzie mogą pojawiać się tzw. wyjątki odpowiedzi na zdarzenia nietypowe, nie mieszczące się w standardowym mechanizmie komunikacji przez zwracane parametry. W ODL wyjątki oznaczane są słowem kluczowym raises.

Metody class Film{ } attribute string tytul; relationship Set<Aktor> obsada inverse Aktor::zagrałW; float DługośćWGodzinach() reises(brakdługości) void PokażObsadę(out Set<string>); void DorobekGwiazdy(in Aktor, out Set<Film>) raises (braktakiegoaktora)

Dziedziczenie - podklasy W standardzie ODL dziedziczenie oznaczane jest słowem kluczowym extends. Class Animowany extends Film{ } attribute enum AnimTyp{2D, 3D, poklatkowa} typanimacji; relationship Set<Aktor> dubbing inverse Aktor::udzieliłGłosu; Każdy obiekt klasy Animowany posiada własności klasy Film oraz dodatkowo własne właściwości (atrybut i związek).

Dziedziczenie wielokrotne Mimo, że w rzeczywistości mogą istnieć obiekty, które posiadają cechy kilku klas, nie można w technice obiektowej tworzyć obiektów, które przynależą do kilku klas. Należy zdefiniować inną klasę, która będzie dziedziczyć po kilku klasach. Class KomediaAnimowana extends Komedia: Anmimowany; W przypadku dziedziczenia mnogiego istnieje potencjalny konflikt nazw własności, które w różnych klasach nadrzędnych mogą nazywać się tak samo. Potrzebny jest mechanizm, który wskaże o jaką własność klasy bazowej chodzi.

Dziedziczenie mnogie - konflikty Można unikać (bądź nieudostępnić) mechanizmu dziedziczenia po wielu klasach. Opracowanie mechanizmu, który pozwoli wskazać, z której klasy bazowej własność o podanej nazwie ma być dziedziczona. Można tą własność w nowej klasie przejąć pod inną, unikatową nazwą.

Ekstensje Należy odróżnić definicję klasy od jej obiektów. Sytuacja analogiczna do odróżnienia schematu relacji od jej instancji. W standardzie ODL rozróżnienie to jest jawne klasie i obiektom nadaje się różne nazwy. Nazwa klasy określa schemat klasy, a ekstensja identyfikuje zbiór obiektów danej klasy. Class Film (extent Filmy){ attribute string tytul; };

Deklaracja kluczy w ODL W technice obiektowej jednoznaczna identyfikacja obiektu odbywa się na podstawie jego identyfikatora, dlatego definiowanie kluczy w tym modelu jest opcjonalne (niedopuszczalne w modelu E/R i relacyjnym). Można zadeklarować jeden bądź kilka kluczy używając słowa kluczowego key bądź keys. Class Student (extent Studenci keys (nazwisko, data_ur), nr_indeksu){ };

Przejście do modelu relacyjnego ODL może być stosowany do stworzenia pierwotnego projektu bazy danych, który przed implementacją jest przekształcany do postaci relacyjnej. Konwersja ta przypomina pod wieloma względami przejście od modelu E/R do schematu relacyjnego. Mimo, że w modelu obiektowym łatwiej i dokładniej można zamodelować rzeczywistość to przekształcenie do modelu relacyjnego łatwiejszego w implementacji, obarczone jest kilkoma problemami, które na etapie tego przejścia trzeba rozwiązać.

Typowe problemy przekształcenia W modelu relacyjnym wymagane jest bezwzględnie określenie kluczy, które w modelu obiektowym są opcjonalne. Często istnieje konieczność definiowania dodatkowych atrybutów, które mogą tworzyć klucze. W modelu relacyjnym atrybuty muszą być atomowe. Przekształcenie atrybutów typu kolekcji do postaci atomowej wymaga wielu sztuczek, które wymagają późniejszej normalizacji. Istnieje poważna trudność konwersji metod do postaci relacyjnej

Przekształcenia atrybutów Przekształcenie atrybutów atomowych jest zagadnieniem trywialnym. W przypadku struktury przekształca się jej pola do postaci atrybutów relacji. Class Student (extent Studenci){ } attribute string nazwisko; attribute Struct Adr{string miasto, string ulica, integer nr_domu}adres; Studenci(nazwisko, miasto, ulica, nr_domu)

Przekształcenia atrybutów Najwięcej trudności sprawia przekształcenie atrybutów typu kolekcji (zbiór, wielozbiór, lista, tablica itp.). Każdy typ posiada specyficzny sposób konwersji. Jedna z metod reprezentowania zbioru wartości atrybutu A polega na utworzeniu dla każdej wartości odpowiadającej jej krotki. Taka krotka zawiera wówczas stosowne wartości wszystkich pozostałych atrybutów klasy. Niestety taka technika zastępowania obiektów atrybutami o wartościach zbiorowych przez kolekcje krotek, po jednej dla każdej kombinacji wartości tych atrybutów może prowadzić do postaci nieznormalizowanych.

Przekształcanie atrybutów Class Aktor(extent Aktorzy){ }; attribute string nazwisko; attribute Set<Struct Adr{string miasto, string ulica}> adres; nazwisko miasto ulica Carrie Fischer Hollywood 123 Mapie St. Carrie Fischer Malibu 5 Locust Ln. Mark Hamill Brentwood 456 Oak Rd. Harrison Ford Beverly Hills 789 Palm Dr.

Przekształcenie wielozbiorów W przypadku wielozbiorów metoda przekształcenia dla zbiorów komplikuje się, ponieważ w bazie krotki nie mogą się powtarzać. Rozwiązaniem tego problemu jest wprowadzenie dodatkowego atrybutu np. licznika, który będzie przechowywał informację o ilości identycznych krotek.

Model obiektowo-relacyjny Model obiektowy nie znalazł szerszego wykorzystania w praktycznej implementacji systemów baz danych. Nie nastąpił rozwój obiektowych systemów baz danych kosztem relacyjnych baz danych. Jednak od lat 90 obserwuje się tendencję wykorzystywania niektórych zalet podejścia obiektowego w relacyjnych systemach baz danych. To spowodowało wyodrębnienie się grupy obiektowo-relacyjncyh baz danych.

Rozszerzenie modelu relacyjnego Atrybuty nie muszą być atomowe. Dużą uwagę skupia się na zbiorach struktur, które same w sobie tworzą relację. Składową krotki może być cała relacja. Wykorzystanie metod. Można zdefiniować i stosować specjalne operacje dla typów zdefiniowanych przez użytkownika. Identyfikatory krotek. Krotki odgrywają rolę obiektów. Zazwyczaj identyfikator krotki jest ukryty, ale w specyficznych sytuacjach może być widoczny. Referencje - wskaźniki do krotek.

Od ODL do modelu obiektoworelacyjnego Znacznie prostsza jest konwersja z modelu obiektowego do obiektowo-relacyjnego niż do modelu relacyjnego ze względu na wprowadzone rozszerzenia (nieatomowe atrybuty, metody, referencje itp.). Reprezentacja związków w modelu obiektoworelacyjnym jest taka sama jak w modelu relacyjnym. Problem tłumaczenia modelu z metodami do czystego modelu relacyjnego w przypadku modelu obiektowo-relacyjnego praktycznie nie