De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Vakgroep Telecommunicatie en Informatieverwerking 1 Objecttechnologie in databases Hoofdstuk 7 Database, Document and Content Management.

Verwante presentaties


Presentatie over: "Vakgroep Telecommunicatie en Informatieverwerking 1 Objecttechnologie in databases Hoofdstuk 7 Database, Document and Content Management."— Transcript van de presentatie:

1 Vakgroep Telecommunicatie en Informatieverwerking 1 Objecttechnologie in databases Hoofdstuk 7 Database, Document and Content Management

2 Vakgroep Telecommunicatie en Informatieverwerking 2 Overzicht Voorbeschouwing ODMG SQL3 Logisch databaseontwerp

3 Vakgroep Telecommunicatie en Informatieverwerking 3 Overzicht Voorbeschouwing –Ontstaan –Basisconcepten –Objectgeoriënteerde databasetechnologie ODMG SQL3 Logisch databaseontwerp

4 Vakgroep Telecommunicatie en Informatieverwerking 4 Voorbeschouwing operationele modellen “inverted list”-model hiërarchisch model netwerkmodel andere operationele modellen semi-relationeel model relationeel model andere structurele modellen deductieve modellen spatio-temporele modellen “vage en onzekere” modellen andere “intelligente” modellen RM/T model object-relationeel model objectgeoriënteerde modellen andere semantische modellen traditionele modellen structurele modellen semantische modellen verdere ontwikkelingen

5 Vakgroep Telecommunicatie en Informatieverwerking 5 Voorbeschouwing Ontstaan –Objectgeoriënteerd programmeerparadigma –Nood aan semantisch rijkere datamodellen

6 Vakgroep Telecommunicatie en Informatieverwerking 6 Voorbeschouwing Basisconcepten –Objecten, objecttypes, toestand en gedrag Er wordt in elke objectgeoriënteerde aanpak gewerkt met objecten die een complexe waarde hebben, die de toestand van het object wordt genoemd. In een systeem dat werkt met datatypes worden objecten opgebouwd via objecttypes, waarin zowel de complexe datastructuur van de toestand, als de specifieke operaties die voor het object gedefinieerd zijn (gedrag), door de softwareontwikkelaars zijn vastgelegd.

7 Vakgroep Telecommunicatie en Informatieverwerking 7 Voorbeschouwing –Inkapseling van operatoren Operatoren worden gekenmerkt door een signatuur (de externe kenmerken) en een methode (de implementatie) Enkel de signatuur van de operatoren wordt zichtbaar gemaakt voor de gebruikers. Het verborgen houden van de methode voor de gebruikers wordt inkapseling genoemd.

8 Vakgroep Telecommunicatie en Informatieverwerking 8 Voorbeschouwing –Overerving en typehiërarchieën Objectoriëntatie schrijft voor dat in nieuwe objecttypes een deel van de toestand- en gedragspecificaties van bestaande objecttypes kan worden overgenomen. De toestand en het gedrag van het nieuwe objecttype wordt dan bepaald door de combinatie van de overge- nomen en de eigen specificaties. Het mechanisme dat vastlegt hoe en onder welke voorwaarden deze combinatie gebeurt, wordt het overervingsmechanisme genoemd.

9 Vakgroep Telecommunicatie en Informatieverwerking 9 Voorbeschouwing –Operatoroverlading en -polymorfisme Bij objectoriëntatie laat het overervingsmechanisme het typisch toe om overgeërfde operatoren te herdefiniëren binnen het nieuwe objecttype en daarbij de naam van de operator te behouden. Dit heet operatoroverlading. Dezelfde operatornaam verwijst dan naar meerdere operatoren (en methodes).

10 Vakgroep Telecommunicatie en Informatieverwerking 10 Voorbeschouwing Objectgeoriënteerde databasetechnologie –Objectpersistentie Persistente objecten Naamgevingsmechanisme Bereikbaarheidsmechanisme

11 Vakgroep Telecommunicatie en Informatieverwerking 11 Voorbeschouwing –Objectidentiteit Elk object wordt geïdentificeerd door een unieke objectidentificator (OID) die door het dbms wordt aan- gemaakt en toegekend. Deze identificator kan niet worden gewijzigd (ook niet door het dbms). Een object- identificator wordt na verwijdering van het object liefst niet meer hergebruikt door het dbms.

