PARTNERGEMEENTE (naaml, naam2,
(PARTNERGEMEENTE.naaml gl.naam) And
worden gespecificeerd. Vervolgens wordt ingegaan op
die delen van de taal, die te maken hebben met grafische
weergave van ruimtelijke gegevens; hier wordt de Graphi
cal Presentation Language (GPL) beschreven. De syntax
en semantiek van kenmerkende delen van beide uit
breidingen worden nader verklaard. Tenslotte wordt inge
gaan op belangrijke aspecten van de interactie tussen de
gebruiker en de vraagtaal.
Schets van het relationele gegevensmodel en
SQL
De taal om de inhoud van een gegevensbank te beschrij
ven en er vragen over te stellen, noemen we een ge
gevensmodel (Engels: data model). In dit artikel beper
ken we ons tot het relationele gegevensmodel. In een
relationele gegevensbank worden objecten van een
zelfde soort gegroepeerd in verzamelingen die relaties
worden genoemd. Elk object op zich wordt beschreven
met een aantal kenmerken van een bepaald type. Ken
merken worden aangeduid met de term attribuut. Zo kan
de relatie (lees: verzameling) van gemeenten worden
weergegeven met de volgende beschrijving:
GEMEENTE (naam, inwonertal, oppervlakte)
Deze relatie heet GEMEENTE en bezit drie attributen,
waarvan inwonertal en oppervlakte door integers en
naam door een karakterstring worden gerepresenteerd.
Binnen de relatie GEMEENTE is het attribuut naam een
sleutel (Engels: key), hetgeen wil zeggen dat een naam
uniek is in de gehele relatie. Voorlopig bevat de relatie
GEMEENTE gegevens van maar drie gemeenten. In
tabelvorm ziet de fictieve inhoud van GEMEENTE er uit
als:
Ook verbanden tussen objecten worden weergegeven in
relaties. Deze verbanden worden gelegd, doordat de
sleutel van een relatie wordt opgenomen in een andere
relatie. Zo zal naast een relatie GEMEENTE een relatie
PARTNERGEMEENTE kunnen bestaan met de vol
gende beschrijving:
datum_verband)
In deze relatie verwijst elke naam naar de gegevens van
een gemeente in de relatie GEMEENTE. Met deze relatie
wordt nu het partnerverband gemodelleerd, dat door twee
gemeenten op een bepaalde datum is aangegaan. Een
voorbeeldtabel met daarin fictieve gegevens over part
nergemeenten is:
SQL is één van de vele implementaties van het relatio
nele gegevensmodel. Het bestaat globaal uit twee delen
een Data Definition Language (DDL) en een Data Mani
pulation Language (DML). De DDL wordt gebruikt om
beschrijvingen van de afzonderlijke relaties in te voeren.
We gaan niet verder in op deze DDL. De DML bevat ten
eerste commando's om gegevens in te voeren en te wijzi
gen in de verschillende relaties. Daarnaast bevat de DML
taalconstructies waarmee vragen kunnen worden gesteld
aan de gegevensbank. De term vraagtaal duidt op dit deel
van de DML. Een vraag wordt gespecificeerd met een
Select from where constructie. Het volgende voorbeeld
van een SQL-vraag specificeert dat we namen van die
gemeenten zoeken met meer dan 70 000 inwoners, die
niet groter zijn dan 90 vierkante kilometer.
Select naam
From GEMEENTE
Where (inwonertal 50 000) And
(oppervlakte 90)
Het Select deel van de vraag geeft aan in welke attributen
we geïnteresseerd zijn. In het From deel geven we aan uit
welke relatie deze attributen moeten worden gehaald.
Het Where deel geeft met een predikaat aan welke ge
gevens we precies willen opvragen. Als we uitgaan van
de relatie GEMEENTE die de eerder genoemde drie ge
meenten beschrijft, is het antwoord op deze vraag een
verzameling gemeentenamen die er in tabelvorm uitziet
als:
naam
Enschede
Een iets ingewikkelder voorbeeld van een vraag is:
Select g1 .naam, g2.naam
From GEMEENTE g1, GEMEENTE g2,
PARTNERGEMEENTE
Where
(PARTNERGEMEENTE.naam2 g2.naam) And
(g1.inwonertal g2.inwonertal 350 000)
Met deze vraag geven we aan de namen van al die
partnergemeenten te willen weten, die samen meer dan
350 000 inwoners hebben. In deze vraag zijn g1 en g2
willekeurige gemeenten uit de relatie GEMEENTE, die
gebonden zijn door een partnerverband (zie de eerste
twee regels van het Where deel). Bovendien moet gelden
dat de som van het inwonertal van beide gemeenten
groter is dan 350 000. In tabelvorm geeft deze vraag het
antwoord
gl.naam
g2.naam
Enschede
Maastricht
In fig. 1 worden beide vragen gesteld in de relationele
vraagtaal SQL*Plus.
Binnen een SQL-vraag kunnen verschillende operatoren
worden gebruikt. We noemen zonder verdere uitleg de
volgende classificatie en verwijzen voor meer informatie
naar zowel [1] als [2], SQL-operatoren zijn:
vergelijking: en
logisch And, Or, Not;
statistisch Min, Max, Count, Sum en Average.
naam
inwonertal
oppervlakte
Enschede
160 000
75
Maastricht
230 000
100
Heerenveen
40 000
30
naaml
naam2
datum__verband
Maastricht
Enschede
10 feb 1952
Enschede
Heerenveen
30 aug 1985
126
NGT GEODESIA 94 - 3