h5 databaseontwerp
TRANSCRIPT
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 OOtaal.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, dataintegriteit, multiuservoorzieningen, veiligheid, ...Nieuwe leven sinds de komst van XML.Ideaal voor configuratieinstellingen, semipersistente gegevens (korte levensduur), uitwisseling van gegevens, ...
Keuze van de leverancier
Keuze van de leveranciers
Geschiktheid voor de toepassingCompatibiliteit met programmeertalenTypes datastructurenFlexibiliteitSecurity en privacyBackup 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
1opnrelatie > foreign key
Domeinmodel: omzetten naar ERD.
ERD van Orders
Van klassenmodel naar datamodel (3)1op1relatie:
FK aan verplichte kant
FK aan tabel met minst leden
mopnrelaties: geen probleem, tussenklassen
recursieve relaties: FK naar primaire sleutel zelfde tabel
Xorconstraint: twee foreign keys en servercode of applicatiecode.
1op1relatie: domeinmodel
1op1relatie ERD
Veelopveelrelatie
Veelopveelrelatie bijgewerkt
ERD Veelopveel
Recursieve relaties
Recursieve relatie in tabellen
XOrbeperking
Xorbeperking: 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, RAIDdisks, tape, ...Toegangsrechten definiëren.