tleboukaka
Messages postés79Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention 5 mai 2010
-
2 janv. 2008 à 18:12
cs_joelamouk
Messages postés2Date d'inscriptionlundi 20 décembre 2010StatutMembreDernière intervention22 juin 2011
-
25 mai 2011 à 20:53
slt à tous
Pour tous ceux qui ont déjà developpé une application de bdd Delphi sous le moteur BDE/Paradox, voici le problème auquel je suis exposé :
J'utilise Delphi 7 et ai crée mes 2 tables sous Paradox, mais je ne sais pas comment faire fonctionner l'INTEGRITE REFERENTIELLE entre deux tables dont voici les champs :
tblClient (table mere) = cliNum , cliNom, etc
tblCommandes (table fille) = comNum, cliNum#, comMontant
NB : les champs en Gras sont des clés primaires
le champ suivi du symbole # est la clé étrangere (clé secondaire)
Alors, qui pourrait avoir la gentillesse de me décrire (pas à pas / en détail) le processus pour créer l'intégrité référentielle entre les 2 tables ?
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 3 janv. 2008 à 11:44
Pour créer une intégrité référentiel il faudrait savoir déjà ce que tu cherches à faire entre ces deux tables.
Car une intégrité çà veut dire qlqchose...
et puis c'est plus simple si tu t'arrangeais pour avoir un champ désigné de la même manière dans les deuc tables.
Si tu mettais le champ cliNum (zé zoli comme nom..) dans la table tbl commandes et que tu faisais une requête en reliant les deux champs ?
tleboukaka
Messages postés79Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention 5 mai 2010 3 janv. 2008 à 15:46
slt
Avant de commencer je dirai merci pour vos tentatives de réponses...
Celui auprès de qui j'ai appris à nommer les tables et les champs de tables n'est pas la moindre des personnes : un professionnel en la matière. c'est Mr FREDERIC BROUARD.
TClient (dans l'écriture SQL / IDE Delphi) et tblClient (en MDE/Paradox)
TCommande (dans l'écriture SQL / IDE Delphi) et tblCommande (en MDE/Paradox)
avec les nom des champs, Frederic Brouard met Cli_Num ou Cli_Code tandis que moi je prefere mettre CliNum ou CliCode (plus court et plus propre à mon avis), etc
mon intégrité référentielle c'est pour que les enregistrements de la table mere ne soient pas supprimés quand un enregistrement correspondant est présent dans la table Fille
ensuite que les mise à jour soit automatique de la table mere vers la table fille.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 3 janv. 2008 à 16:09
Il n'y existe aucune norme en matière de désignation des tables..
Juste un peu de bon sens et de règles mnémotechniques..c'est tout.
"mon intégrité référentielle c'est pour que les enregistrements de la table mere ne soient pas supprimés quand un enregistrement correspondant est présent dans la table Fille
ensuite que les mise à jour soit automatique de la table mere vers la table fille."
Ceci montre que tu confonds contraintes et intégrité..
cantador
Vous n’avez pas trouvé la réponse que vous recherchez ?
tleboukaka
Messages postés79Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention 5 mai 2010 3 janv. 2008 à 16:25
comme il en est ainsi...
comment puis je faire pour que les enregistrements de la tblClasse (ClaNum, ClaNom) ne soient pas supprimés tant qu'il existe un ou plusieurs Etudiants dans la tblEtudiant (EtuNum, EtuNom, ClaNum, ...) qui sont (inscrits) dans cette même classe.
Par ailleur les mise à jours effectuées dans la tblClasse soient répercutées automatiquement dans la tblEtudiant ! Sachant que le champs qui lie les 2 table est ClaNum ou CodeClasse si vous voulez
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 4 janv. 2008 à 12:33
bon je vais qd même te répondre :
les Maj et les Suppressions en cascade -->> contraintes
à régler dans ton gestionnaire de base de données
(évites le SQL sinon tu vas galérer..)
pour empêcher les suppression du père si le fils est n'est pas vide
->>>> par programmation
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 4 janv. 2008 à 13:06
Je rectifie pour les noms des tables :
En fait, le plus simple est de nommer directement la table par son nom
ex : table client -->> CLIENT avec pour clé CODECLIENT
table commande->>> COMMANDE CODECOMMANDE
ce qui clarifie grandement les constructions des SQL.
Pour les composants (d'où ma confusion) on prend pour habitude de le nommer
avec la première lettre de son nom sans le "T" :
ex : TQuery->>>>> QClient
QCommande etc..
TLabel ->>>>> LClient
TPanel->>>>>> PCommande
etc
Bien sûr, il y a des exceptions comme les TTables par ex
car le T pourrait prêter à confusion avec une classe de composant...
Dans ce cas, moi par exemple je double le "T" ex: TTClient
(mais comme je ne me sers plus des TTables)
tleboukaka
Messages postés79Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention 5 mai 2010 4 janv. 2008 à 14:21
parfait
au fait c'est un style le nommage. comme vous le dites, plus comprehensible et plus facile à se retrouver dans l'écriture SQL !
a partir de demain Samedi je vais essayer d'y reflechir et exploiter cette piste que vous avez indiquez à savoir :
les Maj et les Suppressions en cascade -->> contraintes
à régler dans ton gestionnaire de base de données
(évites le SQL sinon tu vas galérer..)
pour empêcher les suppression du père si le fils est n'est pas vide
->>>> par programmation
Pour l'heure la tête commence à peser
Merci encore pour votre disponibilité
khawarizm
Messages postés116Date d'inscriptionmercredi 22 novembre 2000StatutMembreDernière intervention 4 août 20101 4 janv. 2008 à 17:47
Salut !
<!--[if !supportLists]-->
1-
<!--[endif]-->
Définition du dossier de travail
:
Dans le module de base de données
choisis comme repertoire de travail le
repertoire qui contient tes tables
(sinon tu ne pourras pas indiquer la table de
réference )
<!--[if !supportLists]-->
2-
<!--[endif]-->
Configuration de l’integrité réferentielle
:
toujours dans le module de base
de données ouvres la sous table ( la table fille comme tu dis ) et dans la la liste des proprietés de la table
sélectionnes integrité référentielle ,
puis cliquer sur le bouton DEFINR
<!--[if !supportLists]-->
3-
<!--[endif]-->
Sélection du champ référencé :
Dans la boite de dialogue intégrité
référentielle cliquer sur le champ référencé
puis la fleche vers la droite
<!--[if !supportLists]-->
4-
<!--[endif]-->
Sélection de la clé de référence
:
Toujours dans la boite de dialogue intégrité référentielle et dans la
partie droite sélectionnes la table (principale)et la clé est automatiquement
sélectionnée
<!--[if !supportLists]-->
5-
<!--[endif]-->
Configuration de la mise à jour des données référencées :
Toujours dans la boite de dialogue intégrité référentielle(
en bas à
gauche )tu as deux options 1- cascade 2- interdite
Si tu
choisis l’option Interdite: tu ne pourras plus modifier ou supprimer
une clé dans la table PRINCIPALE que si <st1:personname productid="la SOUS TABLE" w:st="on"><st1:personname productid="la SOUS" w:st="on">la
SOUS</st1:personname> TABLE</st1:personname> e ne comprend aucun
enregistrement correspondant .
Bonne chance
tleboukaka
Messages postés79Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention 5 mai 2010 5 janv. 2008 à 10:39
MERCI [auteur/KHAWARIZM/553963.aspx khawarizm]
Mais je suis arrivé jusqu'à l'étape 3 :
<!--[if !supportLists]-->3- <!--[endif]-->Sélection du champ référencé :
Dans la boite de dialogue intégrité référentielle cliquer sur le champ référencé puis la fleche vers la droite
CEPENDANT dans la boite de dialogue INTEGRITE REFERENTIEL, apres avoir selectionné le champ référencé, le bouton OK n'est pas activé; d'où je ne peux meme pas valider cette action et ne peu meme pas poursuivre/continuer.
Je suis coincé à ce niveau. je me demande : est ce que c'est mon Delphi qui est mal installé ? est ce que j'ai pas bien installé ce module Base de données Paradox MDE ? Car à mon sens le bouton OK devait etre Activé - il est estompé (seul les boutons Anuler et Aide sont activés)
Je crois en cette démarcheque vous m'avez DETAILLE mais mais mais... je vous prie de m'aider d'avantage svp Le bouton OK de la boite de dialogue INTEGRITE REFERENTIEL est inactivé/estompé !!!!
cs_joelamouk
Messages postés2Date d'inscriptionlundi 20 décembre 2010StatutMembreDernière intervention22 juin 2011 25 mai 2011 à 20:53
Bonjour
ben voila je suis entraine de faire une application sous delphi7 et j'ai un blem lors de la création des tables sous paradoxe je n'arrive pas a faire l'intégrité referentielle il m'affiche comme erreur "la table n'existe pas " alors que je l'est crée aprés g fais reference dans le data module ajouter un nouveau champ ...... je ne sais pas q'il sagit de la mm chose que l'integrité referentiel sous paradoxe jtd une réponse SVP :)