Samenvatting: Databanken



Vergelijkbare documenten
Antwoorden op de vraagjes in het boek

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

Databases - Inleiding

1. Inleiding Inleiding SQL Inleiding Database, databaseserver en databasetaal Het relationele model...

Samenvatting Databanken D.E.R.P.

Informatie & Databases

Databases en SQL Foundation (DBSQLF.NL)

Samenvatting Databanken

Vragen Databases. Hoofdstuk 1

Samenvatting Databanken

Hoofdstuk: 1 Principes van databases

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

ER-modeling. Wat is ER-modeling? ERD & relationeel model. ER-benadering DMO Datamodellering 2008

ER-modeling. Datamodellering Wat is ER-modeling?

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

Datamodelleren en databases 2011

12. Meer dan één tabel gebruiken en sub-queries

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

SQL datadefinitietaal

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank

Data Definition Language

Query SQL Boekje. Fredrik Hamer

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

6. Het maken van een database

Sparse columns in SQL server 2008

H 1 Databases en databasesystemen (10 punten) a. Veel van de huidige databases zijn gebaseerd op een drie-laags systeemarchitectuur:

SQL & Datamodelleren

NHibernate als ORM oplossing

EXIN Databases en SQL Foundation

Relationele databanken

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

Inhoud. Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2

Secure Application Roles

ISO Datamodelleren. Prof. dr. Paul De Bra. Gebaseerd op: Database System Concepts, 5th Ed. Silberschatz, Korth and Sudarshan

Elfde-Liniestraat Hasselt Schooljaar TINFO POKER GAME Oracle Scripts

het bank voorbeeld ISO Datamodelleren modelleren met het E-R R model een database ontwerpen verzamelingen van relaties (verbanden)

Les 2 Eenvoudige queries

Het omzetten van een ER-diagram naar SQL

Vragen hoofdstuk 1: Resultaat

Workshop 3x. Normaliseren. Normaliseren. Hiëarchische database ODBMS. Relationele database. Workshop 14 oktober A. Snippe ICT Lyceum 1

Versieperikelen. Bijlage C

DATAMODELLERING ER DIAGRAM

Structured Query Language (SQL)

Technisch Ontwerp W e b s i t e W O S I

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: Groep TDI 1

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans

Databanken - les 2.

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:

Technische nota AbiFire Rapporten maken via ODBC

Zelftest DB2 for z/os basiscursus

Van een ER-diagram naar een database specificatie in SQL

Les S-01: De basisbeginselen van SQL

Databanken - les 2.

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat

Een website maken met databasetoegang.

Na bestudering van dit hoofdstuk moet je tot het onderstaande in staat zijn:

Als er besloten is een database op te stellen dient men een analyse van de informatiegegevens te volbrengen.

Inleiding Databases en Data Base Management Systems Tabellen Wat is SQL?... 5

Introductie (relationele) databases

