Relationele databanken



Vergelijkbare documenten
Informatie & Databases

Vragen hoofdstuk 1: Resultaat

Databases - Inleiding

Databases en SQL Foundation (DBSQLF.NL)

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

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

SQL datadefinitietaal

Informatie Systeem Ontwikkeling ISO 2R290

EXIN Databases en SQL Foundation

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

[TOETS SQL INLEIDING]

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

1. Databanken. Wat is een databank? Verschillende opslagmethodes

Les S-01: De basisbeginselen van SQL

Query SQL Boekje. Fredrik Hamer

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

Hoofdstuk: 1 Principes van databases

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

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

DB architectuur.

Databases (INFODB) 24 januari 2007

1 Labo 4 H 8 Jobs, Alerts en Operators H 9 Monitoring en Troubleshooting

Geimporteerde gegevens aan een tabel toevoegen

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

de praktijk: tabellen

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica

Databases (INFODB) 20 april 2010

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

SQL SERVER Werking van Database Snapshots

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

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

Normaliseren versie 1.1

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

PROGRAMMA Vak: informatica..

Sparse columns in SQL server 2008

Les 15 : updaten van gegevens in de database (deel2).

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

Tentamen Informatica 6, 2IJ60,

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

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

Les 11 : Basis SQL (deel2).

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

Zelftest DB2 for z/os basiscursus

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

Koppeling met een database

Data Definition Language

Tentamen Databases voor ica

Technische nota AbiFire Rapporten maken via ODBC

Project PiggyBank 2014

Van CaseTalk naar een database in SQLite studio

Tentamen Databases voor iku

Introductie (relationele) databases

SQL: query taal met. woorden. ISO SQL: Structured Query Language. de SQL basis query structuur. voorbeeld: doel: intuitieve query taal

ExpertHandboek Business Intelligence met Power BI in Excel Wim de Groot

Les S-01: De basisbeginselen van SQL

Datamodelleren en databases 2011

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

Databanken Marc De Caluwé,

SQL / Systeemanalyse

1. * Database worden vaak gebruikt in Client-Server architectuur.

DATABANKEN GILLES CALLEBAUT

In deze appendix wordt bekeken wat er moet gebeuren voordat

Snelgids voor het bouwen van een IT- RDBMS in EXCEL.

Structured Query Language

EXAMEN juni 2016 Gegevensbanken

Foutafhandeling in SQL

Data Warehouse Script Generator Doel

Miniles gegevensbanken bevragen met SQL

DATAMODELLERING CRUD MATRIX

U kunt ook gebruik maken van diverse standaard code-groepen voor de diverse tabellen. De te kiezen tabellen zijn afhankelijk van taal en jargon.

SQL & Datamodelleren

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

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

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

2. Basisgegevens invoeren

Leerjaar 1/2 ICT-Academie. Niveau 4. Applicatie ontwikkeling

Een website maken met databasetoegang.

Het installeren en uitvoeren van Centix 3 serie op Windows Vista. Installatie Uitvoeren (gebruiken) Belangrijk:

ISO SQL: Structured Query Language

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

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Proeftentamen ISO (2R290), query-gedeelte, Oktober 2006

Praktijkinstructie Dataverwerking 1 (CSE02.1/CREBO:50236)

Les 10 : Aanmaken van een database (deel2).

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

Gebruikershandleiding

Gebruikers Handleiding

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.

SQL & Relationele datamodellen in interactieve media

Het omzetten van een ER-diagram naar SQL

gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen

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

Informatie verwerking en databases RDBMS en tabellen... 8 SQL SELECT... 8 SQL WHERE SQL INSERT SQL UPDATE SQL DELETE...

EXIN Databases en SQL Foundation

DB architectuur.

Bijlage Inlezen nieuwe tarieven per verzekeraar

B3Partners. Beheerhandleiding Datastorelinker 4.2. Gewijzigd: 28 maart B3Partners BV Bedrijvenpark Lage Weide Zonnebaan 12c 3542 EC Utrecht

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at