12 Vakgroep Telecommunicatie en Informatieverwerking 12 Overzicht Voorbeschouwing ODMG –Ontstaan –Opbouw –Het objectmodel –ODL –OQL SQL3 Logisch databaseontwerp

13 Vakgroep Telecommunicatie en Informatieverwerking 13 ODMG Ontstaan –Object Database Management Group –De facto standaard voor objectgeoriënteerde databases Opbouw –Datadefinitietaal (ODL) –Datamanipulatietaal (OQL) –Taalbindingen naar C++, Smalltalk en JAVA Opmerking: “Impedance mismatch” is nog niet volledig weggewerkt

14 Vakgroep Telecommunicatie en Informatieverwerking 14 ODMG Het objectmodel –Objecttypes en objecten Constructie van objecttypes specificatie implemen- tatie implemen- tatie implemen- tatie implemen- tatie literaaltype (structuur) interface (gedrag) klasse (structuur + gedrag) bouwsteen

15 Vakgroep Telecommunicatie en Informatieverwerking 15 ODMG Literaaltypes –Basistypes »Systeemgedefinieerd vb. long, short, float, double, boolean, char, string »Gebruikersgedefinieerd enumeratietypes met typeconstructor enum vb. enum kleur {rood, groen, blauw} –Gestructureerde types »Systeemgedefinieerd vb. date, time, timestamp, interval »Gebruikersgedefinieerd met typeconstructor struct vb. struct punt {short x, short y}

16 Vakgroep Telecommunicatie en Informatieverwerking 16 ODMG –Collectietypes met typeconstructor set, bag, list, array vb. set Interfaces Bouwstenen voor het modelleren van gedrag. Klassen –Structuur »Attributen »Relaties (binaire verwantschappen tussen klassen) –Gedrag »Operatoren

17 Vakgroep Telecommunicatie en Informatieverwerking 17 ODMG –Overerving supertype/subtype-verwantschappen »‘isa’-overerving. supertype is interface. subtupe is interface of klasse. meervoudige overerving is toegelaten. subtype “erft” enkel alle operatoren van de supertypes »‘extends’-overerving. supertype is klasse. subtype is klasse. meervoudige overerving is niet toegelaten. subtype “erft” alle attributen, relaties en operatoren van het supertype

18 Vakgroep Telecommunicatie en Informatieverwerking 18 ODMG –Objecten en literalen »Toestand »Objectidentificator »Objectnamen –Extenties en sleutels –Integriteitrestricties worden geïmplementeerd via de operatoren

19 Vakgroep Telecommunicatie en Informatieverwerking 19 ODMG ODL –Objectdefinitietaal –Fysiek databaseontwerp gebeurt via de taalbindingen –Voorbeeld Artiest Kunstwerk Schilderij is_geschilderd_door Eigenaar schilderde is_van bezit

20 Vakgroep Telecommunicatie en Informatieverwerking 20 ODMG class Kunstwerk (extent kunstwerken key ID) {attribute string ID; attribute real waarde; relationship Eigenaar is_van inverse Eigenaar::bezit; boolean verifieer_waarde() raises(waarde_onbekend);} class Eigenaar (extent eigenaars key naam) {attribute string naam; attribute list adressen; relationship set bezit inverse Kunstwerk::is_van; void koop(in string ID) raises(niet_beschikbaar); void verkoop(in string ID) raises(niet_beschikbaar);} struct adres {string straat, short nummer, string postcode, string plaats, string land} class Schilderij extends Kunstwerk (extent schilderijen key schilderijnaam, is_geschilderd_door) {attribute string schilderijnaam; attribute date periode; relationship Artiest is_geschilderd_door inverse Artiest::schilderde; boolean verifieer_waarde() raises(waarde_onbekend);}

21 Vakgroep Telecommunicatie en Informatieverwerking 21 ODMG class Artiest (extent artiesten key naam,voornaam,geboren) {attribute string naam; attribute string voornaam; attribute date geboren; attribute date gestorven; relationship list schilderde inverse Schilderij::is_geschilderd_door;} Andere voorbeelden van overervingsspecificaties interface Werknemer {…} interface Loontrekker {…} class Persoon {…} class Patient extends Persoon {…} class Bediende extends Persoon : Werknemer, Loontrekker {…} class Manager extends Bediende {…}

22 Vakgroep Telecommunicatie en Informatieverwerking 22 ODMG OQL –Objectmanipulatie gebeurt via de taalbindingen –Verwant aan SQL –Toegangspunten tot de database –Geef alle schilderijen. schilderijen Het resultaattype is set. –Geef het schilderij met objectnaam ‘Mooiste_schilderij’. Mooiste_schilderij Het resultaattype is Schilderij. –Geef de naam van de schilder van het ‘Mooiste_schilderij’. Mooiste_schilderij.is_geschilderd_door.naam Gebruik van een padspecificatie. Het resultaattype is string

23 Vakgroep Telecommunicatie en Informatieverwerking 23 ODMG –Iteratorvariabelen –Geef de namen van alle schilderijen waarvan de eigenaar ‘KMSK’ is. select s.schilderijnaam from s in schilderijen where s.is_van.naam = ‘KMSK’ Het resultaattype is bag. –Geef alle verschillende namen van schilderijen met eigenaar ‘KMSK’. select distinct s.schilderijnaam from s in schilderijen where s.is_van.naam = ‘KMSK’ Gebruik van ‘distinct’. Het resultaattype is set. –Geef de namen van alle schilderijen waarvan ‘KMSK’ de eigenaar is, alfabetisch geordend in stijgende volgorde. select s.schilderijnaam from s in schilderijen where s.is_van.naam = ‘KMSK’ order by s.schilderijnaam asc Gebruik van ‘order by’. Het resultaattype is list.

24 Vakgroep Telecommunicatie en Informatieverwerking 24 ODMG –Verifieer de waarde van alle schilderijen waarvan de eigenaar ‘KMSK’ is. select struct(naam:s.schilderijnaam, waarde:s.waarde, correct:s.verifieer_waarde()) from s in schilderijen where s.is_van.naam = ‘KMSK’ Gebruik van ‘struct’ en operatieoproep. Het resultaattype is bag.

25 Vakgroep Telecommunicatie en Informatieverwerking 25 ODMG –Aggregatieoperatoren Geef de gemiddelde waarde van alle schilderijen. avg(select s.waarde from s in schilderijen) Het resultaattype is real.

26 Vakgroep Telecommunicatie en Informatieverwerking 26 ODMG –Werken met geordende collecties Geef de naam en prijs van het duurste schilderij. first(select s.schilderijnaam, s.waarde from s in schilderijen order by s.waarde desc) De functie ‘first’ geeft het eerste element van een lijst terug. Het resultaattype is struct(schilderijnaam:string, waarde:real).

27 Vakgroep Telecommunicatie en Informatieverwerking 27 ODMG –Groeperen Geef per eigenaar met meer dan 5 schilderijen de gemiddelde waarde van deze schilderijen. select naam, gemiddelde:avg(select p.waarde from p in partition) from s in schilderijen group by naam:s.is_van.naam having count(partition) > 5 Het resultaattype is set.

28 Vakgroep Telecommunicatie en Informatieverwerking 28 Overzicht Voorbeschouwing ODMG SQL3 –Ontstaan –Gebruikersgedefinieerde datatypes –Tuple-identiteit –Inkapseling van operatoren –Overerving –Multimedia Logisch databaseontwerp

29 Vakgroep Telecommunicatie en Informatieverwerking 29 SQL3 Ontstaan –Relationeel databasemodel –Objectrelationeel databasemodel Gebruikersgedefinieerde datatypes –Tupletypes Typeconstructor ‘row’ CREATE TYPE typenaam AS [ROW](componentspecificaties)

30 Vakgroep Telecommunicatie en Informatieverwerking 30 SQL3 Voorbeelden CREATE TYPE adrestype AS ( straat varchar(30), nummer integer, plaats varchar(30), postcode char(10), land varchar(30) ) CREATE TYPE eigenaartype AS ( naam varchar, adres adrestype )

