Postgres Rule system een meer complete geografische uitbreiding van de DBMS te komen. Er zijn zowel twee- als driedimensionale, geometrische gegevenstypen geïmplementeerd. Daarom ook eindigen de namen van de typen met een nummer dat hun dimensie aangeeft. De 2D-gegevenstypen zijn POINT2, POLYLINE2 en POLYGON2. In plaats van het Postgres type path willen we het semantische verschil tussen poly- lijn en polygoon weergeven door middel van het toe kennen van verschillende gegevenstypen. Deze typen moeten worden ondersteund door aanvullende geo metrische functies. Functienamen geven de werking, de dimensie en de operand typen weer. De functie Equal2PntPnt gaat bijvoorbeeld na of twee 2D-punten gelijk zijn. De functies worden geclassificeerd per groep, waarvan iedere groep hier met enige voorbeelden wordt geïllustreerd (operator-symbolen worden binnen de rech te haakjes weergegeven): retourneren Boolean waarden: Equal2PntPnt On2PntPln [->], Contain2PgnPgn [-->] (let op het overladen van de operator), en Overlap2PlnPgn retourneren atomaire geometrische objecten (punt, poly- lijn en polygoon): GravCenter2Pgn MinBoundRec2Pgn en ConvexHull2Pnts (Pnts duiden een array aan met variabele lengte van POINT2's). retourneren complexe geometrische objecten lnter2PgnPgn [A], Voronoi2Pnts en Delaunay2Pnts zoals beschreven in [7], retourneren scalar-waarden Distance2PntPnt [<->], MinDist2PgnPgn [<->], Length2Pln [--], en Area2Pgn HetRule-system" of regelmechanisme maakt het moge lijk diverse soorten regels te definiëren. De verscheidene soorten regels en hun toepassingsgebied worden hierna behandeld. Wat betreft het gebruik van regels, zijn er de volgende groepen te onderscheiden: waarborgen van referentiële integriteit in de gege vensbank, hetgeen betekent dat ervoor wordt gezorgd dat verwijzingen binnen de gegevensbank consistent blijven („foreign keys" in een relationeel DBMS); topologische regels, welke er bijvoorbeeld voor zorgen dat er geen intersectie is van twee lijnen zonder knooppunt; geometrisch gerelateerde bedrijfsregels om bijvoor beeld een bepaalde minimum afstand tussen objecten te handhaven; de aan thematische attributen gerelateerde regels, zoals het ervoor zorgen dat waarden binnen een ge geven interval liggen; autorisatieregels die ervoor zorgen dat niet iedereen alles mag zien of mag doen; „triggers" die (vanuit de gegevensbank) de applica ties waarschuwen, indien een bepaalde situatie zich voordoet (dit is met name van belang bij dynamische toepassingen). Hierna zal een aantal voorbeelden van deze regels wor den gegeven, gerangschikt naar hun Postgres-wijze van implementatie. Retrieve-rules „Retrieve-rules" wijzigen het beeld dat de gebruiker krijgt van de opgeslagen objecten. Het is bijvoorbeeld mogelijk om berekende schijnattributen toe te voegen aan objecten, bijvoorbeeld het attribuut lengte dat de lengte van een polyline bevat. Op het moment dat het lengte-attribuut wordt geraadpleegd, zal het Rule-system op dat moment de lengte van de polyline berekenen. In plaats van een eenvoudige lengteberekening is het na tuurlijk ook mogelijk om veel complexere berekeningen te laten plaatsvinden (bijvoorbeeld het opzoeken van de dichtstbijgelegen politiepost). De definitie is als volgt: on retrieve to lines.length do instead retrieve (length Length2Pln(lines.polyline)) Een iets ingewikkelder voorbeeld toont hoe een schijn- attribuut belasting aan een perceel wordt toegevoegd op basis van de oppervlakte: on retrieve to parcel.tax do instead retrieve (tax 10* Area2Pgn(parcel.polygon)) De retrieve-rules kunnen ook worden toegepast om ge gevens te verbergen on retrieve to person.salary where user() „mail_boy" do instead nothing Een laatste toepassing is bijvoorbeeld het afdrukken van salarisgegevens: on retrieve to person.salary do append salary_log (user= user(), time= curtime()) Replace-rules Een „replace-rule" kan worden gebruikt om te garande ren dat bepaalde randvoorwaarden worden nagekomen: on replace to person.salary where (new.salary<0) do instead give_warning( Bovenstaande regel zorgt ervoor dat het salaris niet negatief kan worden, maar dat er een waarschuwing wordt gegeven. Het volgende voorbeeld toont een regel die voor consistentie zorgt tussen de gegevensbank en de presentatie op het beeldscherm: on replace to unit.position where (new.position<->policepost.position) 10000 do replace new (screencolor „Red") 276 NGT GEODESIA 93 - 6

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

(NGT) Geodesia | 1993 | | pagina 20