1 Download de database 'bieren.mdb' en bewaar het bestand in c:\werkmap van je computer.

6. Het maken van een database

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010

Transcriptie:

Relationele databanken De meeste databanken zijn relationeel. Gegevens in tabellen. Relationele model stoelt op de verzamelingenleer (leer der relaties). Relatie betekent hier tabel. Grote kracht van deze databases is SQL.

Verzamelingen Ongeordende serie gelijksoortige elementen. Wiskundige bewerkingen: unie, intersectie (of doorsnede) en verschil: bewerkingen op elementen van hetzelfde type product A = {1,2,3} B = {1,4,5} A υ B = {1,2,3,4,5} = B υ A A B = {1} = B A A B = {2,3} B A = {4,5} A x B = {(1,1),(1,4),(1,5),(2,1),(2,4),(2,5),(3,1),(3,4),(3,5)} Venn-diagram.

Product Product kan dus ook met elementen van een verschillend type. A = {1,2,3} C = {x,y} A x C = {(1,x),(1,y),(2,x),(2,y),(3,x),(3,y)} Product is van een nieuw type. Ook cartesisch product genoemd.

Relaties Een relatie is een deelverzameling van het product van een aantal verzamelingen. A = {1,2,3} C = {x,y} A x C = {(1,x),(1,y),(2,x),(2,y),(3,x),(3,y)} {(2,x),(2,y),(3,y)} is een relatie Verband met tabel. nummer = {1,2,3} naam = {Jan,Mieke,Frank} geslacht = {M,V} product = {(1,Jan,M),(2,Jan,M),(3,Jan,M),(1,Jan,V),(2,Jan,V),(3,Jan,V), (1,Mieke,M),(2,Mieke,M),(3,Mieke,M),(1,Mieke,V),(2,Mieke,V),(3,Mieke,V), (1,Frank,M),(2,Frank,M),(3,Frank,M),(1,Frank,V),(2,Frank,V),(3,Frank,V)} student = {(1,Jan,M),(2,Mieke,V),(3,Frank,M)}

Tuples Tuple is een element van een verzameling, wat overeenkomt met een rij in een tabel. student = {(1,Jan,M),(2,Mieke,V),(3,Frank,M)} (1,Jan,M) = tuple 1 (2,Mieke,V) = tuple 2 (3,Frank,M) = tuple 3 nummer naam geslacht 1 Jan M 2 Mieke V 3 Frank M

Relationele bewerkingen Relaties zijn verzamelingen: unie, intersectie, verschil en product zijn toepasbaar. Specifieke bewerkingen: selectie, projectie, join. Selectie selecteert bepaalde tuples uit relatie. Projectie selecteert bepaalde attributen. Join is koppeling op grond van de waarden van gemeenschappelijke attributen = één van de grote troeven van relationele databanken.

Talen voor relationele bewerkingen Vanaf jaren 70 ontwikkeld. Gebaseerd op de relationele algebra. Bijvoorbeeld een projectie van de relatie 'persoon' op attribuut 'naam' gecombineerd met een selectie van alleen de mannelijke personen werd geschreven als: project (select geslacht = 'M' from persoon) over naam In de loop der jaren talen uit relationele logica (waaronder SQL). Gemakkelijker te begrijpen. Standaardvorm = doelgroep gevolgd door voorwaarden = predikaten. select <doelgroep> where <voorwaarden> select naam from persoon where geslacht='m'

Relationele bewerkingen in SQL SQL is gebaseerd op relationele logica. Veel versies van SQL. Eén standaard met per leverancier beperkingen en uitbreidingen. Laatste is standaard SQL:2008. Laatste grote uitbreidingen SQL:1999 (SQL3) en SQL:2003. In wat volgt hebben we het enkel over de opvragingsopdrachten in SQL (waarvoor de geziene bewerkingen worden gebruikt).

