Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Thu 25 July 2019 15:43

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 195

liste de valeurs pour un champs

Bonjour,

je souhaiterais comprendre comment fonctionne les listes de valeurs au sein des bases de données. J'ai une table canalisation qui comporte un champs matériau disposant d'une clé étrangère vers une table "matériaux" qui contient le code (clé primaire de la table) et les matériaux (voir image).

Ma base sera exploitée par le biais de geoconcept. Je souhaite que lorsqu'un utilisateur intègre ou modifie une canalisation il ne puisse pas rentrer des valeurs aberrantes. Pour ce faire lors du choix de matériau je souhaites que l'utilisateur choisisse les valeurs au sein d'une liste définit.

Est-ce que c'est possible d'implémenter ça directement au niveau de la base de donnée (trigger ?) ou bien il faut réaliser ca en amont sur le logiciel client ?

Hors ligne

 

#2 Thu 25 July 2019 16:28

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: liste de valeurs pour un champs

Vous pouvez implémenter cela dans une base de données relationnelle
sans passer par un trigger, mais en spécifiant une contrainte de clé étrangère.

Exemple, sous PostgreSQL :

Code:

ALTER TABLE materiaux 
ADD CONSTRAINT pk_materiaux_id_materiaux 
PRIMARY KEY(id_materiaux)
;

ALTER TABLE canalisation 
ADD CONSTRAINT fk_canalisation_id_materiaux 
FOREIGN KEY (id_materiaux)
REFERENCES materiaux(id_materiaux)
;

Ainsi, le mécanisme d'intégrité référentielle du moteur de base de données
vous garantira que la colonne id_materiaux de votre table canalisation
ne contiendra jamais une valeur qui n'existe pas dans la table materiaux,
à l'exception de NULL.

Pour empêche cette exception, vous pouvez
rajouter une contrainte NOT NULL sur la colonne.

Code:

ALTER TABLE canalisation 
ADD CONSTRAINT not_null_canalisation_id_materiaux
NOT NULL (id_materiaux)
;

Dernière modification par tumasgiu (Thu 25 July 2019 16:31)

Hors ligne

 

#3 Thu 25 July 2019 18:21

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 195

Re: liste de valeurs pour un champs

Top ! après il est néanmoins nécessaire d'importer la table dans le logiciel client pour établir un menu déroulant non ?

Hors ligne

 

#4 Fri 26 July 2019 10:38

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: liste de valeurs pour un champs

Sans doute, je ne sais pas comment fonctionne GeoConcept.

Vous pouvez aller poser la question dans le forum dédié.

Hors ligne

 

Pied de page des forums

Powered by FluxBB