IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modélisation Discussion :

Repartir de 0 du projet Gestion Aidants-Accueillants


Sujet :

Modélisation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Almeyric
    Inscrit en
    Octobre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Almeyric
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 53
    Points : 20
    Points
    20
    Par défaut Repartir de 0 du projet Gestion Aidants-Accueillants
    Bonjour

    Suite à mon premier poste ici : http://www.developpez.net/forums/d14...s-accueillant/

    J'ai décidé de repartir de 0 en m'appuyant sur l'existant et avec une meilleur logique pour qu'une autre personne puisse comprendre facilement.

    Je viens de voir une réponse, j'irai répondre après ma petite question.

    Du fait que je repars de 0, j'apprends à utiliser Access en même temps et là je bloque sur quelque chose d’apparemment simple mais je ne trouve aucune réponse.

    Donc j'ai créé 4 tables : tbl_Communes, tbl_Departements, tbl_Prefectures, tbl_Regions,

    Les tables Départements et Régions sont des listes présentées comme ceci :

    ID_Dept (Clé & NumAuto), Num_Dept, Nom_Dept, Nom_Région <--- le Nom_Région provient de la table Région par relation 1 a plusieurs et ce met à jour si changement dans Régions. Je pense que cela j'ai compris.

    Ce que je désire, c'est que dans ma table Communes, j'affiche le Num_Dept par relation mais que quand le Num_Dept est égal "01" alors dans le champ Nom_Dept s'affiche le nom "Ain".

    De même pour le nom de la région.

    J'espère que je me suis bien expliqué.

    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonsoir,

    Ce que je désire, c'est que dans ma table Communes, j'affiche le Num_Dept par relation mais que quand le Num_Dept est égal "01" alors dans le champ Nom_Dept s'affiche le nom "Ain".
    Attention, parle t'on de table ou de formulaire quand tu dis "j'affiche"

    Car la logique, c'est que les tables soient les plus légères possible avec le minimum de redondance et ne sont la que pour "stocker" des informations.
    Ensuite pour présenter ces informations, on peux les reconstruire avec des requêtes et les afficher via des formulaires ou des états.

    Donc dans la table "communes" la seule information nécessaire au bon fonctionnement de la base c'est le N° du département. Le champ "Nom_dept" n'a pas lieu d'être et ne doit pas être renseigné.
    En revanche pour une consultation, nous irons le récupérer dans la table des département en faisant le lien justement sur le N°.
    c'est le principe même d'une base de données relationnel. On découpe et décompose l'information, que l'on range dans des tables et on évite la redondance d'information. Seules les clés servent de lien entre les tables pour faire les requêtes.
    L'analyse et la construction du schéma relationnel est l'un des points les plus important d'une base. Cela définit déjà ce que l'on veux, et ce que l'on pourra faire ou non.
    c'est aussi en le relisant que l'on arrive a comprendre le fonctionnement d'une base si tenté qu'il soit juste et ai été bien construit.
    Car une erreur à ce niveau pourra empêcher des traitements par la suite.

    Peux tu faire une capture d'écran des relations entre ces tables ?
    Cela permettra également de voir les champs disponibles
    @+


    Pensez au tag

  3. #3
    Membre à l'essai
    Homme Profil pro
    Almeyric
    Inscrit en
    Octobre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Almeyric
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 53
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Didier L Voir le message
    Bonsoir,

    Attention, parle t'on de table ou de formulaire quand tu dis "j'affiche"
    Je parle bien de table.

    Car la logique, c'est que les tables soient les plus légères possible avec le minimum de redondance et ne sont la que pour "stocker" des informations.
    Ensuite pour présenter ces informations, on peux les reconstruire avec des requêtes et les afficher via des formulaires ou des états.
    Ok, je comprends mieux.

    Donc dans la table "communes" la seule information nécessaire au bon fonctionnement de la base c'est le N° du département. Le champ "Nom_dept" n'a pas lieu d'être et ne doit pas être renseigné.
    En revanche pour une consultation, nous irons le récupérer dans la table des département en faisant le lien justement sur le N°.
    c'est le principe même d'une base de données relationnel. On découpe et décompose l'information, que l'on range dans des tables et on évite la redondance d'information. Seules les clés servent de lien entre les tables pour faire les requêtes.
    L'analyse et la construction du schéma relationnel est l'un des points les plus important d'une base. Cela définit déjà ce que l'on veux, et ce que l'on pourra faire ou non.
    c'est aussi en le relisant que l'on arrive a comprendre le fonctionnement d'une base si tenté qu'il soit juste et ai été bien construit.
    Du coup, je comprends mieux le principe de base et j'ai l'exemple à ne pas faire avec la base en production.



    Peux tu faire une capture d'écran des relations entre ces tables ?
    Cela permettra également de voir les champs disponibles
    La voici :

    Nom : Relations CommunesDeptRegion.png
