Database Reference
In-Depth Information
CREATE TABLE T_PARCELLE_GEOMETRIE_PCG
(PCL_NUMERO_CADASTRAL VARCHAR(16) NOT NULL,
PCG_NUMERO_POINT INT NOT NULL,
PCG_LATITUDE FLOAT NOT NULL,
PCG_LONGITUDE FLOAT NOT NULL,
PCG_ALTITUDE FLOAT,
CONSTRAINT PK_PCG PRIMARY KEY (PCL_NUMERO_CADASTRAL,
PCG_NUMERO_POINT));
Chacun sait qu'une parcelle de terrain est un polygone et qu'un polygone se doit d'avoir
au moins 3 sommets. Tant que l'on n'a pas saisi 3 points, pas de polygone. Or, aucune
contrainte ne peut « attendre » l'arrivée du troisième point pour valider ou invalider les
données. Dans ce cas, la solution réside dans la vue :
CREATE VIEW V_PARCELLE_GEOMETRIE_PCG AS
SELECT * FROM T_PARCELLE_GEOMETRIE_PCG AS P1
WHERE EXISTS(SELECT 1
FROM T_PARCELLE_GEOMETRIE_PCG AS P1 AS P2
WHERE P1.PCL_NUMERO_CADASTRAL = P2.PCL_NUMERO_CADASTRAL
AND P1.PCG_NUMERO_POINT = P2.PCG_NUMERO_POINT
GROUP BY P2.PCG_NUMERO_CADASTRAL, P2.PCG_NUMERO_POINT
HAVING COUNT(*) >= 3);
Cette dernière ne fera apparaître que les données des points des parcelles pour celles
formant des polygones… Mais comme on ne sait pas à l'avance le nombre de points d'un
polygone, la manière la plus pratique est de rajouter cette information de « fermeture »
du polygone à un niveau supérieur :
CREATE TABLE T_PARCELLE_PCL
(PCL_NUMERO_CADASTRAL VARCHAR(16) NOT NULL PRIMARY KEY,
PCL_SAISIE_FINALISE BOOLEAN NOT NULL DEFAULT 0);
ALTER TABLE T_PARCELLE_GEOMETRIE_PCG
ADD CONSTRAINT FK_PCG_PCL
FOREIGN KEY (PCL_NUMERO_CADASTRAL)
REFERENCES T_PARCELLE_GEOMETRIE_PCG (PCL_NUMERO_CADASTRAL);
 
Search WWH ::




Custom Search