Lemahieu_Hoofdstuk_5_(2012-13)

advertisement
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
Download