Affichages : 79
Taille : 16,5 Ko

    Donc si j'ai bien compris, au niveau de la table Préfectures que j'ai importé de la base en production, je ne dois pas avoir les champs suivants : Nom_Dept, CP_Commune, Nom_Commune. Puisqu'avec une requête ou un état, je pourrais récupérer avec le Num_Dept et le Num_Insee, le CP et le Nom.

    Est-ce bien cela ?

    Par contre, je n'arrive pas à appliquer l'intégrité référentielle entre les tables département et communes.

    Acces me dit :

    Les donnée de la table ne respectent pas les règles d'intégrité référentielle.

  4. #4
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Donc si j'ai bien compris, au niveau de la table Préfectures que j'ai importé de la base en production, je ne dois pas avoir les champs suivants : Nom_Dept, CP_Commune, Nom_Commune. Puisqu'avec une requête ou un état, je pourrais récupérer avec le Num_Dept et le Num_Insee, le CP et le Nom.

    Est-ce bien cela ?
    Effectivement ils ne sont pas nécessaires. Seul le champ "N_INSEE" est requit car avec lui on peut récuperer le Num_Dept, le Nom et le CP de la commune, et avec le Num_Dept on pourra aussi récupere le nom_dept et ainsi de suite si on veut aussi récuperer la région

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Par contre, je n'arrive pas à appliquer l'intégrité référentielle entre les tables département et communes.
     
    Acces me dit :
     
    Les données de la table ne respectent pas les règles d'intégrité référentielle.
    C'est normal car il y a déjà des données dans les deux tables et le lien doit se faire sur la même information et surtout le même type de donnée.
    Je suppose que le L'ID_Dept doit etre un numéro auto (et qu'il ne sert a rien) car la Num_Dept pourrais très bien etre aussi la clé primaire de cette table car il doit être unique. De plus c'est cette information que l'on retrouve dans la table des communes et non l'ID !
    Il faut donc faire cette relation sur ces deux champs en partant de la table département et en allant vers la table commune.
    Attention, pour pouvoir appliqué l'intégrité référentielle le champ Num_Dept doit au minimum être indexé sans doublon (mais c'est mieux si c'est la clé primaire)
    @+


    Pensez au tag

  5. #5
    Membre à l'essai
    Homme Profil pro
    Almeyric
    Inscrit en
    Octobre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Almeyric
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 53
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Didier L Voir le message
    Effectivement ils ne sont pas nécessaires. Seul le champ "N_INSEE" est requit car avec lui on peut récuperer le Num_Dept, le Nom et le CP de la commune, et avec le Num_Dept on pourra aussi récupere le nom_dept et ainsi de suite si on veut aussi récuperer la région
    Ok, je fais le nécessaire à ce niveau.

    [QUOTE]Je suppose que le L'ID_Dept doit etre un numéro auto (et qu'il ne sert a rien) car la Num_Dept pourrais très bien etre aussi la clé primaire de cette table car il doit être unique. De plus c'est cette information que l'on retrouve dans la table des communes et non l'ID ![QUOTE]

    Ok. Mais quid du cas de la Corse avec 2A et 2B, le type de donnée peut être n'importe quoi pour la clé primaire, d'après ce que je vois.

    -----------

    Donc j'ai modifié la table département en indiquant le Num_Dept en clé primaire, recréer la relation vers la table Communes, et Access râle toujours pour l'intégrité.

  6. #6
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Oui la clé peut être du texte sans souci et pour moi effectivement un N° de département est du caractère à cause justement de la corse 2A et 2B et pour les autres aussi cela simplifie l'affichage "01" ... "09" avec le "0" devant ;-)
    @+


    Pensez au tag

  7. #7
    Membre à l'essai
    Homme Profil pro
    Almeyric
    Inscrit en
    Octobre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Almeyric
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 53
    Points : 20
    Points
    20
    Par défaut
    OK. Après mettre occupé de mes filles, j'ai enfin fini la relation entre les 4 tables et remis à jour toutes les informations des préfectures (le plus chiant).

    Voici mes relations :

    Nom : Relations CommunesDeptRegionPref.png