Unie, intersectie en verschil SQL opdrachten union, intersect en minus. Unie: geef de namen van alle personen met nummer 1 en/of het nummer 3. select naam from persoon where nummer=1 union select naam from persoon where nummer=3 Intersectie: geef de namen van de personen met de naam Jan én van het geslacht M select naam from persoon where naam='jan' intersect select naam from persoon where geslacht='m' Minus: geef de namen van alle mannelijke personen die niet de naam Jan hebben select naam from persoon where geslacht='m' minus select naam from persoon where naam='jan'

Selectie en projectie Selectie = rijen uit een tabel. Bvb. geef de namen van alle mannelijke personen. select naam from persoon where geslacht='m' Projectie = kolommen uit een tabel. Bvb. geef naam en nummer van alle personen select naam, nummer from persoon

Product en join Product van 2 tabellen is meestal zinloos. Join (natural, equal) is de zinnige variant. select naam, nummer, geslacht, kot, persoon, van, tot from persoon, verblijf select naam, nummer, geslacht, kot, persoon, van, tot from persoon join verblijf on persoon.nummer=verblijf.persoon (joinvoorwaarde) nummer naam geslacht 1 Jan M 2 Mieke V 3 Frank M kot persoon van tot 1 1 01/10/05 2 2 01/10/04 30/06/05 3 3 01/10/04 30/06/05 4 2 01/10/05 5 3 01/10/05

Andere bewerkingen In select opdracht zijn op de meeste plaatsen ook de bekende rekenkundige bewerkingen mogelijk (+ - * / ^ sqr...) alsook bewerkingen op letterreeksen (trim, upper, lower,...). Afhankelijk van het dialect. Edgar Codd is geestelijke vader van relationele model. Formuleerde aantal eisen waaraan relationeel model moest voldoen. SQL is dé wereldstandaard. Grondige kennis hiervan is onontbeerlijk.

Andere eisen DBMS is meer dan alleen maar relationeel. Grijpt in op alle niveaus. Voor elke opdracht wordt vertaald van gebruikersniveau via conceptueel niveau naar opslagniveau en omgekeerd. 1. De gebruiker typt de opdracht in. 2. Het gebruikersprogramma geeft de opdracht door aan de vraagtaal. 3. De vraagtaal vangt de opdracht op en interpreteert hem. 4. Is de opdracht syntactisch correct, dan vergelijkt het DBMS hem met het externe schema van de gebruiker. Hierbij is 'schema' databasejargon voor 'model'. 5. Levert 4 geen fouten op, dan vertaalt het DMBS de opdracht naar het conceptuele schema. 6. Het DBMS vergelijkt de opdracht met het conceptuele schema. 7. Indien er geen fout optreedt, vertaalt het DBMS de opdracht naar het interne schema. 8. Het DBMS voert de opdracht uit op de fysieke database. Hier vinden dus lees- of schrijfopdrachten op fysieke gegevensbestanden plaats. 9. Het DBMS vertaalt het resultaat van de opdracht naar een conceptueel en daarna naar een extern schema en geeft het door aan het programma dat de opdracht gaf. Dit programma zorgt voor een geschikte weergave van het resultaat aan de gebruiker. Resultaat is of melding of foutcode.

Performance Performance benchmarks = verzameling opdrachten. DBMS probeert performance te optimaliseren mbv query optimiser. Aan de hand van vuistregels een opdracht naar interne schema vertalen dat zo snel mogelijk is. De query optimiser zal soms foutief kiezen. In de grote databases zijn er daar mogelijkheden voor.

Transacties Is een logisch geheel van bewerkingen. Daarom moeten de bewerkingen bij elkaar gehouden worden. Meestal worden de bewerkingen eerst op een kopij uitgevoerd en pas op de echte data na afronding van de ganse transactie. Extra commando's commit en rollback.

Transacties voorbeeld Begintoestand twee rekeningen rekening saldo A 110 B 30 Er wordt 20 Euro overgeboekt van rekening A naar rekening B Er wordt daartoe eerst, na controle, 20 Euro gehaald van rekening A rekening saldo A 90 B 30 Tenslotte wordt de 20 Euro op rekening B bijgeboekt rekening saldo A 90 B 50

Transacties en geldigheidsregels Wijzigingen in een transactie kunnen integriteit verstoren. Controle integriteit na elke bewerking = onmiddellijke integriteitscontrole. Integriteitscontrole achteraf. Mogelijkheden afhankelijk van DBMS. Heeft ook met performantie te maken.

Gelijktijdigheid = concurrency Wanneer # toepassingen hetzelfde bestand benaderen op hetzelfde moment. Is één van de cruciale punten die grote databases onderscheidt van kleinere. Zware taak om integriteit te bewaren.

Concurrency voorbeeld Begintoestand drie rekeningen rekening saldo A 110 B 30 C 80 Er wordt 20 Euro overgeboekt van rekening A naar rekening B Er wordt tegelijkertijd 40 Euro overgeboekt van C naar A De gewenste eindtoestand is dus rekening saldo A 130 B 50 C 40 Hoe kan dat in zijn werk gaan?

Concurrency voorbeeld (vervolg) Toepassing X Toepassing Y Tijdstip 0 Lees saldo C = 80 Tijdstip 1 Boek 40 af van saldo C = 40 Tijdstip 2 Lees saldo A = 110 Tijdstip 3 Lees saldo A = 110 Tijdstip 4 Boek 40 bij op saldo A = 150 Tijdstip 5 Boek 20 af van saldo A = 90 Tijdstip 6 Lees saldo B = 30 Tijdstip 7 Boek 20 bij op saldo B = 50 De eindtoestand is dan: rekening saldo A 90 B 50 C 40

Hoe concurrency oplossen? Gebruikelijk = locking. Zodra een bewerking begint op een tabel wordt die vergrendeld. Anderen moeten wachten. Nadeel = performantie. Daarom locking op verschillende niveaus mogelijk (tabel, record of zelfs attribuut). Enkel opvragen toepassingen geen probleem. Deadlock. Zie voorbeeld.

Deadlock voorbeeld Toepassing X Toepassing Y Tijdstip 0 Open bestand 1: succes Tijdstip 1 Bestand 1 gelocked Open bestand 2: gelocked Tijdstip 2 Open bestand 2: lukt niet Wacht tot Y het vrijgeeft Lees saldo A = 110 Tijdstip 3 Open bestand 1: lukt niet Wacht tot X het vrijgeeft

Beveiliging Bescherming tegen opzettelijk misbruik. Mogelijkheden: 1. Niet beveiligen. De database is door iedereen publiekelijk te benaderen, bijvoorbeeld via het internet of andere elektronische netwerken. 2. Niet beveiligen, maar toegankelijkheid beperken doordat de database op een stand-alone computersysteem draait. 3. Beveiligen doordat de gebruiker iets moet onthouden, meestal een wachtwoord. Er moet ingelogd worden. 4. Beveiligen doordat de gebruiker iets moet bezitten, zoals een diskette, een pasje met code of gewoon een sleutel van een ruimte. 5. Beveiligen door de gegevens versleuteld op te slaan: encryptie ('geheimschrift'). Om de gegevens te kunnen lezen moet men de sleutel kennen die de gegevens ontcijferd. 6. Beveiligen door een combinatie van bovenstaande methodes toe te passen. Paswoorden: beperkingen. Encryptie steeds belangrijker.

Recovery Herstel van gegevens na rampen. Bvb. stroomstoring, brand, hardware uitval,... Er is dus feitelijk gegevensverlies. DBMS zelf slechts tot beperkte hoogte in staat zich daartegen te beveiligen. Slechts één oplossing: kopies op verschillende plaatsen (backups).

