Grondslagen v/d beleidsinformatica Hoofdstuk 5: Persistentie en relationele database 5.1 OVERZICHT Kijk op relationele database om gegevens persistent op te slaan --> gebeurd via relationele tabellen Tabellen worden gedefinieerd en hebben verbanden Werkt met query-taal SQL en werkt onder meer op de webbrowsers Onder meer mogelijk via Microsoft Access 5.2 WAT WILLEN WE MET DIT HOOFDSTUK BEREIKEN 5.3 INHOUD ZIE OVERZICHT PAGINA 77 5.4 GEGEVENSPERSISTENTIE EN DATABASES 5.4.1 Bestanden versus databases Applicaties gebruiken gegevens --> na het afsluiten v/d applicatie wensen we de gegevens te behouden Men schrijft van een vluchtig geheugen naar een duurzaam opslagmedium (meestal harde schijf) Gegevens zijn transient wanneer ze op een vluchtig geheugen staan Gegevens zijn persistent wanneer ze op een duurzaam geheugen staan Men kan gegevens via gewone bestanden op een persistent geheugen plaatsen Men kan gegevens via XML-bestanden op een persistent geheugen plaatsen Men kan gegevens via relationele databases op een persistent geheugen plaatsen Hier gebruikt men: - Tabellen: voor het bijhouden van gemeenschappelijke persistente gegevens - Kolommen: voor het toevoegen van attributen aan persistente informatie-entiteiten - Rijen: voor het voorstellen v/d entiteiten zelf - Cel: bevat waarde v/e bepaald attribuut voor een bepaalde entiteit Via relationele databases kan men gegevensredundantie bestrijden Redundantie: het stockeren van dezelfde gegevens in verschillende bestanden --> moet men voorkomen, want er zijn risico’s: - Meer opslagcapaciteit - Aanpassen in ene bestand zorgt niet voor aanpassen in andere bestand Voorbeeld: boekhoudbestand en verkoopsbestand --> bij annulering order uit verkoopsbestand, mag deze ook niet geboekt worden Via een databasegerichte benadering houdt men alle gegevens één keer bij Men bewaart ook de verbanden via RDBMS (Relationeel DataBase Management System) --> laat toe om gegevens gecombineerd op te vragen 1 Jeroen De Koninck – HIRB – 2012-2013 Men bewaakt op deze manier de integriteitsregels (bewaren v/d logische structuur v/d gegevens) --> bestanden worden onder gebracht in één logische structuur en niet allemaal los Een databasegerichte benadering laat een uniforme en consistente benadering via databasesysteem toe 5.4.2 Informatie zoeken in (on-)gestructureerde gegevens Voor ongestructureerde gegevens werkt men met eigen zoekcriteria Men zoekt hier over heel het document en niet over bepaalde secties Men noemt dit full text search --> het resultaat zal ook een volledig document zijn en geen concrete velden Applicaties zoals Google, Bing, Altavista e.a voeren zo’n zoekopdrachten uit in HTML-bestanden De web search engine bevat een index, wanneer een index entry voorkomt zal men dit weergeven --> weergave via lijst met url’s Om geselecteerd te worden moet de pagina de zoektermen bevatten --> vaak worden de resultaten geordend volgens gewicht (aantal keer voorkomen v/d term) Deze zoekmethode heeft beperkingen - Men krijgt enkel hele documenten - Men krijgt alle resultaten met de termen Daarom gaat men zoeken in gestructureerde gegevens --> men maakt gebruik van metadata om de resultaten te verfijnen Men kan de metadata gebruiken voor de velden van de zoekcriteria en deze vergelijken met het gehele document Men kan ook op velden zoeken door deze te selecteren Deze methode noemt men structured Search of Query Gestructureerde gegevens kan men opslaan door meerdere zaken zoals XML en relationele databases Men formuleert zoekopdrachten over XML-documenten via XQuery Voorbeeld: $b Men heeft nood aan een query-taal om de zoekcriteria en resultaten te formuleren (niet nodig bij full text searches) SQL: standaard query-taal voor relationele databases 2 Jeroen De Koninck – HIRB – 2012-2013 5.5 RELATIONELE DATABASEMANAGEMENTSYSTEMEN (RDBMS) 5.5.1 De geschiedenis van databasesystemen Databasesystemen slagen gegevens op een fysiek niveau op in databases --> niveau van enen en nullen op de harde schijf Daarboven bieden ze ook een logisch gegevensmodel aan (onafhankelijk v/d fysieke organisatie v/d bestanden) Hierdoor krijg je een tussenlaag tussen fysieke gegevensopslag en applicaties --> Applicaties krijgen enkel logisch gegevensmodel te zien (afgeschermd van bestandsstructuur) Hierdoor is fysieke reorganisatie mogelijk (verplaatsing naar snellere schijf zonder) --> dit zonder een logisch model te wijzigen Men noemt dit fysieke gegevensonafhankelijkhied --> softwareapplicaties worden afgeschermd van fysieke gegevensstructuren (positief voor onderhoudbaarheid v/d applicaties) Vroeger werkten men met hiërarchie --> parent met meerdere children Voornamelijk bij het hiërarchische databasesysteem IMS (Information Management System) Daarna ging men werken met netwerk databasesystemen zoals IDMS --> Integrated Data Management Systems --> werking via een netwerk aan elkaar gerelateerde gegevenselementen Dit liet complexere verbanden toe dan hiërarchieën In de jaren ’80 kwam ook de relationele databasesystemen opgang --> werking met tabellen, rijen, kolommen en cellen Er werden implementaties voorzien zoals: Oracle, IBM DB2, Informix, Microsoft SQLServer, MySQL, Sybase, Microsoft Access, ... Ook een nieuwere versie met objectgeoriënteerde databasesystemen kwam op de markt --> niet zo succesvol Worden wel toegevoegd aan de relationele databasesystemen Men is databasesystemen gaan classificeren volgens criteria: - Gegevensmodel - Aantal gebruikers (single user versus multi-user) - Toepassingsdomein - Operationele database: database ter ondersteuning van operationele processen - Datawarehouse: database ter ondersteuning van tactische en strategische besluitvorming Het databasesysteem bestaat uit het: - database: de gegevensverzameling - databasemanagementsysteem: de software die instaat voor het beheer en manipulatie Men beheert de relationele databases via RDBMS 3 Jeroen De Koninck – HIRB – 2012-2013 5.5.2 Het relationele model 5.5.2.1 Definitie van tabellen RMDBS staat voor het beheer van gestructureerde gegevens die voldoen aan het rationele model Rationele model: tabellen, rijen, kolommen, cellen Tabel: verzameling gelijksoortige entiteiten uit werkelijkheid Voorbeeld: tabel “Book” Rij (tupel): één welbepaalde entiteit Voorbeeld: rij “My life and Times” Kolom (attribuut): een kenmerk die de entiteit beschrijft Voorbeeld: titel, auteur, datum, ... Cel: welbepaalde eigenschap voor de entiteit (waarde v/h attribuut) Voorbeeld: bij auteur “Paul McCartner” en datum “1998” Rationele model is naast XML ook een manier om gestructureerde gegevens voor te stellen Rationele schema: de definitie van een tabel of verzameling tabellen --> bepaald de logische gegevens structuur Wordt ook logisch databaseschema of logisch datamodel genoemd --> wordt door databasesysteem automatisch en transparant vertaald naar fysieke bestandsstructuren Eindgebruikers/applicaties krijgen enkel deze logische tabelstructuren te zien ! Niet de onderliggende fysieke structuren In een Access-database kan je de database-objecten zien (tables, queries, forms,...) --> men kan nieuwe tabellen aanmaken Voor elke tabel kan men kolommen aanmaken en hun bijhorende datatype voor de cellen Elke tabel heeft een primary key, een kolom --> deze moet voor elke rij een andere waarde hebben Vervolgens kan men gegevens toevoegen De structuur komt overeen met de design view Men kan wisselen tussen design view (de tabeldefinitie) en datasheet view (de gegevens v/d tabel) 5.5.2.2 Definitie van verbanden tussen tabellen Er is een verschil tussen databasegerichte benadering en bestandengerichte benadering Bij databasegerichte benadering worden niet alleen gegevens opgeslagen --> er worden ook verbanden tussen de gegeven gestockeerd (consistent) De gegevens worden bijgevolg aan elkaar gelinkt Deze verbanden worden gelegd door een vreemde sleutel --> ! de waarden van de vreemde sleutel moeten overeenkomen met die van de primaire sleutel 4 Jeroen De Koninck – HIRB – 2012-2013 In Access worden de sleutels gedefinieerd door het Relationships-symbool in de Database Tools Men kan hierdoor attributen slepen naar andere tabellen Door vreemde sleutels kan men informatie uit verschillende tabellen combineren Men maakt gebruik van een JOIN-constructie in SQL 5.5.2.3 Bewaking v/d integriteit v/d gegevens Vreemde sleutels hebben rol bij automatische integriteitbewaking v/d opgeslagen gegevens --> bij wijziging gaat men na of de wijziging v/d gegevens conform zijn met de definities in het databaseschema Zelfde functie als het XML-schema voor XML-bestanden Integriteitsbewaking doet controle of de datatypes v/d eigenlijke gegevens overeenkomen met degene vastgelegd Voorbeeld: het woord “ja” invullen bij een datum, zal een fout geven Integriteitsbewaking gaat na of de primaire sleutel wordt gerespecteerd Voorbeeld: bij het toevoegen v/e nieuwe primaire sleutel gelijk aan een oude rij, zal een fout geven ! Primaire sleutels moeten uniek zijn (elke rij moet men kunnen identificeren) Integriteitsbewaking bewaakt de referentiële integriteit --> wordt afgedwongen indien de optie Enforce Referential Integrity is aangeduid Voorbeeld: waarde v/e vreemde sleutel komt niet overeen met bestaande waarde v/d primaire sleutel waarnaar gerefereerd wordt 5.5.3 SQL Gestructureerde gegevens laten verfijnder zoeken toe --> men moet een taal hebben om zoekopdrachten te formuleren SQL (Structured Query Language) is de standaardtaal hiervoor in relationele databases SQL wordt praktisch in alle grote relationele databaseproducten ondersteund (zelfde manier) SQL bestaat uit twee delen - SQL DDL: SQL Data Definition Language --> bevat taalconstructies om gegevensstructuren v/e database te definiëren (het databaseschema) - SQL DML: SQL Data Manipulation Language --> bevat taalconstructies om gegevens op te halen en te wijzign SQL query-taal: taal om gegevens op te halen (SELECT constructie van SQL DML) Relationele databasesystemen met SQL beschikken over - Declaratieve query-taal - Niet-navigationele query-taal Door middel van selectiecriteria kan men aangeven wat men wenst op te healen 5 Jeroen De Koninck – HIRB – 2012-2013 Het is niet nodig om steeds op te geven hoe het databasesysteem moet zoeken --> databasesysteem interpreteert zelf de zoekopdracht en kiest een strategie Voorbeeld: SELECT-QUERY SELECT attributes FROM tables names WHERE selection criteria ORDER BY ordering criteria welke eigenschappen bekijken v/d geselecteerde geg. welke tabellen hiervoor gebruiken criteria waar de gegevens moeten aan voldoen hoe het resultaat ordenen Men kan in Access een Query-design selecteren om te zoeken Men kan gegevens combineren via de JOIN-constructie --> via een join-query kan men gegevens in meerdere tabellen opvragen Men vergelijk de vreemde sleutel met de primaire sleutel v/d andere tabel ! WHERE gedeelte moet men steeds invullen, anders gaat men willekeurig combineren Dubbele join: drie tabellen combineren --> hier werkt men met twee JOIN-condities opgegeven in het WHERE-gedelte Men kan ook gebruik maken van een parameter --> men vult hier parameters in tijdens de uitvoering v/d query Er zijn ook andere query’s die bv. werken met een visuele voorstelling v/d opdracht --> QBE (Query-By-Example) Access maakt steeds beide aan 5.6 DATABASEGEGEVENS EN HET WORLD WIDE WEB 5.6.1 Inleiding We maakten steeds zaken in Access om deze uit te voeren via datasheet view --> men kan ook databasegegevens op het web publiceren Ze kunnen dan van op afstand worden opgehaald via je webbrowser Men kan dit door: - Het database exporteren naar statische pagina (HTML/XML) - Live brengen zonder tussenliggende pagina’s 5.6.2 Databasegegevens aanspreken via statische webpagina’s Databasesystemen hebben vaak een export-faciliteit --> Via Access kan je bestanden exporteren als HTML-document Men maakt hier een kopie v/d gegevens uit de tabel Hierdoor kan men in de browser de gegevens zien als statische HTML ! Er is een uitvoerbare code of synchronisatie met het database Wijzigingen zullen zo niet weergegeven worden in het HTML-bestand Dit gaat ook via SQL-query 6 Jeroen De Koninck – HIRB – 2012-2013 Men kan ook exporteren op dezelfde manier naar XML-bestanden --> men moet data en schema of the data anvinken Hierbij zet men gestructureerde gegevens (tabel) om naar gestructureerde gegevens (XML) 5.6.3 Databasegegevens aanspreken via dynamische webpagina’s Men kan de gegevens ook weergeven via een dynamische pagina --> deze zullen “live” zijn Dit kan via server applicaties zoals CGI of een server script Voor Access gebruikt men meestal ASP (Active Server Pages) Hier gaat men uitvoerbare code inbedden in een HTML-pagina --> vormt een combinatie van statische HTML en uitbare ASP code De ASP code zal de gegevens up-to-date houden en werken voor de HTML-weergave Hetzelfde geldt voor SQL query’s 7 Jeroen De Koninck – HIRB – 2012-2013