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

Langage SQL Discussion :

organisation de table


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 145
    Points : 77
    Points
    77
    Par défaut organisation de table
    Bonjour,

    j'ai 3 tables : Affaire, societe et contact

    Affaire => id_affaire, id_contact
    Contact => id_contact, id_societe
    societe => id_societe , societe

    pour avoir le nom de la societe societe auquelle appartient l'affaire je fais une jointure.
    Mais voila (et oui il y a toujours un mais...) si mon contact change de societé toutes les affaires change aussi de société or la problème.

    donc je pensais juste modifier affaire et ajouter id_societe
    Affaire => id_affaire, id_contact, id_societe
    Contact => id_contact, id_societe
    societe => id_societe , societe

    mais est ce que cela est judicieux?

    Merci pour vos reponses.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Je conserverais le id_societe dans affaire et le supprimerais dans la table contact.

    En effet, un contact reste une personne physique simple et vous ne duppliquez pas ses informations propres. Ainsi, une même personne peut intervenir sur des affaires pour des sociétés différentes.

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    donc ca veut dire que si j'ai le contact il faut qu eje repasse par l'affaire pour avoir le client... c'est un peu bizarre non?

    sachant que ces trois tables ne sont qu'une partie de ma base

  4. #4
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    vmolines, le contact est le contact au sein de la société pour une ou plusieurs affaires données de la société je pense.

    tangozoulou, je pense qu'une construction plus adaptée serait effectivement de rajouter l'id_societe au sein de la table affaires, et de passer tous les id_contact à 0 ou NULL lorsque le contact change de société. Cela vous obligera alors à reprendre un contact au sein de la bonne société, non ?

  5. #5
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    en fait voici mon probleme.

    un contact appartient à une societé et il a des affaires.

    un jour ce contact change de societe.
    je ne veux pas créer un nouveau contact identique et desactiver l'ancien car je n'aurais pas d'historique sur ce contact.

    le probleme c'est que si je transfere juste le contact, toutes les affaires qu'il avait dans l'ancienne societe iront vers la nouvelle.

    donc a part ajouter id_client dans l'affaire, je ne vois pas comment faire.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Tu parles des tables contact, société et affaires et maintenant parles d'id_client. Tu as déjà vu que les deux personnes qui ont essayé de t'aider (et dont je fais partie) ont eu une interprétation différente de ton énoncé. Ca ne te dérangerait pas d'énoncer quelquechose de clair pour définir tes besoins ? Et ne parle pas de table, parle de besoin car on ne pourra pas corriger ta structure de tables si on ne comprend pas tes besoins.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    je vais tenter de vous expliquer ce qu'il a voulu dire (a mon sens)

    nom membre |société affiliée|affaires
    george champs et forets test

    et un jour, il aimerait faire :

    nom membre |société affiliée|affaires
    george vigne et caillou test

    tout ça en gardant les affaire classées par george dans la société champs et forets.

    mais il me faudrait confirmation

  8. #8
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    A un instant T1
    Mr Dupont travaille pour la societe A sur l'affaire A

    A un instant T2
    Mr Dupont travaille pour la societe B sur l'affaire B

    ce que je cherche à obtenir :
    * savoir qui a travaillé dans la société A les personnes actives et inactives(Mr dupont)
    * l'historique des information sur Mr Dupont le fait qu'il ait travaillé sur l'affaire A avec la societe A et sur l'affaire B avec la societe B

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    alors dans ce cas là, je conseil une table de relation entre les personnes et les société et les affaires avec comme info :

    id_contact,id_société,id_affaire,radiation (actif ou non) et par exemple, date
    table contact --> id_contact, nom,....
    table société --> id_société,nom_société,...
    table affaire --> id_affaire,nom_affaire,...

    ou, plus simple, dans le cas ou une affaire ne concerne qu'une société et qu'un contact:
    edit :

    table affaire -->id_affaire,nom_affaire,fk_relation...
    table relation -->id_relation, id_contact, id_société,radiation (actif ou non),...
    table société --> id_société,nom_société,...
    table contact --> id_contact, nom,....

    le fk_relation sera le meme que le id_relation
    si c'est pas claire, je fait un schéma avec des tables

  10. #10
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Je ne vois pas l'intérêt de la table relation.

    Comme je l'ai déjà dit, en ayant id_société et id_contact dans la table affaire on répond bien à :

    l'historique des information sur Mr Dupont le fait qu'il ait travaillé sur l'affaire A avec la societe A et sur l'affaire B avec la societe B
    voici la requête qui donne cette information avec le modèle que je suggère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM affaire WHERE id_contact = <id Mr Dupont>

    Pour les autres prédicats que tu as fournis :

    savoir qui a travaillé dans la société A
    voici la requête qui donne cette information avec le modèle que je suggère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT id_contact FROM affaire WHERE societe = A -- A étant l'id de la société recherchée
    les personnes actives et inactives(Mr dupont)
    Pour ça il suffit d'ajouter un booleen au niveau du contact (personne) pour savoir s'il est actif ou non

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    mais dans ce cas la, il faudra a toutes les entrée écrire l'entreprise a laquel le contact fait partie

    votre booleen, vous le mettez ou ? a chaque affaire ? Car je pense que ce booleen permet de savoir que Mr Dupont est inactif dans la société A mais qu'il travail désormais dans la société B (autrement dit, Mr Dupont est toujours actif mais pas dans la société A, donc une info au niveau du contact permettrait seulement de dire que Mr Dupont travail encore ou non).
    Voila la raison de ma table relation

  12. #12
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    mais dans ce cas la, il faudra a toutes les entrée écrire l'entreprise a laquel le contact fait partie
    Oui c'est ce qui fait la notion d'historique. Si vous souhaitez savoir la société actuelle d'un contact, ajouter un id_societe au niveau du contact suffit. Il peut changer, vous saurez dans quelle société il était au moment de l'affaire grâce à id_société dans la table affaire.


    votre booleen, vous le mettez ou ? a chaque affaire ? Car je pense que ce booleen permet de savoir que Mr Dupont est inactif dans la société A mais qu'il travail désormais dans la société B
    Le booléen serait dans contact pour savoir si un contact est à l'heure actuelle acif ou non, c'est ce que demande Tango. Pas dans chaque affaire, ça n'a aucun sens un contact actif/inactif dans une affaire.


    Pour conclure, le modèle n'a pas besoin d'une table relation et j'ai montré qu'on répondait bien à la demande sans cette table.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    pour le premier point nous sommes d'accord. mais pour le deuxième, je pense que l'intéret, c'est de faire une requete sur la société et ainsi avoir les personne qui bossent actuellement dans cette société (actifs) et ceux qui ont eu travaillé dans cette société(inactif), pour ainsi garder un historique de travail dans les sociétés

    Mais bon, on ne va pas se tapper dessus, on va attendre sa réponse et son point de vu

  14. #14
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Préciser qu'une affaire est en cours (actif) ou terminée (inactif) n'était pas précisé me semble-t-il.

    De toute façon l'expression des besoins est insuffisante donc il est normal que la spéculation aille bon train.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    je ne vous parle pas de l'affaire, mais du travail d'un contact dans une société.

    vous avez raison quand vous dites que l'expression des besoins est insuffisante. il nous faut donc attendre son retour

  16. #16
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    et bien que de réponses !!

    merci à vous !

    pour obtenir les personnes active et inactive de la société je pensais a deux solutions :
    - avoir une table qui gérerait les deplacements cad une date, id_contact et id_societe. des qu'un contact change de societe j'ajoute une ligne dans cette table
    - ou faire un systeme de noeud cad que je ne déplace plus le contact d'une societe A vers une societe B mais je le duplique en gardant un lien du contact de la societe A vers le contact de la societe B cela me permettrait d'eviter de remodifier ma table affaire, d'avoir les contact actif et inactif et aussi d'avoir l'historique de Mr Dupond

  17. #17
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Vous demandez si votre structure est judicieuse sans décrire votre besoin. Il est impossible de juger de la qualité d'une structure si le besoin auquel elle doit répondre n'est pas clairement défini.

    Donc soit vous demandez de l'aide en précisant les éléments nécessaires pour que des personnes vous apportent cette aide, soit vous ne demandez pas d'aide.

    C'est si difficile à comprendre ?


    J'ai une table maison qui doit gérer la location de maison, j'ai défini la table comme suit :

    T_MAISON :

    ID_MAISON (idauto)
    Adresse (texte)
    LOUEE (booléen)

    Est ce que c'est judicieux ?

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    dans le cas ou la structure est déja en place et qu'il y a déja des enregistrements, je vous déconseil la première solution, car ça peut poser des problèmes de relations.Bien que je pense que c'est la solutions qui permet le plus d'évolutivité à votre base

    Sinon, pour la deuxième, vous voudriez dire que l'enregistrement de Mr Dupont apparaitrait plusieurs fois dans la table contact ? si oui, c'est une bonne solutions bien qu'il est plus difficile de gérer l'ajout d'enregistrement (dans le cas d'un forumulaire utilisé par un utilisateur basique (n'ayant aucune idée en access))

  19. #19
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Ma problématique :


    A un instant T1
    Mr Dupont travaille pour la societe A sur l'affaire A

    A un instant T2
    Mr Dupont travaille pour la societe B sur l'affaire B

    ce que je cherche à obtenir :
    * savoir qui a travaillé dans la société A les personnes actives et inactives(Mr dupont)
    * l'historique des information sur Mr Dupont le fait qu'il ait travaillé sur l'affaire A avec la societe A et sur l'affaire B avec la societe B

    Ma structure existante:
    Affaire => id_affaire, id_contact
    Contact => id_contact, id_societe
    societe => id_societe , societe


    Ma structure proposés :
    Affaire => id_affaire, id_contact, id_societe
    Contact => id_contact, id_societe
    societe => id_societe , societe

    plus

    pour obtenir les personnes active et inactive de la société je pensais a deux solutions :
    - avoir une table qui gérerait les deplacements cad une date, id_contact et id_societe. des qu'un contact change de societe j'ajoute une ligne dans cette table
    - ou faire un systeme de noeud cad que je ne déplace plus le contact d'une societe A vers une societe B mais je le duplique en gardant un lien du contact de la societe A vers le contact de la societe B cela me permettrait d'eviter de remodifier ma table affaire, d'avoir les contact actif et inactif et aussi d'avoir l'historique de Mr Dupond

  20. #20
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Pour moi c'est parfait.

Discussions similaires

  1. [MLD] Organisation de table , n enfants et m parents.
    Par ithurts dans le forum Schéma
    Réponses: 4
    Dernier message: 28/10/2010, 14h33
  2. [MLD] Conseil sur l'organisation de tables
    Par Eruvatar dans le forum Schéma
    Réponses: 3
    Dernier message: 12/11/2009, 15h28
  3. Réponses: 1
    Dernier message: 29/04/2009, 02h41
  4. 2 solutions d'organisation des tables, laquelle choisir ?
    Par keaton7 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 18/03/2009, 17h49
  5. Comment organiser ma table ?
    Par Tatoine dans le forum Access
    Réponses: 5
    Dernier message: 18/08/2006, 11h27

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