Data-dictionary: metagegevens Metagegevens = gegevens over gegevens. Opgeslagen in data-dictionary. Kwaliteit data-dictionary is een belangrijk onderscheid tussen databanken. Metagegevens over gebruikers, het gegevensmodel en de opslagstructuur. Gegevensmodel meest centraal. Goede pakketten: geïntegreerde data-dictionary.

Metagegevens kolommen de naam van de kolom; de tabel waarin de kolom voorkomt; het datatype, ofwel de domeindefinitie (liefst zo precies mogelijk, dus bijvoorbeeld niet "een letter" of "character (1)", maar {'M','m','V','d'}; andere geldigheidsregels, bijvoorbeeld of de kolom deel uitmaakt van een kandidaatsleutel, identificerende sleutel of foreign key; een toelichting op de betekenis, in de vorm van een korte tekst; een overzicht van de zichtbaarheid: welke toepassingen of databasegebruikers mogen de kolom lezen, welke wijzigen?

Metagegevens tabel de gebruiker die de tabel heeft gecreëerd; een overzicht van het geheugengebruik van de tabel. Andere metagegevens een overzicht van gebruikers van de database; een overzicht van views voor elke gebruiker, met vermelding van de SQL-opdracht waarop de view is gebaseerd; een lijst van de tabellen en kolommen die toegankelijk zijn voor elke gebruiker; een lijst met privileges per gebruiker (bvb 'mag uitsluitend opvragen en niets wijzigen', 'mag wel gewone tabellen wijzigen maar geen data-dictionary-gegevens', 'mag alles',...) een overzicht van toepassingsprogramma's op de database; overzicht van opslagstructuur in het achtergrondgeheugen waarin staat welke delen van de schijf bezet zijn door welke tabellen, door welke gebruikers, en dergelijke.

Metadata in uitgebreidere zin Soms ook: allerlei gegevens over herkomst, aard en kwaliteit van gegevens. Als volgt in te delen: Identificatie: Wie is de maker van de dataset? Wie is de contactpersoon? Met welk doel zijn de gegevens verzameld? Welke tijdsperiode bestrijken ze? Waar zijn ze te vinden? Welke naam dragen ze? In welke vorm zijn ze beschikbaar? Gegevenskwaliteit: Voor welke doelen zijn de gegevens bruikbaar? Hoe precies zijn ze? Hoe betrouwbaar? Uit welke bronnen zijn ze verkregen? Wat is de geldigheidsduur? Gegevenstype: Dit betreft de domeinen waaruit de gegevens putten. Men kan dit specialiseren afhankelijk van de discipline waartoe de gegevens behoren. Gegevensmodel: Dit is - zoals we weten - de structuur van de gegevens in termen van entiteittypen, attributen en verbanden. Distributie: Hoe en waar en onder welke voorwaarden zijn de gegevens te verkrijgen? Zijn de gegevens gepubliceerd? Zo ja, onder welke naam? Metadata referentie-info: De metadata kennen hun meta-metadata: wie heeft de metadata opgesteld en wanneer zijn ze bijgewerkt?

Metadefinitie en datamanipulatie Behandelen gewone gegevens = datamanipulatie. Behandelen metagegevens = datadefinitie. SQL verenigt beide in één taal. Om redenen van eenvoud heeft SQL er aparte commando's voor zoals create. Opdracht Gewone gegevens Metagegevens Opvragen select select Toevoegen insert create grant Wijzigen update alter Verwijderen delete drop

Oefening 1 Is het mogelijk een tabel met zichzelf te joinen? Zou het zin kunnen hebben?

Oefening 2 Als een aantal transacties tegelijk dezelfde tabel bevragen maar niet wijzigen, is er geen lock nodig. Indien één van deze transacties ook wijzigingen aanbrengt, is er dan wel een lock nodig op de tabel? Waarom?

Oefening 3 Leg uit waarom redundantie voor een DBMS noodzakelijk is voor recovery. Is het eenzelfde soort redundantie als de redundantie waar we in hoofdstuk 4 van spraken? Wat is het verschil?