H5 Databaseontwerp

Post on 11-Jul-2015

2.986 views 1 download

Transcript of H5 Databaseontwerp

Ontwerpen van de opslagstructuur(databaseontwerp)

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

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.

Keuze DBMS

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

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).

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.

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

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, ...

Keuze van de leverancier

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.

Van klassenmodel naar datamodel (1)

Klasse ­­> Tabel

Attribuut ­­> Kolom: datatype omzetten.

Domeindefinitie: beperkt domein

Check constraints

Database trigger

Aparte tabel

Applicatiecode

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

Domeinmodel: omzetten naar ERD.

ERD van Orders

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.

1­op­1­relatie: domeinmodel

1­op­1­relatie ERD

Veel­op­veel­relatie

Veel­op­veel­relatie bijgewerkt

ERD Veel­op­veel

Recursieve relaties

Recursieve relatie in tabellen

XOr­beperking

Xor­beperking: databasemodel

Extra overwegingen (1)

Historiek: vorige toestanden bijhouden.

Historiek bijhouden

Extra overwegingen (2)

Events registreren

Vereenvoudiging structuren

Vereenvoudigen structuren

Events registreren

Rekening

Openen Rekening C

Storten M

Afhalen M

SluitenRekening E

Events registreren

Generalisatie en specialisatie

één tabel

een tabel per subtype en één voor het supertype

een tabel per subtype

Generalisatie en specialisatie: één tabel

Generalisatie en specialisatie: drie tabellen

Een tabel voor het generalisatietype.

Een tabel per subklasse.

Generalisatie en specialisatie: een tabel per subklasse

Denormalisatie

Denormalisatie

afwijken van derde normaalvorm

berekende waarden

Databasemodel tekenen

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, ...

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.