SQL en XML. XML schema s & DMO. Entiteitsklasse en attribuut. SQL en XML. Datamodellering Schema een ruim begrip (zie Møller, p.

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

ISO Query By Example

Normaliseren versie 1.1

Thinking of development

Koppeling met een database

Database Structuur via menus

Entiteit Zaken en gebeurtenissen waarvan gegevens moeten worden vastgelegd worden een entiteit genoemd: b.v. mens, voorstelling, auto.

Ontwerp van Informatiesystemen

Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0

EMBEDDED SQL. Inleiding. Queries en update-opdrachten. Embedden en hostvariabelen

Data Manipulatie. Query Talen. / Informatica

voorbeeldexamen I-Tracks Databases and SQL Foundation Voorbeeldexamen DBSQLF Uitgave juni 2006

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Anatomie van een databank

hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1

DATAMODELLERING BASIS UML KLASSEMODEL

Module 1 Programmeren

EXAMEN juni 2018 Gegevensbanken

Vakgroep CW KAHO Sint-Lieven

Functionele beschrijving: Scannen naar AFAS Profit.

Excel Controller. Handleiding Excel Controller Wizard

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Data Warehouse Script Generator Doel

opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren

Functionele beschrijving: scannen naar Exact Globe.

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Dynamiek met VO-Script

11. Het selecteren van gegevens deel II

Martiris Secure Private Data. Gegevensbescherming in Oracle Databases

EXAMEN juni 2016 Gegevensbanken

DATAMODELLERING CRUD MATRIX

Structured Query Language

Functionele beschrijving: scannen naar UNIT4 DocumentManager

Technische nota AbiFire5 Rapporten maken via ODBC

Integriteitsbewaking bij een relationele database

[TOETS SQL INLEIDING]

Les 11 : Basis SQL (deel2).

Datakwaliteitsborging met Oracle dynamisch SQL

Het belang van. Data Modellering. GEMINIT Training. Data Modellering. Frédéric BARBIER

Archimate risico extensies modelleren

Transcriptie:

Samenvatting: Databanken Hoofdstuk 1 1.1 Enkele basisconcepten Data zijn gegeven feiten Informatie > betekenis van gegevens Een database is een collectie van persistente (permanent geheugen van de pc) data Een computersysteem voor het beheer van databases wordt een databasesysteem genoemd. 1.2 Gegevensbeheer door de eeuwen heen Gegevens registreren en conserveren > geleidelijk aan structureren Relationeel databasemodel > verzameling van samenhangende tabellen. 1.3 Databasesysteem 3 Hoofdcomponenten in databasesysteem: Hardware: CPU en geheugen Primair geheugen: Statisch (cache) en dynamisch (werk/hoofdgeheugen) RAM Meestal databasebuffers Hoe meer geheugen > betere prestatie Secundair geheugen: Schrijven, CD Rom, Bestandsorganisatie: Primair: manier waar fysiek wordt opgeslagen Secundair: toegang optimaliseren > extra data (locatie & verbanden) Data: Database = coalitie van records Record= opgebouwd uit 1 of meerdere velden (vastgelegd in het recordtype) die data kunnen bevatten. In het secundair geheugen > records opgeslagen in bestanden Database > geïntegreerd geheel: linken behouden Software: Het databasemanagementsysteem (dbms) is de softwarecomponent van een databasesysteem die instaat voor het beheer van de databases. Toepassingsprogramma s > indirecte manier want gaan via dbms Tools voor gemak en automatiseren van de taken Bv: back up software Communicatiesoftware (database verspreid) Datawarehouse: Grote database bedoeld voor data analyse Vaak gestructureerd volgens tijdsdimensie Datamining heeft tot doel zinvolle verbanden te vinden die voorheen niet bij de gebruiker bekend waren. Rapportgeneratoren Gebruikers: Persoon, op 1 of andere manier interactie met dbs Verschillende > gebruikersprofielen Data administrator: centraal verantwoordelijk Database administrator: Technisch verantwoordelijk voor implementatie en onderhoud Toepassingsontwikkelaar Eindgebruiker: dagelijks werken met de database Gewone: afgeschermd Geavanceerd: complexe instructies

1.4 Databasemanagementsysteem Hoofdfunctionaliteit: Databasedefinitie: Zowel structuur als semantische regels vastleggen > integriteit (correctheid vd data) Manipulatie: Efficiënt toevoegen, verwijderen, aanpassen en doorzoeken Constructie: Opslag in geheugen Andere functionaliteit: Delen van data: Simultane toegang tot de database, conflicten verhinderen Beveiliging van data: Ongeoorloofd gebruik of fysiek falen tegengaan Optimaal systeemgedrag: Alles realiseren zonder nadeel voor de gebruiker. Architectuur: 3 lagen architectuur Interne laag (opslaglaag) : Databaserecords in bestanden Sommige recordvelden zijn meerwaardig Sommige velden van het recordtype zijn optioneel Fileheader/prefixveld Index = <veldwaarde,referentie>! anders voor variabele lengte Logische laag: Abstracte voorstelling van de database Enkel entiteiten, verbanden, Volgens databaseschema Externe laag (individuele laag) : Dichtst bij eindgebruiker In de laag worden views gedefinieerd Views: bepaalt hoe de database gezien wordt door bepaalde eindgebruikers Mappings: Omzettingsprocessen van data en operaties tussen de 3 lagen van de architectuur Dataonafhankelijkheid: (gegarandeerd door het gebruik van meerdere lagen) Fysieke DO: Interne beschrijving aangepast zonder impact op de logische beschrijving Logische DO: Logische beschrijving aangepast zonder impact op de diverse views 1.5 Wanneer gebruik je een databasesysteem Voordelen en nadelen zie boek pg 27

Hoofdstuk 2 2.1 Enkele basisconcepten Een datamodel is een verzameling van voorschriften en regels die het mogelijk maken om de structuur en het gedrag te beschrijven van data die in bepaalde software voorkomen. Een databasemodel is een verzameling van voorschriften en regels die het mogelijk maken om zowel de structuur, de beperkingen voor integriteit en beveiliging, als het gedrag van een database te beschrijven op het niveau van de logische laag uit een drielagen architectuur voor databasemanagementsystemen. 2.2 De operationele modellen Het hiërarchisch databasemodel: Hiërarchisch georganiseerd in boomstructuren Boomstructuur is opgebouwd uit knopen > root, kindknopen, bladknopen, subbomen, Databaseschema > collectie van boomstructuren ( knopen: recordtypes) Database > collectie van bomen (knopen: records)! elke kind maar 1 ouder > kopie nemen (gevaarlijk) > virtuele ouder kind relatie Opgeslagen als hiërarchische recordsequentie > lineair te ordenen, overlopen in pre order Manipuleren via hosttaal m.b.v. hostvariabelen > doorgeefluik (controle) $ > ingebedde operatoren Het netwerkmodel: Veralgemening van het hiërarchisch databasemodel (boomstructuur > graafstructuur) Graaf: ook cyclisch, gericht, Recordtypes = toegangspunten tot de database (zie voorbeeld pg 39) Toegang > efficiënter, manipulatie > complexer (verborgen voor gebruiker) Eveneens via hosttaal en hostvariabelen 2.3 De structurele modellen Abstracte structuur!! Het relationeel databasemodel: Data gestructureerd in tabellen > vooraf gedefinieerde vorm Tabel : voorstellingsvorm van het wiskundige concept relatie Waarden in tabel zijn atomaire waarden > niet verder opgesplitst Elke kolom > unieke naam en datatype Kandidaat sleutel van een tabel is een irreducibele verzameling van kolommen, waarvan de waarden de rijen op een unieke manier identificeren. M.a.w. 2 eigenschappen: Uniciteit : voor elke rij in de tabel is de combinatie van de waarden van de kolommen van de kandidaat sleutel uniek binnen de tabel Irreducibiliteit: je kunt geen enkele kolom uit de kandidaat sleutel weglaten zonder dat hierdoor de uniciteiteigenschap teniet wordt gedaan Vreemde sleutel > verwantschap tussen rijen van 2 tabellen Manipulatie aan de hand van SQL 2.4 De semantische modellen Modelleren van semantiek van gegevens benadrukt!! De objectgeoriënteerde databasemodellen: Tegemoet komen aan extra noden door nieuwe programmeertalen enzo Steunen op notie van objecten die elk een unieke identiteit hebben en gedefinieerd > datatypes of objectprototypes > structuur en gedrag klasse > rechthoek, overerving > pijl van specifieke klasse naar algemene klasse, binaire verwantschappen > gemarkeerde pijlen (dubbele of enkele pijl > meerdere of enkele verwantschappen)

Het objectrelationeel databasemodel: Uitgaan van relationeel model, met extra objectgeoriënteerde faciliteiten (overerving, operatoren enkel geldig op bepaalde tabellen, ) Hybride databasemodellen: Postrelationeel model > beschouwt verschillende databasemodellen in de logische laag Mapping naar de onderliggende laag gemaakt > kan simpel overschakelen 2.5 Verdere ontwikkelingen Impedance mismatch > incompatibiliteit > nadelig informatieverlies vage databasemodellen 2.6 Wanneer gebruik je welk databasemodel Aspecten die de keuze kunnen beïnvloeden: Snelheid, aanwezige kennis en technologie, aanleercurve voor gebruikers, duurzaamheid, standaardisatie, schaalbaarheid, technische support en ondersteuning,

Hoofdstuk 3 3.1 Het volledige databaseontwerpproces Bestaat uit 4 fasen: Informatievergaring, conceptueel, logisch en fysiek ontwerp. (vb. pg 57) Informatievergaring: Cruciaal > juiste betekenis en context (domeinanalyse) Informatiestromen vinden > functionele analyse Behoefteanalyse: zicht op informatiebehoeften Abstrahering, modellering en implementatie: Abstrahering: schetsen wat het belangrijkst is > verwantschappen!! Modellering: representatietechniek > EER diagram Alternatief > UML (objectgeorienteerd) Implementatie: kies model, zet schema om naar instructies in de DDL van model Aangevuld met andere shizzle (pg60) Het gebruik van CASE tools: Gedeeltelijk geautomatiseerd Meestal optie > grafisch conceptueel model te bouwen 3.2 Het (uitgebreid) entity relationship model Entiteitstypes en relatietypes: Structurele aspecten: Een entiteit is een ding dat een zelfstandig bestaan leidt in de reële wereld. Een entiteittype (rechthoek) karakteriseert een collectie van entiteiten en wordt gekenmerkt door een naam & een verzameling van attributen (ovaal) Een relatietype (ruit) is een verwantschap tussen twee of meer al dan niet verschillende entiteittypes. Men spreekt respectievelijk van een binair, ternair of n air (n>3) relatietype. Verder wordt elk relatietype gekenmerkt door een naam. Karakteristieken en restricties: Attributen: Verder karakteriseren > betere semantiek Meerwaardige (op elk tijdstip collectie van waarden kan aannemen) < > enkelwaardige attributen (op elk tijdstip 1 waarde kan aannemen) Meerwaardig > dubbel ovaal Samengesteld (opgebouwd uit andere attr.) < > enkelvoudig Ovaal verbonden met hoofd attribuut Afgeleide attributen > berekenen uit andere attributen (ovaal stippellijn) Sleutelattributen zijn attributen van een sleutel Sleutel = verzameling van attributen waarvoor uniciteit en irreduc. gelden Sleutel > onderstreept in ovaal Orthogonaliteit: kunnen willekeurig gecombineerd voorkomen Zwakke entiteittypes: Een zwak entiteittype karakteriseert zwakke entiteiten. Dit zijn entiteiten die niet op zichzelf kunnen bestaan, maar die voor hun bestaan afhankelijk zijn van het bestaan van andere, identificerende entiteiten. Partiële sleutels : sleutelattributen van het zwakke entiteittype Zwak > dubbele rechthoek Identificerend relatietype > dubbele ruit Partiële sleutel > onderstreepte stippellijn

Relatietypes: Kardinaliteitsrestrictie: max aantal entiteiten op een gegeven tijdstip > 1 of N schrijven naast verbindingslijn Participatierestricitie: bepaalt op op elk tijdstip moet voorkomen Totale participatie < > partiële participatie > dubbele lijn : totale participatie, enkele lijn: partiële participatie Wordt ook gebruik gemaakt van de (min,max) notatie Subtypes, supertypes en overerving: Structurele aspecten: Een subtype is een entiteittype dat een subcollectie van entiteiten karakteriseert. Het entiteittype van de collectie waarbinnen deze subcollectie wordt beschouwd, wordt het supertype genoemd. Erft alle attributen en verwante relatietypes van supertype Kan aparte specifieke attributen en relatietypes hebben In schema : C (deelverzamelingsymbool) Diverse subtypes binnen dezelfde onderverdeling > cirkeltje Het creëren van specifieke subtypes voor een gegeven entiteittype noemen we specialisatie. Het creëren van een algemeen supertype dat de gemeenschappelijke attributen en relatietypes van een aantal gegeven entiteittypes verenigt, noemen we generalisatie. Supertype/subtype netwerk < > supertype/subtype hiërarchie (elk entiteitype heeft maar 1 supertype) Karakteristieken en restricties: Overlappende versus disjuncte subtypes: Verschillende subtypes > aangegeven of entiteit van supertype tegelijkertijd kan voorkomen in meerder subtypes > overlappende (o) Anders disjunct (d) Geconditioneerde subtypes: Om te zien of bepaalde entiteit supertype ook entiteit subtype > bepaalde conditie definiëren bij attribuut van supertype als voldoet aan de vwe > geconditioneerd subtype. Als hetzelfde attribuut > alle subtypes > attribuutgedefinieerde supertype/subtype verwantschap (naam naast verbindingslijn schrijven) Participatierestrictie voor supertype/subtype verwantschappen: Totale participatie (moet een entiteit zijn van minstens 1 subtype) versus partiële participatie Categorieën: Structurele aspecten: Een categorie of een unietype is een speciaal subtype met verschillende supertypes, dat wordt ingevoerd om de entiteiten van deze supertypes te groeperen. Elke entiteit van een categorie > entiteit van precies 1 van de supertype Gevolg > overerving werkt selectief Cirkeltje met een U in en deelverzameling teken op de verbinding Karakteristieken en restricties: Geconditioneerde supertypes: Een entiteit van de categorie behoort tot het supertype waarvoor zijn attribuutwaarde voldoet aan de geassocieerde conditie (naam naast verbindingslijn schrijven)

Participatierestrictie voor categorieën: Idem hierboven 3.3 Het ontwerp van een (E)ER diagram Bijzonder aandachtspunt: de connection trap : Ternair relatietype is niet semantisch equivalent met 3 binaire relatietypes. Wel weergeven met behulp van een zwak entiteitstype Casestudie: database voor een jeugdvereniging Casestudie: reserveringssysteem voor een theater Casestudie: database voor een softwarefirma Elementen/verbindingen in (E)ER schema Entiteittype Rechthoek Attribuut Ovaal Relatietype Ruit Meerwaardige attributen Dubbel ovaal Afgeleide attributen Stippellijn ovaal Sleutel attributen Onderstreept in ovaal Zwak entiteittype Dubbele rechthoek Identificerend relatietype Dubbele ruit Partieel sleutel attribuut Onderstreept stippellijn in ovaal Kardinaliteitsrestrictie 1 of N schrijven naast verbindingslijn Totale participatie Dubbele lijn Partiële participatie Enkele lijn Subtype C (deelverzamelingsymbool) Diverse subtypes in zelfde onderverdeling cirkeltje Overlappende subtypes O in cirkeltje disjuncte subtypes D in cirkeltje Geconditioneerde subtypes,categories naam naast verbindingslijn schrijven Categorie U in cirkeltje en deelverzamelingteken

Hoofdstuk 4 4.1 Structurele aspecten basisrelaties: Geïnspireerd op het wiskundige concept relatie Atomaire datatypes: Bouwstenen van een basisrelatie Een atomair datatype wordt gespecificeerd door een verzameling van toegelaten atomaire waarden (het domein van het datatype) en een verzameling van operatoren die allemaal inwerken op de domeinwaarden en het gedrag van het datatype vastleggen. Atomair > niet verder conceptueel opdeelbaar Typecompatibel > domeinwaarden van het ene datatype kunnen omzetten naar domeinwaarden van het andere datatype Omschrijving van een basisrelatie: Het schema R(A 1 :T 1, A 2 :T 2,,A n :T n ) van een relatie is opgebouwd uit een relatienaam R en een eindige verzameling van attributen {A 1 :T 1,A 2 :T 2,,A n :T n }. Elk attribuut A i :T i, 1<=i<=n is op zijn beurt opgebouwd uit een attribuut i en een geassocieerd atomair datatype T i. Wordt ook wel hoofding of intentie van R genoemd De extentie van een basisrealtie met schema R(A 1 :T 1, A 2 :T 2,,A n :T n ) is een met de tijd variërende verzameling van m (m>=0) n tuples, die allemaal volledig worden gekarakteriseerd door de attributen uit het schema van de relatie. Elk n tuple t i = (A 1 :w i,1, A 2 :w i,2,,a n :w i,n ), 1<=i<=m is op zijn beurt opgebouwd uit n (attribuutnaam:waarde) paren A j :w i,j, 1<=j<=n, waarbij er geldt dat w i,j behoort tot het domein van het atomair datatype T j. Een basisrelatie wordt gevisualiseerd in een tabel. Terminologie: Graad = aantal attributen Datatype van attribuut = attribuuttype n tuples = tuples kardinaliteit = aantal tuples Eigenschappen: Binnen een relatie kunnen geen dubbele tuples voorkomen De tuples van een relatie zijn niet geordend De attributen van een relatie zijn niet geordend Alle attribuutwaarden van een relatie zijn atomair Interpretatie: Metadata: de catalogus: Relationele database > opgebouwd als een verzameling van basisrelaties Metadata = data over de data: gevolg van interactie met een toepassing of gebruiker Gebruikergedefinieerde relaties > aangemaakt door de database ontwerper Systeemgedefinieerde relaties > automatisch aangemaakt door het dbms SG basisrelaties vormen samen de catalogus/ data dictionary Views: Het concept view: Een view is een benoemde, virtuele relatie die is afgeleid van gebruikergedefinieerde en/of systeemgedefinieerde basisrelaties en/of andere views. Wordt ook afgeleide of virtuele relatie genoemd. Definiërende expressie Niet gematerialiseerd want materialiseren > redundante gegevensopslag

Geen redundantie: Enkel genormaliseerde basisrelaties materialiseren Geen afleidbare data opnemen in basisrelaties Het nut van views: Basisrelaties > logische laag Views > externe laag (concretiseren) Ook: Nieuwe data af te leiden Bevragingsinstructies in te korten In individuele gebruikersbehoeften te voorzien Data af te schermen Het werken met views: Doel: door gebruikers niet te onderscheiden van een basisrelatie Zoeken: Geen onderscheid tussen views en basisrelaties Querymodificatie: vraagstelling m.b.t. een view omgezet naar vraagstelling enkel betrekking op basisrelaties (m.b.v. definiërende expressie) Aanpassen, toevoegen en verwijderen: Essentieel: view expliciet als aanpasbaar gedefinieerd Manipulatie niet conflicterend met definiërende expressie Geen manipulaties op afgeleide data with check option > aanpasbaar maken Opletten: tuple verwijderen > tuple in basisrelatie verwijderen (ook niet zichtbare attributen) tuple aanpassen > attr.waarde in basisrelatie ook aangepast tuple toevoegen > tuple in basisrelatie toevoegen (informatie ontbreekt voor niet zichtbare attributen) Indexen: Een index over n attributen van een basisrelatie R kan worden omschreven als een geordende lijst van (n+1) tuples. Voor elk tuple t uit de extentie van R is er één (n+1) tuple opgenomen in de lijst. Dit (n+1) tuple is opgebouwd uit de n beschouwde attribuutwaarden van t en een referentie naar t. De (n+1) tuples zijn geordend op basis van de n attribuutwaarden, volgens een opgegeven volgorde. Referenties kunnen zowel fysieke als logische pointers zijn create index Uniciteitindex > uniciteit af te dwingen van de waarden van een attribuut in de extentie van een relatie Ontbrekende informatie: Onbekende info en niet gedefinieerde info Null waarden: Pseudo beschrijving > ontbrekend Kan opleggen dat iets niet null mag zijn Defaultwaarden: Benadering/model 4.2 Integriteitaspecten Sleutels: Kandidaatsleutels: Als K een deelverzameling is van de verzameling van alle attributen van een gegeven basisrelatie R, dan is K een kandidaat sleutel voor R als en slechts als voldaan is aan: 1. De uniciteiteigenschap: geen enkele legale extentie van R bevat twee tuples met dezelfde waarden voor alle attributen uit K. 2. De irreducibiliteitseigenschap: wanneer uit K attributen worden weggelaten, mag niet meer voldaan zijn aan de uniciteiteigenschap.

Primaire sleutels: Precies 1 gekozen uit de kandidaat sleutels (rest : alternatieve sleutels) Mogen geen null waarden bevatten primary key < > unique Vreemde sleutels: Een vreemde sleutel F van een basisrelatie R 2 is een verzameling van attributen van R 2 waarvoor het volgende geldt: 1. Er bestaat een basisrelatie R 1 (R 1 niet noodzakelijk verschillend van R 2 ) met een kandidaatsleutel K, die evenveel attributen bevat als F en waarbij er een één opééncorrespondentie is tussen de attributen van K en de attributen van F, zodat corresponderende attributen dezelfde geassocieerde datatypes hebben. 2. Op elk tijdstip komt elke reguliere waarde van F in R 2 eveneens voor als waarde van K in een tuple van R 1. foreign key references Cyclische referenties > alter table (want volgorde is belangrijk) Zelfreferentie kan ook! referentiële integriteit! ( alle niet null waarden van vreemde sleutels komen op elk ogenblik voor als waarden van kandidaatsleutels) Integriteitrestricties: Een integriteitrestrictie is een voorwaarde waaraan alle data uit een database op elk moment moeten voldoen. Naam en logische expressie create assertion check drop assertion Toestands en transitierestricties vs. relatie en databaserestrictie Toestand: waakt over correcte toestand Transitie: waakt over de integriteit bij overgang naar een nieuwe toestand Relatie: data uit 1 relatie < > database: verschillende relaties! Referentiële integriteitrestrictie! Stored procedures en triggers: businessregels Stored procedures: Expliciete procedure oproep Create Procedure procedurenaam (parameterlijst (in/out)) Lokale_declaraties Procedure_corpus execute procedure Triggers: triggered action bij een trigger event als voldaan aan trigger condition 1. naam 2. Trigger event 3. Trigger condition 4. Triggered action 4.3 Gedragsaspecten: relationele algebra De operatoren vereniging, doorsnede, verschil e cartesiaans product: (traditionele verzamelingoperatoren) Twee relatieschema s zijn van hetzelfde type als ze evenveel attributen bevatten en er een één op ééncorrespondentie is tussen hun attributen, zodat corresponderende attributen dezelfde geassocieerde datatypes hebben. Als R een relatie is waarin het attribuut A:T voorkomt, dan resulteert de rename operatie R RENAME A as A new in een nieuwe relatie met een schema dat we verkrijgen uit het schema van R door het attribuut A:T te vervangen door het attribuut A new :T en met dezelfde extentie als R.

Vereniging: Als R 1 en R 2 twee relaties zijn met schema s van hetzelfde type, dan is de vereniging, R 1 UNION R 2 van deze relaties een relatie met een schema van hetzelfde type en met een extentie die bestaat uit alle tuples die ofwel voorkomen in R 1, ofwel voorkomen in R 2, ofwel voorkomen in R 1 en R 2. Doorsnede: Als R 1 en R 2 twee relaties zijn met schema s van hetzelfde type, dan is de doorsnede, R 1 INTERSECT R 2 van deze relaties een relatie met een schema van hetzelfde type en met een extentie die bestaat uit alle tuples die zowel voorkomen in R 1 als in R 2. Verschil: Als R 1 en R 2 twee relaties zijn met schema s van hetzelfde type, dan is het verschil, R 1 MINUS R 2 van deze relaties een relatie met een schema van hetzelfde type en met een extentie die bestaat uit alle tuples die wel voorkomen in R 1 en niet in R 2. Cartesiaans Product: Als R 1 en R 2 twee relaties zijn die geen gemeenschappelijke attributen hebben, dan is het cartesiaans product, R 1 TIMES R 2 van deze relaties een nieuwe relatie waarvan de attributen uit het relatieschema worden verkregen door de unie te nemen van de verzameling van de attributen van R 1 en de verzameling van de attributen van R 2. De extentie van de resulterende relatie bestaat uit alle tuples die worden verkregen door een tuple die voorkomt in R 1 samen te voegen met een tuple die voorkomt in R 2. De operatoren selectie, projectie, join en deling: (relationele operatoren) Selectie: Als R een relatie is en e een logische expressie is waarvan alle parameters attributen zijn van R dan resulteert de selectie, R WHERE e in een nieuwe relatie die dezelfde attributen heeft als R en waarvan de extentie bestaat uit alle tuples van R waarvoor de expressie e evalueert naar de waardeheidswaarde waar. Projectie: Als R een relatie is en {A 1 :T 1,A 2 :T 2,,A p :T p } een deelverzameling is van de attributen van R dan resulteert de projectie, R {A 1,A 2, A p } in een nieuwe relatie waarvan het schema verkregen wordt uit het schema van R door alleen de attributen uit {A 1 :T 1,A 2 :T 2,,A p,t p } te behouden en waarbij de extentie bestaat uit alle tuples t=(a 1 :w 1,A 2 :w 2,,A p :w p ) waarvoor een tuple voorkomt in R met attribuutwaarde w 1 voor A 1, w 2 voor A 2, en w p voor A p. Join: 2 verschillende variëteiten Inner join: Als R 1 een relatie is met attributen {X 1 :T X 1,X 2 :T X2,,X m :T Xm, Y 1 :T Y1,Y 2 :T Y2,,Y n :T Yn } en R 2 een relatie is met attributen { Y 1 :T Y1,Y 2 :T Y2,,Y n :T Yn,Z 1 :T Z1,Z 2 :T Z2,,Z p :T Zp } dus beide relaties hebben de attributen Y 1 :T Y1,Y 2 :T Y2,,Y n :T Yn gemeenschappelijk dan resulteert de join, R 1 JOIN R 2 in een nieuwe relatie waarvan het schema bestaat uit de attributen {X 1 :T X 1,X 2 :T X2,,X m :T Xm,Y 1 :T Y1,Y 2 :T Y2,,Y n :T Yn, Z 1 :T Z1,Z 2 :T Z2,,Z p :T Zp } en waarvan de extentie bestaat uit alle tuples die worden verkregen door een tuple van R 1 samen te voegen met een tuple van R 2 onder de voorwaarde dat alle gemeenschappelijke attributen gelijke waarden moeten hebben.

Outer join: Als R 1 een relatie is met attributen {X 1 :T X 1,X 2 :T X2,,X m :T Xm, Y 1 :T Y1,Y 2 :T Y2,,Y n :T Yn } en R 2 een relatie is met attributen { Y 1 :T Y1,Y 2 :T Y2,,Y n :T Yn,Z 1 :T Z1,Z 2 :T Z2,,Z p :T Zp } dan resulteert de (left) outer join, R 1 OUTER JOIN R 2 in een nieuwe relatie die verkregen wordt door het resultaat van de join operatie R 1 JOIN R 2 uit te breiden met alle tuples uit R 1 waarvoor minstens één van de gemeenschappelijke attributen een nullwaarde bevat en daarbij de ontbrekende p attribuutwaarden van R 2 weet te geven met extra null waarden. Deling: Als R 1 een relatie is met attributen {X 1 :T X 1,X 2 :T X2,,X m :T Xm, Y 1 :T Y1,Y 2 :T Y2,,Y n :T Yn } en R 2 een relatie is met attributen {X 1 :T X 1,X 2 :T X2,,X m :T Xm } dan resulteert de deling, R1 DIVIDEBY R2 in een nieuwe relatie waarvan het schema bestaat uit de attributen { Y 1 :T Y1,Y 2 :T Y2,,Y n :T Yn } en de extentie bestaat uit alle tuples t=(y 1 :w Y1,Y 2 :w Y2,,Y n :w Yn ) waarvoor alle mogelijke samenvoegingen met een tuple uit R 2 voorkomen in R 1. Bijkomende operatoren voor de relationele algebra: Uitbreiding: Als R een relatie is, {A 1 :T 1,A 2 :T 2,,A p :T p } een deelverzameling is van de attributen van R en {B 1 :F 1,B 2 :F 2,,B q :F q } een verzameling is van afgeleide attributen B i :F i, i:1,2,,q met B i een unieke attribuutnaam, die niet voorkomt in R en F i een functie is over de attributen van R, die constanten kan bevatten en gebruikt wordt om de waarden van B i te berekenen, dan resulteert de uitbreiding, EXTEND R {A 1,A 2,,A p } (B 1 :F 1,B 2 :F 2,,B q :F q ) in een nieuwe relatie waarvan het schema verkregen wordt door de afgeleide attributen uit {B 1 :F 1,B 2 :F 2,,B q :F q } toe te voegen aan het schema van de projectie R {A 1,A 2,,A p } en waarvan de extentie wordt verkregen door elk tuple van R {A 1,A 2,,A p } uit te breiden met de waarden B i :w i, i=1,2,,q, met w i de waarde die verkregen wordt door F i te evalueren met de attribuutwaarden van het corresponderende tuple uit R. Groepeer: Als R een relatie is en {A 1 :T 1,A 2 :T 2,,A p :T p } een deelverzameling is van de attributen van R dan resulteert de groepering, R GROUP (A 1,A 2,,A p ) in een nieuwe relatie met hetzelfde schema als R, maar waarbij de tuples in de extentie gegroepeerd zijn in disjuncte deelverzamelingen zodat een deelverzameling enkel tuples bevat met een gelijke waarde voor elk van de attributen A 1,A 2,,A p. Aggregatie: Doel = 1 waarde te berekenen uit alle tuples uit de extentie van een relatie. COUNT, MIN, MAX, AVG, SUM In combinatie met de uitbreidingsoperator (eventueel ook groepeeroperator) Het gesloten zijn en nut van de relationele algebra: Elke operator werkt in op 1 of 2 relaties > nieuwe relatie= gesloten zijn

Hoofdstuk 5 5.1 Logisch relationeel databaseontwerp met behulp van een (E)ER diagram Overzicht: Van (E)ER diagram omzetten naar databaseschema > omzettingsalgoritmen Logisch databaseontwerp: forward engineering (reverse engineering bestaat ook) Ook functionele beschrijvingen omzetten naar gedragspecificaties Het omzettingsalgoritme voor relationele databases: Stap 1: Omzetting van reguliere entiteittypes: * relatienaam=naam van entiteittype (ET) * toevoegen enkelvoudige, enkelwaardige en niet afgeleide attributen (v.h. ET) * voor samengestelde attributen: enkel toevoeging van componentattributen * attributen uit sleutel (v.h. ET) vormen primaire sleutel Stap2: Omzetting van zwakke entiteittypes: * relatienaam=naam van zwak entiteittype (ZET) * idem van ZET * idem * vreemde sleutels > attributen van elke primaire sleutel ( van identificerend ET) * toevoegen van enkelv., enkelw., niet afg. atrributen van de IET * primaire sleutel: samenvoeging van attributen v.d. vreemde sleutels + partiele sleutel van ZET Stap 3: Omzetting van specialisaties en generalisaties: (pg.146) Met 1 supertype (enkelvoudige overerving): * verschillende basisrelaties, voor het supertype en de subtypes * verschillende basisrelaties, enkel voor de subtypes * één basisrelatie met één typeattribuut * één basisrelatie met meerdere typeattributen Met verschillende supertypes (meervoudige overerving): * diverse basisrelaties, voor de supertypes en het subtype * één basisrelatie Stap 4: Omzetting van categorieën: De supertypes > verschillende primaire sleutels: * artificieel indentificatorattribuut toevoegen, surrogaatsleutel * primaire sleutel van basisrelatie > vreemde sleutel basisrelaties v alles supertypes De supertypes > dezelfde primaire sleutel: * primaire sleutel toevoegen aan basisrelatie *in basisrelaties van alle supertypes ook gespecificeerd als vreemde sleutel Stap 5: Omzetting van binaire één op één relatietypes: * Samenvoegen van beide basisrelaties * Behoud van beide basisrelaties, geen extra basisrelatie * behoud van beide basisrelaties, met extra basisrelatie Stap 6: Omzetting van binaire één op meerdere relatietypes: *Primaire sleutel van de 1 zijde toevoegen als vreemde sleutel aan de meerdere zijde * Enkelv., enkelw., niet afgeleide attr. toevoegen aan gekozen basisrelatie Stap 7: Omzetting van binaire meerdere op meerdere relatietypes: * nieuwe basisrelatie > relatienaam * primaire sleutels toevoegen als vreemde sleutels in nieuwe basisrelatie * Enkelv., enkelw., niet afgeleide attr. toevoegen aan gekozen basisrelatie * primaire sleutel = samenvoeging attributen van beide vreemde sleutels Stap 8: Omzetting van meerwaardige attributen: * gepaste relatienaam * primaire sleutels basisrelatie > vreemde sleutel nieuwe relatie

* attributen toevoegen aan nieuwe basisrelatie om 1 waarde te kunnen opslaan * primaire sleutel = samenvoeging alle attributen Stap 9: Omzetting van n aire relatietypes waarbij n>2: * gepaste relatienaam * primaire sleutels basisrelatie > vreemde sleutel nieuwe relatie * Enkelv., enkelw., niet afgeleide attr. toevoegen aan gekozen basisrelatie * primaire sleutel = samenvoeging attributen van alle vreemde sleutels Aanmaken van gedragspecificaties: Richtlijnen: Uniciteit van attribuutwaarden van dezelfde basisrelatie > omzetten naar een alternatieve sleutel. Beperking op de tuples > omzetten integriteitrestrictie Uitvoering complexe actie > omzetten stored procedure of trigger Casestudie: database voor een jeugdvereniging Casestudie: reserveringssysteem voor een theater: Casestudie: database voor een softwarefirma: 5.2 Normalisatie Normaalvorm = kwaliteitsnorm voor basisrelaties Normalisatieproces = relatie met lagere NV > opgesplitst in relaties met hogere NV Probleemstelling: Bepaalde data worden overtollig opgeslagen Overtollige data kunnen anomalieën bevatten Gegevens kunnen ongewenst verloren gaan Het normalisatieproces: Een verzameling van attributen Y is functioneel afhankelijk van een verzameling van attributen X als de waarden van de attributen van Y op elk moment uniek worden vastgelegd door de waarden van de attributen van X. Als de attribuutwaarden van X bekend zijn, zijn daardoor ook de attribuutwaarden van Y bekend. X wordt de determinant van de functionele afhankelijkheid genoemd. Een verzameling van attributen Y is irreducibel functioneel afhankelijk van een verzameling van attributen X (genoteerd X > Y) als Y functioneel afhankelijk is van X en er bovendien geldt dat: 1. X en Y disjunct zijn en dus geen gemeenschappelijke attributen hebben. 2. ER geen echte deelverzameling X c X van X bestaat, zodat Y functioneel afhankelijk is van X. Kan voorgesteld worden in een functioneel afhankelijkheidsdiagram Een relatie staat in eerste normaalvorm als de datatypes van al de voorkomende attributen atomair zijn. Een relatie staat in tweede normaalvorm als ze in eerste normaalvorm staat en elk attribuut van de relatie, dat geen deel uitmaakt van een kandidaat sleutel, irreducibel functioneel afhankelijk is van elke kandidaat sleutel van de relatie. Een irreducibele functionele afhankelijkheid X > Z is transitief, als er een verzameling van attributen Y bestaat, die geen kandidaat sleutel of deelverzameling van een kandidaatsleutel is, waarvoor geldt dat X > Y en Y > Z. Een relatie staat in derde normaalvorm als ze in tweede normaalvorm staat en elk attribuut van de relatie, dat geen deel uitmaakt van een kandidaat sleutel, niet transitief irreducibel functioneel afhankelijk is van een kandidaat sleutel van de relatie. Een relatie staat in Boyce Codd normaalvorm als ze in eerste normaalvorm staat en elke determinant een kandidaat sleutel is van de relatie. Een verzameling van attributen Y is meerwaardig functioneel afhankelijk van een verzameling van attributen X ( genoteerd X > > Y) als de waarden van de attributen van X op elk moment een collectie met meerdere waarden voor de attributen van Y vastleggen.

Een relatie staat in vierde normaalvorm als ze in Boyce Codd normaalvorm staat en geen enkele meerwaardige functionele afhankelijkheid bevat, tenzij dit de enige afhankelijkheid is die voorkomt in de relatie. 5.3 Denormalisatie Nadelen van normalisatie proces : door opsplitsen > heel veel relaties extra tijd : opvraging opnieuw samenvoegen, aanpassen, verwijderen, denormalisatie: lagere normaalvorm om betere prestaties te krijgen extra controle tegen inconsistentie van de data

Hoofdstuk 6 6.1 Overzicht Laatste ontwerpfase: fysiek databaseontwerp: databaseschema, sleutels, integriteitrestricties, stored procedures en triggers geïmplementeerd in relationeel dbms. SQL wordt hiervoor gebruikt (SQL scripts, DDL scripts, forward and reverse engeneering, ) 6.2 Enkele voorbeschouwingen over SQL Kerntaal + pakketten Kerntaal : datadefinitietaal (DDL) en datamanipulatietaal (DML) Beschrijvende taal: niet hoe maar wat Kan worden ingebed in een hosttaal (bv:java, C/C++, ) Elke constructeur werkt met eigen dialect BNF notatie: zie figuur 6.3 pg 187 Identificatoren en gereserveerde woorden 6.3 Datadefinitietaal Databases: Aanmaken: CREATE SCHEMA naam [AUTHORIZATION maker] Meestal uitgebreide paramaters Verwijderen: DROP SCHEMA naam [RESTRICT CASCADE] Restrict: enkel leeg wordt verwijderd< > cascade : wordt altijd verwijderd Domeinen: Aanmaken: CREATE DOMAIN naam [AS] datatype [DEFAULT defaultwaarde] [CHECK (logische_expressie)] Datatype: atomair datatyp, check: restrictie, Ook geavanceerde opties Verwijderen en aanpassen: DROP DOMAIN naam [RESTRICT CASCADE] ALTER DOMAIN Relaties: Aanmaken: CREATE TABLE naam ( ({kolomnaam datatype [NOT NULL][UNIQUE] [DEFAULT defaultwaarde][check (logische_expressie)]} [, ]) {PRIMARY KEY (lijst_van_kolomnamen) [,]} ([UNIQUE (lijst_van_kolomnamen)] [, ]) ([FOREIGN KEY (lijst_van_kolomnamen) REFERENCES tabelnaam [ON DELETE actie] [ON UPDATA actie] [, ]) ([CHECK(logische_expressie)] [, ]) Aanpassen: ALTER TABLE naam {ADD [COLUMN] kolomnaam datatype [NOT NULL][UNIQUE] [DEFAULT defaultwaarde][check (logische_expressie)] DROP [COLUMN] kolomnaam [RESTRICT CASCADE] ADD [CONSTRAINT [restrictienaam]] restrictieoptie DROP CONSTRAINT restrictienaam [RESTRICT CASCADE] ALTER [COLUMN] kolomnaam SET DEFAULT defaultoptie ALTER [COLUMN] kolomnaam DROP DEFAULT} Verwijderen: DROP TABLE naam [RESTRICT CASCADE]

Indexen: Aanmaken: CREATE [UNIQUE] INDEX indexnaam ON tabelnaam ((kolomnaam [ASC DESC][, ])) Verwijderen: DROP INDEX indexnaam Views : Aanmaken: CREATE VIEW viewnaam [((nieuwe_kolomnaam [, ]))] AS definiërende_expressie [WITH CHECK OPTION] Verwijderen: DROP VIEW viewnaam [RESTRICT CASCADE] 6.4 Datamanipulatietaal Instructies voor het toevoegen, aanpassen en verwijderen van data: Toevoegen van data: Toevoeging van een tuple waarvan de waarden expliciet worden opgegeven: INSERT INTO naam [(kolomlijst)] VALUES (Lijst_met_attribuutwaarden) Toevoeging van tuples die afkomstig zijn van een andere relatie: INSERT INTO naam [(kolomlijst)] (select_instructie) Toevoeging van data die afkomstig zijn uit een databestand: LOAD FROM bestand [DELIMITER karakter] INSERT INTO naam [(kolomlijst)] Aanpassen van data: UPDATE naam SET ({kolomnaam=expressie}[, ]) [WHERE zoekconditie] Verwijderen van data: DELETE FROM naam [WHERE zoekconditie] Instructies voor het opzoeken van data: SELECT [ALL DISTINCT] {* kolomexpressie [AS nieuwe_naam][, ]} FROM ({naam} [alias][, ]) [WHERE zoekconditie] [{GROUP BY kolomlijst}[having zoekconditie]] [ORDER BY (kolomexpressie [ASC DESC][, ])] FROM WHERE GROUP BY SELECT ORDER BY Tuple bevindt zich in de relatie waarvan de naam gegeven is Tuples moeten voldoen aan voorwaarde Tuples worden gegroepeerd op basis van gelijke waarden voor alle attributen die voorkomen in kolomlijst (HAVING enkele degene die aan de voorwaarde voldoen) Enkel de attributen bijgehouden die gevraagd worden (* = alle attributen) Tuples worden geordend op basis van hun waarden voor alle attributen die voorkomen in kolomlijst Dingen hieronder vrij simpel, niet de moeite om op teschrijven: pg s in boek staan erbij Basisfunctionaliteit: zie pg 200 Gebruik van verschillende relaties: zie pg 202 Aggregatiefuncties: zie pg 203 Groepering: zie pg 204

Werken met geneste queries: zie pg 205 Werken met de operatoren voor unie, intersectie en verschil: 6.5 Verwerking van DML instructies door een databasemanagementsysteem Validatie en omzetting van een DML instructie: DML instructie gescand op fouten Vertaald naar een expressie (opgebouwd uit operatoren van de relationele algebra) zodat efficiënte optimalisatie mogelijk is zie figuur 6.6 en 6.7 pg 208 209 Optimalisatie: Dbms zal proberen relationele expressie om te vormen naar een equivalente expressie die efficiënter werkt. Queryplan puntjes pg 211 6.6 De Query By Example techniek DML instructie wordt opgebouwd door het invullen van grafische templates die de structuur weergeven van de relaties uit de datebase. Zie figuur 6.8 pg 212

Hoofdstuk 7 7.1 Voorbeschouwing Semantisch rijkere gegevensmodellen Object = autonome entiteit Structuur en gedrag vastgelegd in objecttype Basisconcepten van het objectgeoriënteerde programmeerparadigma : Object, objecttype, toestand en gedrag: In elke objectgeoriënteerde aanpak wordt 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, door de softwareontwikkelaars zijn vastgelegd. Inkapseling van operatoren: Slechts de signatuur van een operator wordt zichtbaar gemaakt voor de gebruikers. Het verborgen houden van de methode van de operator wordt inkapseling genoemd. Overerving en typehiërarchieën: Een ander basisconcept is overerving. Objectoriëntatie schrijft voor dat in nieuwe objecttypes een deel van de toestands en gedragsspecificaties van bestaande objecttypes overgenomen kan worden. De toestand en het gedrag van het nieuwe objecttype worden dan bepaald door de combinatie van de overgenomen en de eigen specificaties. Het mechanisme dat vastlegt hoe en onder welke voorwaarden deze combinatie gebeurt, wordt het overervingsmechanisme genoemd. Operatoroverlading en polymorfisme: Bij objectoriëntatie maakt het overervingsmechanisme het doorgaans mogelijk 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 verschillende operatoren (en methodes). Objectgeoriënteerde databasetechnologie : Objectpersistentie: Opnemen database > persistent: worden bewaard in het computergeheugen. Naamgevingsmechanisme: unieke persistente naam Bereikbaarheidsmechanisme: object dat voorkomt in persistent object > ook persist wordt gemaakt. Objectidentiteit: Elk object wordt daarom geïdentificeerd door een unieke objectidentificator (OID) die door het dbms wordt aangemaakt en toegekend. Deze identificator kan niet worden gewijzigd (ook niet door het dbms). Een objectidentificator wordt na verwijdering van het object het liefst niet meer opnieuw gebruikt door het dbms. 7.2 ODMG 3.0 Het objectmodel : Constructie van objecttypes: Objecttypes zijn opgebouwd uit bouwstenen Bouwstenen bestaat uit 1 specificatie en 1 of meerdere implementaties Literaaltypes: Modeleren van structurele kenmerken Basistypes: gehele getallen, reële getallen, boolean,

ODL : OQL : Ook de mogelijkheid tot enumeratietypes Gestructureerde types zijn uit componenten samengesteld: datum, tijd, Collectietypes: datacollecties: set, bag, list, array, Interfaces: Modeleren van gedrag Klassen: Structurele kenmerken en gedragskenmerken worden vastgelegd in klasse Structuur: attributen en relaties Gedrag: operatoren Overerving: Isa overerving: supertype=interface, subtype= klasse of interface Subtype erft alle operatoren van het supertype Extends overerving: zowel super als subtype = klasse Objecten en literalen: Instanties zijn waarden uit het domein Literalen zijn instanties van een literaaltype Objecten zijn instanties van een objecttype Elk object gekenmerkt door een toestand Extensies en sleutels: Extentie is de verzameling van alle persistente objecten van een objecttype Sleutel zijn 1 of meerdere attributen/relaties waarvan de waarden uniek moeten zijn voor elk object in de extentie. Integriteitsrestricties: Geen extra faciliteiten Specificatietaal die het mogelijk maakt om logische databaseschema s te beschrijven die zijn opgebouwd volgens de regels/voorschriften van het ODMG objectmodel. Taalbindingen nodig voor fysiek databaseontwerp Zie vb: figuur 7.2 pg 227 Objectbevragingstaal die enkel wordt gebruikt voor het opzoeken van data. Objectdatabase enkel doorzoeken vanuit programmeercode > beperking ivm SQL Taalbindingen zorgen ervoor dat de resultaten worden voorgesteld met een datastructuur uit de programmeertaal > naadloze integratie Toegangspunten tot de database: Toeganspunt: vereist bv objectnamen (persistente objecten),namen (extenties) Iteratorvariabelen: Als er gewerkt wordt met elementen van een collectie > iteratorvariabele Aggregatieoperatoren: Min, max, sum, avg, count, Werken met geordende collecties: Eerste, laatste of i de element oproepen Groeperen: Iteratorvariabele aangeduid met partition 7.3 SQL 3 Basis relationeel model uitgebreid tot objectrelationeel model Gebruikergedefinieerde datatypes : De type constructor row : Aanmaken van gestructureerde tupletypes CREATE TYPE typenaam AS [ROW] (componentspecificaties) Waarden van de componenten van een tupletype bereikt met dot notatie CREATE TABLE tabelnaam OF typenaam

Mogelijkheid relatie op te bouwen op basis van een tupletype De type constructor array : Aanmaken van collectietypes van het rijtype Type ARRAY[aantal_elementen] Bereiken elementen van een rij met [] notatie Tuple identiteit : Tuple identificator is een unieke referentie naar een tuple Twee mogelijkheden: DERIVED en SYSTEM GENERATED Afgeleid van primaire sleutel of onafhankelijk door het systeem opgebouwd Aangeven bij aanmaken van een tabel: Werkwijze 1: create tabel instructie uitgebreid REF IS identificatornaam {DERIVED SYSTEM GENERATED} Werkwijze 2: extra referentieattribuut Attribuutnaam REF(naam_tupletype)[SCOPE(tabelnaam)] VALUES FOR attribuutnaam ARE {DERIVED SYSTEM GENERATED} Bereiken warden van de attributen van het gerefereerde tuple met > notatie Inkapseling van operatoren : Signatuur van gebruikersgedef. operator toevoegen als component van tupletype METHOD operatornaam (argumentlijst) RETURNS type Moet worden gekoppeld aan implementatiecode Werkwijze 1: vindt plaats in SQL/PSM taal METHOD CREATE FUNCTION operatornaam (parameterlijst) RETURNS type FOR naam_tupletype AS [locale_declaratie] {functie_corpus} Werkwijze 2: vindt plaats in algemene objectgeoriënteerde programmeertaal METHOD CREATE FUNCTION operatornaam (parameterlijst) RETURNS type FOR naam_tupletype AS EXTERNAL NAME padnaam_voor_bestand LANGUAGE naam_taal Standaard ingebouwde functies Constructorfunctie T() Nieuw object o aanmaakt en teruggeeft Observatiefunctie A(o) Waarde van A in o teruggeeft Mutatorfunctie Waarden attribuut aan te passen Overerving : Overerving bij tupletypes: Tupletypes kunnen componenten en operatoren overerven van andere tt s Verschillende supertypes dezelfde component > enkel die eerst in de lijst CREATE TYPE typenaam UNDER (naam_supertype[, ]) AS [ROW] (componentspecificaties) Overerving bij de aanmaak van relaties: Nieuwe relatie erft attributen, operatoren en ook alle tuples CREATE TABLE naam_subtabel UNDER naam_supertabel Multimedia : clob : character large object Weergeven van grote karaktersequenties die samen een tekst vormen blob : binary large object Grote bitsequenties weer te geven

7.4 Logisch databaseontwerp Ontwerp van objectgeoriënteerde databaseschema s : Stap 1: Omzetting van reguliere entiteittypes: *klassenaam : naam entiteittype * maak extentie aan voor klasse * voeg alle attributen toe: samengesteld > gestructureerde datatypes meerwaardig > collectietypes * maak voor sleutelattributen een sleutel aan Stap 2: Omzetting van zwakke entiteittypes: Zelfde manier al reguliere entiteittypes Alternatief: 1 identificerend relatietype > attribuut daarvan M.b.v. set<struct{ }>, list<struct{ }>, Stap 3: Omzetting van binaire relatietypes: Voor één op één relatietypes: * toevoegen als attribuut bij één van de klasses * als relatietype attributen heeft: nieuwe klasse aanmaken (stap 4) anders bij beide een relatie toevoegen (inverse van elkaar) Voor één op meerdere relatietypes: * toevoegen als attribuut(collectietype) bij klasse (kardinaliteit 1) * toevoegen als attribuut bij klasse (kardinaliteit meerdere) * als relatietype attributen heeft: nieuwe klasse aanmaken (stap 4) anders bij beide een relatie toevoegen (inverse van elkaar) Voor meerdere op meerdere relatietypes: *als relatietype attributen heeft: nieuwe klasse aanmaken (stap 4) anders bij beide een relatie toevoegen (inverse van elkaar) Stap 4: Omzetting van n aire relatietypes waarbij n>2: * klassenaam : naam relatietype *betrokken entiteittypes > relatie toegevoegd aan nieuwe klasse in klasse entiteittype eveneens inverse relatie toegevoegd *toevoegen alle attributen Stap 5: Omzetting van categorieën: moeilijkst : verwantschap tussen categorie en haar supertypes modelleren door aan haar corresponderende klasse en klassen die corresponderen met de supertypes relaties toe te voegen. Geen enkele relatie mag gespecificeerd zijn over collectietype Stap 6: Toevoeging van operatoren: Functionele beschrijving omgezet naar gedragspecificaties Uniciteit > sleutels Andere > vertaald naar operatoren Stap 7: Omzetting van specialisaties en generalisaties: *enkelvoudige overerving: naam supertype > extends clausule * meervoudige: alle attributen, relaties en operatoren van supertypes kopiëren naar subtype (ODMG ondersteunt geen meervoudige extends) Objectrelationele mapping : (equivalent paragraaf 5.1.2) *samengestelde attributen: tupletypes *meerwaardige attributen: rijtypes * specialisaties en generalisaties: op basis van tupletypes en overerving bij tupletypes * relatietypes: referentie attributen * gedragsspecificaties: ingekapselde, gebruikersgedefinieerde operatoren

Hoofdstuk 8 8.1 Voorbeschouwing Verschillende technieken om vanuit applicaties toegang te krijgen tot databasesystemen ALTIJD gebruikt gemaakt van API (applicatieprogramma interface) Een API voor databasetoegang zorgt voor de verbinding of interface tussen de applicatie en het dbms. De API wordt door de applicatie gebruikt om instructies door te geven aan het dbms en wordt omgekeerd door het dbms gebruikt om resultaten en status en foutcodes door te geven aan de applicatie. 8.2 Databasetoegang via ingebouwde API s Bij een ingebouwde API worden de instructies voor databasetoegang integraal ingebouwd in de applicatiecode. De uitvoering van de verrijkte applicatiecode bewerkstelligt de interactie met het dbms, dat op zijn beurt verantwoordelijk is voor de correcte afhandeling van de instructies en de feitelijke databasetoegang. Gebruikte programmeertaal : hosttaal Embedded SQL : SQL instructies inbouwen via specifieke taalconstructies Precompiler Nadeel: databasespecifiek Ingebedde SQL instructies: Voorafgegaan door EXEC SQL en beëindigt met ; of END EXEC CONNECT en DISCONNECT Hostvariabelen: Enige variabelen die kunnen voorkomen in embedded SQL BEGIN DECLARE SECTION END DECLARE SECTION Bij gebruik: naam voorafgegaan door : Foutbehandeling: Status en foutcode bv. SQLCODE Cursors: Iteratorconstructie die toelaat om tuples één voor één op te halen en te verwerken DECLARE OPEN FETCH CLOSE Dynamische SQL: Statische SQL vormt soms een te grote beperking DSQL vraag late binding foutcontrole en omzetting instructie gebeurt bij uitvoering SQLJ : Tegenhanger van embedded SQL API databaseonafhankelijk proberen maken 8.3 Databasetoegang via call level API s Bij een call level API geschiedt de databasetoegang via aparte software die zowel communiceert met de applicatie als met het dbms. Binnenkomende functieoproepen van de applicatie worden door de software omgezet naar een intern formaat dat voor uitvoering wordt doorgegeven aan het dbms. Geretourneerde resultaten, status en foutcodes worden door de software omgezet naar een dataformaat dat door de applicatie kan worden gelezen en verwerkt. Situatie van late binding > laat dynamischer werken toe. Nadeel: omzetting moet elke keer opnieuw gebeuren Voordeel: eenvoudiger verschillende databases werken ODBC en JDBC : Open DataBase Connectivity: relationele DB op dbms onafhankelijke manier benaderen vanuit applicaties. Applicatieinterface, driverbeheerder en ODBC drivers Belangrijkste functies: zie pg. 256 257

Java DataBase Connectivity: opvolger van ODBC Operatoren: zie pg. 257 SQL/CLI : Call Level Interface, bouwt verder op ODBC. Handles : environment, connection, statement, descriptionrecords. OLE DB en ADO : Object Linking and Embedding for Databases ontwikkeld om heterogene (e mail, rekenbladen,webpagina s, ) databronnen op een uniforme wijze vanuit een applicatie te kunnen benaderen Wordt gewerkt met COM objecten Moeilijk rechtstreeks oproepen > ActiveX Data Objects Data consumers, data providers en service providers blablabla 8.4 Databasetoegang via webpagina s: ASP, JSP en PHP Dynamische webpagina s. webpagina vernieuwd: gegevens opnieuw uit de databron opgehaald en in de pagina geladen. Web client = data consumer/applicatie Meest bekende : ASP(Active Server Pages) JSP(Java Server Pages) en PHP ASP en JSP > ADO PHP > ODBC 8.5 Databasetoegang via het J2EE en.net framework J2EE gericht op Java > JDBC.NET > OLE DB en ADO = ADO.NET > ODBC.NET

Hoofdstuk 9 9.1 Mogelijke gevaren en vormen van ongeoorloofd gebruik Diefstal, fraude, schending privacy, beschadiging database en sabotage databasesysteem 9.2 Beveiligingsstrategieën Gebruikers: Alles registreren in een auditbestand (toegangscontrole vereist) Ook belangrijk om de volledige bevoegdheid te verdelen over verschillende admin s Flow control (covert channel) via opeenvolging legale handelingen toch ongeoorloofd gebruik. Hardware: Diefstal, beschadiging, componenten uitgeschakeld/bijgeplaatst, Software: Installatie en werkingsvoorschriften goed volgen Beveiligingsfaciliteiten regelmatig onderhouden Toepassingsprogramma s grondig installeren Programmeurs > bewust achterpoortjes open laten (moeilijk te vinden) Data: Afgeschermd door toegangsbeperkingen Alternatief: views Afluisteren > versleuteltechnieken Ook hier auditbestand 9.3 Toegangscontrole en toegangsbeperking Authenticatie is het controleproces om uit te maken of een gebruiker is wie hij of zij beweert te zijn. Aanmaken gebruikersaccount (best standaardpaswoord vervangen) CREATE USER gebruikersnaam IDENTIFIED BY wachtwoord ALTER USER gebruikersnaam IDENTIFIED BY nieuw_wachtwoord DROP USER gebruikersnaam Ook toegangsbeperkingen (zie volgende puntjes) Werken met privileges en gebruikersprofielen : Een instructie waarvoor expliciet toestemming wordt verleend, wordt een privilege genoemd. Vergetelheid > minder erg dan bij bepaalde instructies verbieden i.p.v. privileges Datadefinitie < > datamanipulatie DAC toegangscontrole (Discretionary Access Control) Toekennen van privileges: GRANT {privilegelijst ALL PRIVILEGES} ON {componentnaam [databasenaam.]* *.*} TO {lijst_met_gebruikersnaam PUBLIC} [WITH GRANT OPTION] (mogen zelf mensen ook privileges geven) Mogelijkheden voor de ON clausule Databasecomponent Componentnaam Alle relaties uit de opgegeven database databasenaam.* Alle relaties uit de geactiveerde database * Alle relaties van alle databases *.* Belangrijkste privileges: SELECT, DELETE, INSERT, UPDATE, REFERENCES, CREATE, ALTER, DROP, INDEX, CREATE VIEW, CREATE ROUTINE en CREATE USER Privileges kunnen ook contextafhankelijk zijn (ingebouwde functies: TODAY, DAY,NOW, TERMINAL,