Affichages : 80
Taille : 16,6 Ko

    1 - Je n'arrive toujours pas à mettre l'intégrite entre Communes et Département. Access me dit toujuors le même message. Donc j'ai regardé si il y a des différences entre les deux champs et oui, dans la tbl_Communes, Num_dept est indexé avec doublons (normal), mais dans la tbl_Dept, il est indexé sans doublons. Et là, j'arrive pas le changer.

    Comment faire ?

    2 - Beh je sais plus ce que je voulais en 2. ça me reviendra.

  8. #8
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    mais dans la tbl_Dept, il est indexé sans doublons.
    C'est normal et c'est tant mieux.
    maintenant si les deux champs sont bien du texte cela veux dire que dans la table commune il y a des n° de département qui n'existe pas dans la table département.

    Pour les trouver, il faut faire un requête avec les deux tables faire afficher les N° de département des deux table, double cliquer sur la relation et choisir le type de jointure "Afficher tous les enregistrements de la table tbl_Communes et seulement ceux de la table tbl_departement pour lesquels les champs sont joint".
    Ainsi en fermant on doit avoir une flèche qui va de la table communes vers la table département.
    Ensuite dans le critère de sélection du champ N° de département de la table département tu mets : Est null.
    Tu exécute la requête et tu verra les communes qui ont un N° de département qui n'existe pas dans la table département.
    S'il y en a beaucoup, tu peux faire un regroupement pour savoir quel sont les départements qui te manque.
    Ensuite tu les crée, et enfin tu pourras faire ta relation
    @+


    Pensez au tag

  9. #9
    Membre à l'essai
    Homme Profil pro
    Almeyric
    Inscrit en
    Octobre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Almeyric
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 53
    Points : 20
    Points
    20
    Par défaut
    Alors j'ai utilisé l'assistant avec la solution de non-correspondance, et effectivement, il me sort 12 numéros qui ne corrspondent pas.
    C'est de 1 à 9 dans la table commune et dans la table département, de 01 à 09.

    Je suppose, qu'il doit être tout a fait possible de réaliser une macro pour que cela change tout seul.

    En résumé, je dois demander :

    1 - Selection des communes égal avec le Num_dept de 1 à 9.
    2 - Tant que X inferieur ou egal à 9, je fais une boucle pour changer les numéros.

    Je pense pouvoir y arriver, je regarde cet am. Si besoin, je viendrai chercher de l'aide.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Almeyric
    Inscrit en
    Octobre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Almeyric
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 53
    Points : 20
    Points
    20
    Par défaut
    Bon j'ai réussi à ne plus avoir de non correspondance.

    Donc j'ai modifié les Num_Dept dans la tbl_Communes avec la fonction rechercher et remplacer. Mais je n'arrive toujours pas à appliquer l'intégrité.

    Pourtant la requête de non correspondance entre les deux tables avec le type de jointure différents me donne toujours le même résultats.

    Acces me dit toujours que ma tbl_Communes ne respectent pas les règles !!

  11. #11
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Peux tu envoyer une base avec tes deux tables ?
    Que je regarde
    @+


    Pensez au tag

  12. #12
    Membre à l'essai
    Homme Profil pro
    Almeyric
    Inscrit en
    Octobre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Almeyric
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 53
    Points : 20
    Points
    20
    Par défaut
    Voici la base

    http://ovh.to/1AT5w7Z

    Tu remarqueras que j'avance un petit peu.

  13. #13
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Le sens de la relation de ta requête n'était pas le bon ni le critère

    Voila la solution:
    Nom : Sans titre.png
Affichages : 74
Taille : 16,0 Ko

    Et il existe bien des commune avec un N° de département qui n'existe pas dans ta table
    Nom : Sans titre.png
Affichages : 81
Taille : 9,3 Ko

    Crée le département "20" dans ta table et le problème sera résolut
    @+


    Pensez au tag

  14. #14
    Membre à l'essai
    Homme Profil pro
    Almeyric
    Inscrit en
    Octobre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Almeyric
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 53
    Points : 20
    Points
    20
    Par défaut
    Ah quel plouc, je modifiais la relation dans les relations principales, et pas la relation dans la requête.

    Ce sont deux villes de l'aisne. Problème résolu.

    Merci Didier.

  15. #15
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Merci donc de penser au tag "Résolu"
    @+


    Pensez au tag

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Modélisation base de données pour la gestion des Aidants-Accueillant
    Par Almeyric dans le forum Modélisation
    Réponses: 21
    Dernier message: 16/04/2015, 18h30
  2. Projet gestion d'arrachage de betterave avec PDA + DGPS
    Par gueulederack dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/03/2007, 14h15
  3. Projet gestion dvd's
    Par nerod81 dans le forum Access
    Réponses: 1
    Dernier message: 06/12/2006, 23h45
  4. Projet : Gestion d'un club de foot
    Par rar77 dans le forum WinDev
    Réponses: 2
    Dernier message: 31/10/2006, 01h18
  5. [conception] projet "gestion d'un hotel"
    Par vincent02 dans le forum Modélisation
    Réponses: 4
    Dernier message: 08/03/2006, 18h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo