h5 databaseontwerp

39
Ontwerpen van de opslagstructuur (databaseontwerp)

Upload: arne-vandenbussche

Post on 11-Jul-2015

2.993 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: H5 Databaseontwerp

Ontwerpen van de opslagstructuur(databaseontwerp)

Page 2: H5 Databaseontwerp

Taken bij ontwerp databaseVerzamelen kwantitiatieve gegevens (= analyse).Keuze DBMSVan klassenmodel naar technisch databasemodel.Technische en fysieke inrichting van de database.

Page 3: H5 Databaseontwerp

Verzamelen kwantitatieve gegevens

Volumeschattingen: hoeveel data, bv. hoeveel klanten.Bestandactiviteit: hoe frequent raadplegingen?Bestandsverandering: percentage wijzigingen in records.Bestandsverloop: aantal toegevoegde en verwijderde records.Bestandsgroei.Bewaartijd (cf. transfer naar datawarehouse).Toegangsbeperkingen.Stabiliteit gegevensvereisten (kan datamodel wijzigen?).Toegelaten zoektijden.

==> Is analyse.==> doel: DBA toelaten opslagstructuur technisch goed te ontwerpen.

Page 4: H5 Databaseontwerp

Keuze DBMS

Manier van opslag:Objectgeoriënteerde DBMSRelationele DBMSBestanden.Keuze leverancier.

Page 5: H5 Databaseontwerp

Objectgeoriënteerde DBMS

DatabasemodelKlassenmodel ~Eenvoudige opslag in OO­taal.Vaak gebruikt voor complexe gegevens (geografisch, Cad/CAM)Leveranciers: Gemstone, DB4o, Versant, Intersystems, Objectivity, ...Nog weinig verspreid (maar gaat in stijgende lijn).

Page 6: H5 Databaseontwerp

select selfoid from employee where `employee::address[1]` like"*USA*"

Objectgeoriënteerde query's

Alle auteurs van een boek met LOID 10.0.12354:SELECT SELFOID FROM (10.0.12345)->Book::authors AS Author ;

We zoeken een object van de klasse Book waarvan de auteur een SSN van 534223 heeft:SELECT SELFOID FROM Book WHERE Book::author-> Person::ssn = 534223 ;

Alle voorbeelden komen uit de handleiding van Versant.

Page 7: H5 Databaseontwerp

Relationele database

DatabasemodelKlassenmodel ≠Impedance mismatch

Ophalen van objecten: wat met geassocieerde objecten?Opslaan van objecten: structuur verschilt van databasestructuur.

Databaseopslag is complex en tijdrovend (tot 25% vd code).Gelukkig: frameworks en codegeneratoren.

Absolute marktleider

Page 8: H5 Databaseontwerp

BestandenVeel nadelen t.o.v. DBMS: backup, data­integriteit, multi­uservoorzieningen, veiligheid, ...Nieuwe leven sinds de komst van XML.Ideaal voor configuratie­instellingen, semi­persistente gegevens (korte levensduur), uitwisseling van gegevens, ...

Page 9: H5 Databaseontwerp

Keuze van de leverancier

Page 10: H5 Databaseontwerp

Keuze van de leveranciers

Geschiktheid voor de toepassingCompatibiliteit met programmeertalenTypes datastructurenFlexibiliteitSecurity en privacyBack­up en recoveryIntegriteitPerformance en efficiëntieGebruiksgemak

Overdraagbaarheid.Data dictionary.Datacommunicatie.Gedistribueerde gegevens.Handleiding, documentatie en opleiding.Verkoperssupport.Kostprijs.

Page 11: H5 Databaseontwerp

Van klassenmodel naar datamodel (1)

Klasse ­­> Tabel

Attribuut ­­> Kolom: datatype omzetten.

Domeindefinitie: beperkt domein

Check constraints

Database trigger

Aparte tabel

Applicatiecode

Page 12: H5 Databaseontwerp

Van klassenmodel naar datamodel (2)Primaire sleutel

uniek attribuut

eventueel surrogate key

soms combinatie van attributen (! performantie)

ev. wachten tot FK's zijn toegevoegd

Verplichte en optionele kolommen

Unique keys

1­op­n­relatie ­­> foreign key

Page 13: H5 Databaseontwerp

Domeinmodel: omzetten naar ERD.

Page 14: H5 Databaseontwerp

ERD van Orders

Page 15: H5 Databaseontwerp

Van klassenmodel naar datamodel (3)1­op­1­relatie:

FK aan verplichte kant

FK aan tabel met minst leden

m­op­n­relaties: geen probleem, tussenklassen

recursieve relaties: FK naar primaire sleutel zelfde tabel

Xor­constraint: twee foreign keys en server­code of applicatiecode.

Page 16: H5 Databaseontwerp

1­op­1­relatie: domeinmodel

Page 17: H5 Databaseontwerp

1­op­1­relatie ERD

Page 18: H5 Databaseontwerp

Veel­op­veel­relatie

Page 19: H5 Databaseontwerp

Veel­op­veel­relatie bijgewerkt

Page 20: H5 Databaseontwerp

ERD Veel­op­veel

Page 21: H5 Databaseontwerp

Recursieve relaties

Page 22: H5 Databaseontwerp

Recursieve relatie in tabellen

Page 23: H5 Databaseontwerp

XOr­beperking

Page 24: H5 Databaseontwerp

Xor­beperking: databasemodel

Page 25: H5 Databaseontwerp

Extra overwegingen (1)

Historiek: vorige toestanden bijhouden.

Page 26: H5 Databaseontwerp

Historiek bijhouden

Page 27: H5 Databaseontwerp

Extra overwegingen (2)

Events registreren

Vereenvoudiging structuren

Page 28: H5 Databaseontwerp

Vereenvoudigen structuren

Page 29: H5 Databaseontwerp

Events registreren

Rekening

Openen Rekening C

Storten M

Afhalen M

SluitenRekening E

Page 30: H5 Databaseontwerp

Events registreren

Page 31: H5 Databaseontwerp

Generalisatie en specialisatie

één tabel

een tabel per subtype en één voor het supertype

een tabel per subtype

Page 32: H5 Databaseontwerp

Generalisatie en specialisatie: één tabel

Page 33: H5 Databaseontwerp

Generalisatie en specialisatie: drie tabellen

Een tabel voor het generalisatietype.

Een tabel per subklasse.

Page 34: H5 Databaseontwerp

Generalisatie en specialisatie: een tabel per subklasse

Page 35: H5 Databaseontwerp

Denormalisatie

Denormalisatie

afwijken van derde normaalvorm

berekende waarden

Page 36: H5 Databaseontwerp
Page 37: H5 Databaseontwerp

Databasemodel tekenen

Page 38: H5 Databaseontwerp

Databasemodel documenteren

Opsomming van de tabellen.Kolommen beschrijven: naam, datatype, lengte, verplicht of niet, domeinbeperkingen.Primaire sleutel beschrijvenUnique keys beschrijven.Foreign key constraints beschrijven (cascade of restricted)Indexen....

Idem bij bestanden: naam, type, toegangstypes, recordbeschrijving, ...

Page 39: H5 Databaseontwerp

Technische en fysieke organisatie database  ==> DBA (database 

administrator)Optimalisatie toegangstijden: indexen, denormalisatie, ...Implementatieoplossingen zoeken: autonummering, domeinbeperkingen via check constraints, database triggers, stored procedures, ...Grootte tabellen berekenen en opslagruimte schatten.Fysieke organisatie database: tablespaces, data files, log files, enzovoort.Keuze informatiedrager: disk, RAID­disks, tape, ...Toegangsrechten definiëren.