31 Vakgroep Telecommunicatie en Informatieverwerking 31 SQL3 Aanmaken van tabellen CREATE TABLE tabelnaam OF typenaam Voorbeeld CREATE TABLE Eigenaar OF eigenaartype (PRIMARY KEY (naam))

32 Vakgroep Telecommunicatie en Informatieverwerking 32 SQL3 –Rijtypes Typeconstructor ‘array’ type ARRAY [aantal_elementen] Voorbeeld CREATE TYPE Eigenaartype AS ( naam varchar, adres adrestype ARRAY[3])

33 Vakgroep Telecommunicatie en Informatieverwerking 33 SQL3 Tuple-identiteit –Tuple-identificator Aanmaak: “DERIVED” vs. “SYSTEM GENERATED” Gebruik: –Uitbreiding van de “CREATE TABLE”-instructie REF IS identificatornaam {DERIVED|SYSTEM GENERATED}

34 Vakgroep Telecommunicatie en Informatieverwerking 34 SQL3 Voorbeelden CREATE TABLE Eigenaar OF Eigenaartype REF IS eigenaar_id SYSTEM GENERATED CREATE TABLE Eigenaar OF Eigenaartype (REF IS eigenaar_id SYSTEM GENERATED, PRIMARY KEY(naam))

35 Vakgroep Telecommunicatie en Informatieverwerking 35 SQL3 –Toevoegen van een referentie-attribuut attribuutnaam REF(naam_tupletype)[SCOPE(tabelnaam)] Voorbeelden CREATE TYPE Eigenaartype AS ( naam varchar, adres adrestype, eigenaar_id REF(Eigenaartype)) CREATE TABLE Eigenaar OF Eigenaartype VALUES FOR eigenaar_id ARE SYSTEM GENERATED

36 Vakgroep Telecommunicatie en Informatieverwerking 36 SQL3 CREATE TYPE Uitleentype AS ( van date, tot date, schilderij REF(Schilderijtype) SCOPE(Schilderij), ontlener REF(Eigenaartype) SCOPE(Eigenaar)) CREATE TABLE Uitleningen OF Uitleentype (PRIMARY KEY (van, schilderij)) Geef de naam van alle ontleners die een schilderij uit 1800 hebben ontleend. SELECT u.ontlener->naam FROM Uitleningen u WHERE u.schilderij->periode = 1800

37 Vakgroep Telecommunicatie en Informatieverwerking 37 SQL3 Inkapseling van operatoren –Gebruikersgedefinieerde operatoren –Implementatie SQL/PSM-taal METHOD operatornaam (argumentenlijst) RETURNS type; METHOD CREATE FUNCTION operatornaam (parameterlijst) RETURNS type FOR naam_tupletype AS [locale_declaraties] {functie_corpus}

38 Vakgroep Telecommunicatie en Informatieverwerking 38 SQL3 Objectgeoriënteerde programmeertaal METHOD CREATE FUNCTION operatornaam (parameterlijst) RETURNS type FOR naam_tupletype AS EXTERNAL NAME padnaam_voor_bestand LANGUAGE naam_taal

39 Vakgroep Telecommunicatie en Informatieverwerking 39 SQL3 Voorbeeld CREATE TYPE Uitleningtype AS ( van date, tot date, schilderij REF(Schilderijtype) SCOPE(Schilderij), ontlener REF(Eigenaartype) SCOPE(Eigenaar), METHOD bepaal_uitleenduur() RETURNS integer;) METHOD CREATE FUNCTION bepaal_uitleenduur() RETURNS integer FOR uitleningtype AS EXTERNAL NAME ‘/mydb/uitleenduur.class’ LANGUAGE ‘java’

40 Vakgroep Telecommunicatie en Informatieverwerking 40 SQL3 Overerving –Overerving bij tupletypes CREATE TYPE typenaam UNDER (naam_supertype[,…]) AS [ROW](componentspecificaties) Voorbeeld CREATE TYPE HersteldSchilderijtype UNDER Schilderijtype AS ( Codehersteller varchar, datum date, korte_omschrijving varchar, METHOD bepaal_waarde() RETURNS real;)

41 Vakgroep Telecommunicatie en Informatieverwerking 41 SQL3 –Overerving bij de aanmaak van relaties CREATE TABLE naam_subtabel UNDER naam_supertabel Voorbeeld CREATE TABLE Europese_Schilderijen UNDER Schilderij; CREATE TABLE Nederlandse_Schilderijen UNDER Europese_Schilderijen; CREATE TABLE Belgische_Schilderijen UNDER Europese_Schilderijen; CREATE TABLE Brabantse_Schilderijen UNDER Nederlandse_Schilderijen;

42 Vakgroep Telecommunicatie en Informatieverwerking 42 SQL3 Multimedia –Multimedia-objecten clob blob –DML-operatoren –XML

43 Vakgroep Telecommunicatie en Informatieverwerking 43 Overzicht Voorbeschouwing ODMG SQL3 Logisch databaseontwerp

44 Vakgroep Telecommunicatie en Informatieverwerking 44 Logisch databaseontwerp Het omzettingsalgoritme voor objectgeoriënteerde databases 6 stappen: 1) Omzetting van reguliere entiteittypes, specialisaties en generalisaties 2) Omzetting van zwakke entiteittypes 3) Omzetting van binaire relatietypes 4) Omzetting van n-aire relatietypes waarbij n>2 5) Omzetting van categorieën 6) Toevoeging van operatoren

45 Vakgroep Telecommunicatie en Informatieverwerking 45 Logisch databaseontwerp –Stap 1: Omzetting van reguliere entiteittypes, specialisaties en generalisaties. Voor elk regulier entiteittype uit het diagram wordt een ODL-klasse aangemaakt.  Kies een klassenaam.  Maak een extentie aan voor de klasse.  Alle attributen van het entiteittype worden toegevoegd aan de klasse.  Maak voor de sleutelattributen een sleutel aan in de extentie van de klasse.  Bij een klasse die correspondeerd met een subtype in het EER- diagram wordt de naam van de klasse van het corresponderende supertype toegevoegd in een ‘extends’-clausule.

46 Vakgroep Telecommunicatie en Informatieverwerking 46 Logisch databaseontwerp Voorbeeld: class Artiest (extent artiesten key naam, geboren) {attribute struct naamtype {string voornaam, string achternaam} naam; attribute date geboren; attribute date gestorven; integer leeftijd() raises(niet_te_berekenen);} omzetting Artiest Naam Voornaam Achternaam Geboren GestorvenLeeftijd

47 Vakgroep Telecommunicatie en Informatieverwerking 47 Logisch databaseontwerp –Stap 2: Omzetting van zwakke entiteittypes. Optie 2a: Het zwak entiteittype wordt op dezelfde manier omgezet als een regulier entiteittype. Het identificerend relatietype wordt omgezet zoals een binair relatietype (zie stap 3). Optie 2b: Als het zwak entiteittype niet participeert in andere relatietypes dan zijn identificerend relatietype, kan het worden gemodelleerd als een attribuut van de klasse van zijn identificerend entiteittype. Het datatype is dan van de vorm: set of list

48 Vakgroep Telecommunicatie en Informatieverwerking 48 Logisch databaseontwerp Voorbeeld: class Artiest (extent artiesten key naam, geboren) {attribute struct naamtype {string voornaam, string achternaam} naam; attribute date geboren; attribute date gestorven; integer leeftijd() raises(niet_te_berekenen); attribute set schilderijen;} omzetting Artiest Naam Voornaam Achternaam Geboren Gestorven Leeftijd Schilderij maakt SNaam 1 N Periode Waarde

49 Vakgroep Telecommunicatie en Informatieverwerking 49 Logisch databaseontwerp –Stap 3: Omzetting van binaire relatietypes. Worden gemodelleerd via relaties of attributen met een klasse als type.  Voeg een attribuut of relatie toe aan de klasse.  Bij een kardinaliteitrestrictie ‘meerdere’ moet een collectietype worden opgenomen in de specificatie.  Voeg de attributen van het relatietype toe. Dit kan door te werken met een gestructureerd type. Bij (1:N) en (M:N) relatietypes kan men als alternatief het relatietype modelleren door een extra klasse in te voeren. (zie stap 4).

