3liz / QgisCadastrePlugin

A QGIS plugin which helps users to import the french land registry ('cadastre') data into a database. It is meant to ease the use of the data in QGIS by providing search tools and appropriate layer symbology.
GNU General Public License v2.0
61 stars 41 forks source link

[SQL] Fix Primary key table proprietaire #424

Closed rldhont closed 1 year ago

rldhont commented 1 year ago

Il arrive que dans un dépratement pour une division, un proprietaire apparaisse plusieurs fois. La contrainte d'unicité est donc caduque pour le cahmps proprietaire de la table proprietaire.

je propose d'ajouter une clé primaire de type serial et un index sur le champs proprietaire.

Funded by Établissement Public Foncier Hauts De France

mdouchin commented 1 year ago

@landryb @MaelREBOUX @EtienneRouvin Avez-vous eu ce souci de doublons sur les clés primaires de la table des propriétaires ? On a souvent des lignes de propriétaires avec valeur différentes pour le champ proprietaire mais qui correspondent "en vrai" au même propriétaire (EX: SNCF et Société Nationale des Chemins de Fer), mais c'est la première fois qu'on nous rapporte des doublons dans le champ proprietaire (import des données de plusieurs départements)

MaelREBOUX commented 1 year ago

Bonjour,

Il n'y a pas de clé primaire sur la table proprietaire. D'après les scripts, elle (proprietaire_pk) est créée puis détruite :

https://github.com/3liz/QgisCadastrePlugin/blob/243906851ec26c626adde9bb8869363a25a91126/cadastre/scripts/plugin/commun_creation_contraintes.sql#L16

https://github.com/3liz/QgisCadastrePlugin/blob/243906851ec26c626adde9bb8869363a25a91126/cadastre/scripts/plugin/commun_suppression_contraintes.sql#L40

Donc, forcément, nous n'avons pas de problème. Si j'essaie de remettre la clé primaire -> erreur et c'est tout à fait logique.

S'il faut mettre une clé primaire il faut la faire de cette manière :

ALTER TABLE cadastre_qgis.proprietaire ADD CONSTRAINT proprietaire_pk PRIMARY KEY  (proprietaire,ccocom,ccodep);

Mais je ne suis pas certain du gain vu que ces attributs sont déjà indexés.

MaelREBOUX commented 1 year ago

Ha non : finalement l'attribut proprietairen'est actuellement pas indexé vu qu'on fait tomber la clé primaire.

mdouchin commented 1 year ago

Je valide le PR de mon côté.

MaelREBOUX commented 9 months ago

Vous avez privilégié une clé primaire "machine" et pas "métier". C'est noté.

ALTER TABLE [PREFIXE]proprietaire ADD CONSTRAINT proprietaire_pk PRIMARY KEY  (id);
rldhont commented 9 months ago

@MaelREBOUX nous avons privilégié une clé primaire "machine" a une clé "métier" pour assurer une meilleure performance dans QGIS.

Par défaut la définition interne d'un objet géographique (Feature) a pour identifiant unqiue un entier (le Feature ID). Si l'identifiant unique fourni par la source de données n'est pas un entier, alors QGIS va créer un tableau de correspondance entre des IDs de type entier "machine" et des IDs "métier" de type chaîne de caractère, entier longs, autres.