|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Julien Ingénieur qualité méthodes Inscription : juillet 2009 Messages : 53 ![]() |
Bonjour,
Je viens de recréer entièrement ma base de données à partir de l'ancienne (importation des tables + modification/ajout de quelques champs). Pour simplifier j'ai une table "Commandes" et une table "Envois". 1 commande peut contenir plusieurs envois. Sur mon ancienne base je pouvais modifier n'importe quelle info sans problème : comme un numéro de commande (changement de convention), les envois restaient associés au nouveau numéro de commande. Par exemple précédemment mon numéro de commande était 100 et avait 4 envois associés. Nous avons décidé de changer la convention et de mettre les initiales du client avant le numéro, le nom de la commande devenait donc "B100". En faisant cette modification mes 5 envois associés à la commande "100" l'étaient toujours avec la commande "B100". Maintenant avec ma nouvelle base, je ne peux plus faire de modification, dès que je modifie un numéro de commande par exemple, je perds tous les envois associés. En renommant la commande comme au départ, je retrouve mes envois correspondant par contre. J'ai ce problème avec beaucoup d'autres tables : les produits et les familles de produit. Nous associons chaque produit à une famille particulière (liste de choix). Lorsque je décide de renommer une famille, tous les produits associés auparavant, ne le sont plus. Merci pour votre aide. |
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour
Des informations complémentaires aideraient à mieux comprendre (tel qu'une copie d'écran du schéma relationnel), et ce que tu as modifié (je pense notamment aux clés primaires et liaisons). Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon ![]() Si vous pensez commencer sans un livre, oublier : livres pour débuter Vous pouvez consulter mes articles sur Access et PowerPoint Le blog Office. Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas. |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Julien Ingénieur qualité méthodes Inscription : juillet 2009 Messages : 53 ![]() |
Bonjour,
Voici un aperçu des relations de ma base. PO_Ship.JPG J'ai en effet fait quelques modifications importantes. Au départ dans ma table "T_PO" (Commandes), "PO_Number" était la clé primaire. Nous avons ensuite décidé de créer une numérotation automatique (PO_ID) pour être capable de créer des commandes avec le meme numéro de commande mais pour des clients différents. Cette solution s'est finalement avérée très contraignante, les utilisateurs faisaient beaucoup trop d'erreur. J'ai donc décidé de mettre un peu d'ordre dans cette base et de la refaire en important les tables mais surtout en les modifiant légèrement. Pour la table PO, j'ai supprimé la numérotation automatique et remis le numéro de PO en clé primaire. La table "Shipment" (envoi) était trop longue, j'ai décidé de la spliter en deux. ... Je ne sais pas si ces détails suffisent. EDIT : je vais surtout détailler les 2 points que je souhaite modifier : PO_Ship2.JPG 1. Les tables T_PO et T_Shipments Comment dit précédemment, j'ai modifié la clé primaire de T_PO (avant c'était un champ automatique, je l'ai supprimé pour le remettre sur PO_Number) : le champ PO_Number a toujours été associé à la table T_Shipments. 2. Les tables T_ProductFamilies et T_Products La configuration de ces 2 tables n'a pas changé. Sauf qu'avant le champ "produit" (Products_PartNumber) était lié à la table T_Shipments. J'ai décidé de spliter la table T_Shipments en deux par soucis de clarté et de simplicité : j'ai exporté une partie des champs de la table T_Shipments dans une nouvelle table T_Items. Le champ Products_PartNumber est donc maintenant lié à la nouvelle table "T_Items". J'ai remarqué aussi une différence dans les relations. Sur mon ancienne table la relation entre T_Shipments et T_PO est : indeterminate (external) : je ne peux ni modifier le type de liaison ni "enforce referential integrity". Entre T_ProductFamilies et T_Product, même chose : one to many (external), et encore une fois je ne peux ni modifier le type de liaison etc ... Pour être honnête je ne sais même pas comment j'avais créer ce type de relation ... Je pense qu'avec ces éléments il est plus facile de se faire une idée exacte du problème. |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
bonjour,
Citation:
Categorie(CodeCategorie, NomCategorie) Produit(CodeProduit, NomProduit, #CodeCategorie) Seulement dans ta fenêtre des relations, tu n’as que le schéma : Au lieu de : car il manque la mise en œuvre de l’intégrité référentielle et surtout la contrainte "mettre à jour en cascade les champs correspondants" qui permet justement de propager toute modification de CodeCategorie du côté 1 vers CodeCategorie du côté ∞. Il faut donc remettre en place l’intégrité référentielle et cocher cette option. Si tu n’y arrive pas, c’est probablement parce qu’un produit référence une catégorie qui n’existe pas et il faut trouver où (requête de non-correspondance). Note que si tu avais choisi une clé primaire de type NumeroAuto dans ta table Categorie en prenant soin d’indexer le champ CodeCategorie "sans doublon" : Categorie(idCategorie (NumeroAuto), CodeCategorie, NomCategorie) Produit(idProduit(NumeroAuto), NomProduit, #idCategorie), toute modification du CodeCategorie se ferait sans impacter la table des produits puisque la jointure est réalisée sur le NumeroAuto qui lui reste invariant. Moralité
__________________
L'informatique fait son grand retour au lycée... |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Julien Ingénieur qualité méthodes Inscription : juillet 2009 Messages : 53 ![]() |
Bonjour,
Merci pour les conseils, j'avais déjà remarqué ce problème de relation. J'ai donc créer de requêtes de non correspondance et ai supprimé tout ce qui n'allait pas. Maintenant tout semble fonctionner normalement, en espérant que ça dure Merci encore pour votre aide. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com