50 Vakgroep Telecommunicatie en Informatieverwerking 50 Logisch databaseontwerp Voorbeeld: class Boek (extent boeken key nummer) {attribute integer nummer; attribute string titel; attribute string auteur; attribute struct ontlening {date ontleendatum, relationship Lezer is_ontleend_door inverse Lezer::heeft_ontleend} ontleningen;} omzetting Datum Boek Lezer ontleent N 1 TitelAuteurNaamAdresNummer class Lezer (extent lezers key naam) {attribute string naam; attribute string adres; relationship set heeft_ontleend inverse Boek::ontleningen.is_ontleend_door;}

51 Vakgroep Telecommunicatie en Informatieverwerking 51 Logisch databaseontwerp –Stap 4: Omzetting van n-aire relatietypes waarbij n>2. Voor elk n-air relatietype waarbij n>2 wordt een nieuwe klasse aangemaakt.  Kies een klassenaam.  Maak een extentie aan voor de klasse.  Voor elk van de betrokken entiteittypes wordt een attribuut toegevoegd die de klasse van het entiteittype als type heeft.  Maak voor de sleutelattributen een sleutel aan in de extentie van de klasse. Deze bestaat uit de samenvoeging van deze attributen, tenzij er entiteittypes voorkomen waarvoor de kardinaliteitrestrictie 1 is. In dat geval moet bijkomend worden gecontroleerd of voldaan is aan de irreducibiliteitvoorwaarde.  Alle attributen van het relatietype worden toegevoegd aan de klasse.

52 Vakgroep Telecommunicatie en Informatieverwerking 52 Logisch databaseontwerp Voorbeeld: class Planningsonderdeel (extent planningsonderdelen key wordt_bezet, is_opgenomen_in) {attribute boolean bewaking; attribute Schilderij is_voor; attribute Tentoonstelling is_opgenomen_in; attribute Plaats wordt_bezet;} omzetting Naam Bewaking Code Schilderij Tentoonstelling Plaats plan- ning 11 N PeriodeNummer Naam Thema

53 Vakgroep Telecommunicatie en Informatieverwerking 53 Logisch databaseontwerp –Stap 5: Omzetting van categorieën. Beschouw de klasse die correspondeert met de categorie (deze is aangemaakt in stap 1). Modelleer de verwantschap tussen de categorie en elk van haar supertypes door gepaste relaties toe te voegen aan deze klasse en de klassen die corresponderen met de supertypes. Opmerking: Omdat elke entiteit van de categorie verwant is met juist één entiteit uit juist één van de supertypes mag geen van deze relaties gespecificeerd zijn over een collectietype.

54 Vakgroep Telecommunicatie en Informatieverwerking 54 Logisch databaseontwerp Voorbeeld: class Eigenaar (extent eigenaars) {attribute string soort; relationship Persoon is_persoon inverse Persoon::is_eigenaar; relationship Bedrijf is_bedrijf inverse Bedrijf::is_eigenaar; relationship Museum is_museum inverse Museum::is_eigenaar;} Naam Voornaam Geboren Thema omzetting Persoon Eigenaar Bedrijf  U Museum Soort ‘particulier’ ‘bedrijf’ ‘museum’ Plaats Belastingnr Naam Plaats

55 Vakgroep Telecommunicatie en Informatieverwerking 55 Logisch databaseontwerp –Stap 6: Toevoeging van operatoren. Sleutels Operatoren Interfaces

56 Vakgroep Telecommunicatie en Informatieverwerking 56 Logisch databaseontwerp Object-relationele mapping –Omzettingsalgoritme voor relationele databases –Bijkomende overwegingen Samengestelde attributen => tupletypes Meerwaardige attributen => rijtypes Specialisaties en generalisaties => tupletypes + overerving bij tupletypes Relatietypes => referentieattributen Gedragspecificaties => ingekapselde, gebruikersgedefinieerde operatoren


Download ppt "Vakgroep Telecommunicatie en Informatieverwerking 1 Objecttechnologie in databases Hoofdstuk 7 Database, Document and Content Management."

Verwante presentaties


Ads door Google