| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 23 juin 2018 - 13:37 |
Bonjour à tous,
Dans HFSQL il est possible de violer la contrainte d'intégrité d'une clé étrangère. Je m'explique : Soit un fichier nommé "HF_Personnes" dont l'identifiant unique est la colonne "IdPersonne" Et un autre fichier nommé "HF_Voitures" dont l'identifiant unique est la colonne "IdVoiture"
Une voiture appartient à une personne et une seule (une personne peut avoir plusieurs voitures). Cette règle de gestion se traduit dans le MPD par une nouvelle colonne "IdPersonne" dans le fichier "HF_Voitures" et une liaison entre les deux tables
HF_Voitures.IdPersonne (1,1) <----------->(0,n) HF_Personnes.IdPersonne
Donc toute voiture doit obligatoirement etre rattachée à une personne.
Le problème est qu'en passant par l'editeur de fichiers il est possible de violer cette règle. Le moteur HFSQL n'empeche pas d'enregistrer une voiture n'appartenant à personne exemple HF_Voitures.IdPersonne = 55 alors qu'aucune personne n'a 55 comme IdPersonne
Je conaissais ce problème en version 17 et pour cette raison je délaissais hfsql au profit de PostgreSQL (qui, normalement, bloque toute violation de règle d'intégrité)
Aujourd'hui de retour sur windev 23 la problématique est la meme. Je crains de n'encore pas pouvoir utiliser hfsql par souci de securité, me privant de son ergonomie...
J'espère avoir été clair, peut etre y a-t-il un réglage à faire ? quelqu'un a-t-il des remarques à ce sujet ?
Merci et bonne journée,
Laurent
-- ---------------- Cordialement LG |
| |
| |
| | | |
|
| | |
| |
Posté le 23 juin 2018 - 18:52 |
Pour l'instant votre table HF_Voitures ne contient que deux champs Si vous en ajoutez un (par exemple un champ VarChar pour le numéro minéralogique) Vous ajoutez une ligne dans HF_Voitures sans spécifier d'identifiant personne. A ce niveau, si j'ai bien suivi, la contrainte d'intégrité ne s'applique pas
Si maintenant vous rappelez l'enregistrement qui vient d'être créé et que vous modifiez le numéro minéralogique, que se passe-t-il ? Est-ce qu'en modification la contrainte s'applique ?
Sur un plan plus général j'utilise WinDev mais j'utilise toujours des bases de données tierce : ACCESS ou SQL Serveur HFSQL est sûrement très bien mais il n'est exploitable que via WinDev |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 304 messages Popularité : +47 (51 votes) |
|
Posté le 24 juin 2018 - 13:44 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 891 messages Popularité : +227 (347 votes) |
|
Posté le 25 juin 2018 - 09:27 |
Bonjour, Daryl a écrit :
Salut Laurent,
Tu as déjà essayé d'utiliser HGèreIntégrité() et HErreurIntégrité() ?
Je pense que Laurent parle de la modification de fichier via WDMAP. Que donne la table modifiée dans tes test, par exemple lors de la sélection de l'enregistrement incriminé ?
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 26 juin 2018 - 19:00 |
Michel a écrit :
Pour l'instant votre table HF_Voitures ne contient que deux champs Si vous en ajoutez un (par exemple un champ VarChar pour le numéro minéralogique) Vous ajoutez une ligne dans HF_Voitures sans spécifier d'identifiant personne. A ce niveau, si j'ai bien suivi, la contrainte d'intégrité ne s'applique pas Si maintenant vous rappelez l'enregistrement qui vient d'être créé et que vous modifiez le numéro minéralogique, que se passe-t-il ? Est-ce qu'en modification la contrainte s'applique ? Sur un plan plus général j'utilise WinDev mais j'utilise toujours des bases de données tierce : ACCESS ou SQL Serveur HFSQL est sûrement très bien mais il n'est exploitable que via WinDev
Salut Michel, merci mais pas besoin d'ajouter un autre champ, c'est juste que l'intégrité n'est pas gérée.
Sur un plan plus général j'utilise WinDev mais j'utilise toujours des bases de données tierce : ACCESS ou SQL Serveur HFSQL est sûrement très bien mais il n'est exploitable que via WinDev
Ben non justement il y a des pilotes permettant d'attaquer hfsql depuis une application tierce Comme toi j'utilise d'autres bases que hfsql pour mes applis windev, mais pas pour la meme raison : dans mon cas je ne peux pas utiliser un moteur de bdd qui ne respecte pas nativement les règles d'intégrité.
-- ---------------- Cordialement LG |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 26 juin 2018 - 19:13 |
Voroltinquo a écrit :
Bonjour, Daryl a écrit : Salut Laurent,
Tu as déjà essayé d'utiliser HGèreIntégrité() et HErreurIntégrité() ?
Je pense que Laurent parle de la modification de fichier via WDMAP. Que donne la table modifiée dans tes test, par exemple lors de la sélection de l'enregistrement incriminé ?
-- Il y a peut être plus simple, mais, ça tourne
Salu Daryl et Voroltinquo.
Désolé j'avais oublié de m'abonner à ce fil d'où ma réponse tardive. Oui Voroltinquo c'est bien avec WdMap que j'arrive à violer la clé étrangère. Et si je fais cela d'une autre manière (avec hAjoute) alors là effectivement cela bloque et me previent qu'il y a un problème.
Cela me semble très bizarre que ma bdd accepte d'enregistrer des données incohérentes. Effectivement en restant dans le contexte projet pc soft / analyse / HFSQL les règles du mpd sont respectées Mais en ce qui me concerne les données sont souvent partagées avec des applis non PC Soft et donc il est plus sur pour moi d'utiliser un autre sgbd (SQL srv, Postgresql, etc ....)
c'est bien dommage.
-- ---------------- Cordialement LG |
| |
| |
| | | |
|
| | |
| |
Posté le 26 juin 2018 - 20:15 |
Comme toi j'utilise d'autres bases que hfsql pour mes applis windev, mais pas pour la meme raison : dans mon cas je ne peux pas utiliser un moteur de bdd qui ne respecte pas nativement les règles d'intégrité
Si! Cela fait partie de mes raisons. Par contre je ne connaissais pas les pilotes permettant d'attaquer hfsql depuis une application tierce. Ce post me donne envie de continuer de travailler avec mon système actuel |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 27 juin 2018 - 09:32 |
Michel a écrit : (...) > Par contre je ne connaissais pas les pilotes permettant d'attaquer hfsql depuis une application tierce.
Depuis une appli tierce c'est avec un driver odbc si je me souviens bien. Mais on n'attaque pas directement la base hfsql, le pilote passe par une analyse c'est un peu une usine à gaz
Ce post me donne envie de continuer de travailler avec mon système actuel Moi aussi
-- ---------------- Cordialement LG |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 891 messages Popularité : +227 (347 votes) |
|
Posté le 27 juin 2018 - 11:14 |
HF ne serait pas le seul touché, j'ai testé cette ligne sous MySQL et MariaDB avec une table conducteur vide
INSERT INTO `voiture` (`PK_Voiture`, `AK_NoChassis`, `FK_Conducteur`) VALUES (NULL, '125bd40', '67'); C'est passé sans problème
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Posté le 27 juin 2018 - 11:43 |
Bonjour
il me semble que WDMAP n'est pas un utilitaire redistribuable : à vérifier pour verrouiller votre cas : mettre un mot de passe sur la BDD ne pas utiliser WDMAP par vous meme et donc ne pas le livrer : utiliser uniquement le centre de controle vérifier avec le centre de controle que vous ne pouvez pas genérer le cas de violation d'integrite si un client accede de lui meme aux données avec "son" wdmap et "son" crackage de mot de passe : c'est de "sa" responsabilité
Bon devs |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 891 messages Popularité : +227 (347 votes) |
|
Posté le 27 juin 2018 - 12:05 |
digi12 a écrit :
Bonjour
il me semble que WDMAP n'est pas un utilitaire redistribuable : à vérifier
En effet WDMAP n'est pas redistribuable
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 27 juin 2018 - 13:04 |
Voroltinquo a écrit :
HF ne serait pas le seul touché, j'ai testé cette ligne sous MySQL et MariaDB avec une table conducteur vide INSERT INTO `voiture` (`PK_Voiture`, `AK_NoChassis`, `FK_Conducteur`) VALUES (NULL, '125bd40', '67');
C'est passé sans problème
-- Il y a peut être plus simple, mais, ça tourne
Hello,
oui dans MySql il y a un parametre à la création de la base qui fait que les contraintes sont violables ou pas. Mais si ce parametre est correctement initialisé alors impossible de faire cette ecriture.
-- ---------------- Cordialement LG |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 27 juin 2018 - 13:08 |
Bonjour Digi et merci.
Oui bien sur on peut toujours verrouiller. Mais avec la plupart des autres sgbd l’écriture d'informations non conformes au mcd/mpd est tout simplement impossible en natif, ce qui est quand même plus fiable (et par ailleurs est le standard dans les sgbd).
-- ---------------- Cordialement LG |
| |
| |
| | | |
|
| | |
| |
Posté le 27 juin 2018 - 15:32 |
re
dans l'Aide de WDMAP : "Attention : Si les manipulations concernent des rubriques présentes dans des fichiers liés (sous l'éditeur d'analyses), il est conseillé d'activer la gestion de l'intégrité et la gestion des doublons. Par défaut, la gestion de l'intégrité et la gestion des doublons sont activées. La gestion de l'intégrité est activée uniquement si l'analyse d'origine du fichier est connue : la gestion de l'intégrité n'est pas activée si le fichier est ouvert directement sous l'explorateur avec WDMap."
il faut peut etre ouvrir l'analyse avant d'ouvrir le fichier pour l'intégrité soit vérifiée et dans l'aide WDMAP il est bien confirmé que l'utilitaire n'est pas redistribuable
bon devs |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 27 juin 2018 - 16:49 |
digi12 a écrit :
re
dans l'Aide de WDMAP : "Attention : Si les manipulations concernent des rubriques présentes dans des fichiers liés (sous l'éditeur d'analyses), il est conseillé d'activer la gestion de l'intégrité et la gestion des doublons. Par défaut, la gestion de l'intégrité et la gestion des doublons sont activées. La gestion de l'intégrité est activée uniquement si l'analyse d'origine du fichier est connue : la gestion de l'intégrité n'est pas activée si le fichier est ouvert directement sous l'explorateur avec WDMap."
il faut peut etre ouvrir l'analyse avant d'ouvrir le fichier pour l'intégrité soit vérifiée et dans l'aide WDMAP il est bien confirmé que l'utilitaire n'est pas redistribuable
bon devs
Voila une réponse précise et interessante, merci beaucoup.
-- ---------------- Cordialement LG |
| |
| |
| | | |
|
| | |