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

Schéma Discussion :

Conseil sur modélisation


Sujet :

Schéma

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut Conseil sur modélisation
    Bonjour,

    j'aimerais votre avis sur ces 2 options de modélisation que j'ai trouvé :
    Voici les tables concernés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    T_PIECE(id,nom,coul,design..)
    T_Kit(id,nom)
    T_LIGNE_KIT(#idkit,#idpiece,nbpiece)
    
    PROJET(id,nom,datedeb...)
    
    POSTE(id,#idProjet#,refPieceKit,estunkit,qte ...)
    Un kit contient de 1 à N différentes pieces.
    Les 3 premières tables sont des tables de référence, qui inidiquent le matériel dispo dans l'etablissement.
    Cet établissement effectue donc différents projets en meme temps. Donc lorque l'on va utiliser une piece ou un kit pour un projet, il devient un POSTE. La table poste va donc contenir les liste de toutes les pieces et Kits impliqués dans les projet, et je pense que grace à la clef étrangére(idprojet) je peux a tout moment recupérer les pieces et Kit concernés par un projet en particulier.

    Mon problème est de savoir comment gérer les kits quand ils sont impliqués dans un projet. D'après vous un champs booléen 'estunkit' suffirait il ? Ou serait il préférable de créer un table poste mais pour les kits ? Ce qui m'obligerait a voir 2 tables pour gérer les Pieces et Kits impliqués dans les projets.

    J'espère ne pas avoir été trop confus dans mes explications,
    Merci d'avance.

    Tankian.
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    A vue de nez tu as plusieurs solutions (problème d'héritage) :
    1) la tienne : POSTE (IdPoste, #IdProjet, IdPieceouKit, estunkit...)
    mon avis : la pire ;-) parce que tu ne peux pas définir d'intégrité référentiel.
    2) POSTE (IdPoste, #IdProjet, #IdPiece, #IdKit, ... ) (l'un des deux (IdKit, IdPiece) étant NULL, la clé primaire ne peux les contenir)
    3) POSTEKIT (#IdProjet, #IdKit, ... )
    POSTEPIECE (#IdProjet, #IdPiece, ... )
    4) POSTE (IdPoste, #IdProjet, toutes les informations communes)
    POSTEKIT (IdPoste, #IdKit, ... )
    POSTEPIECE (IdPoste, #IdPiece, ... )
    5) Tu définis des kits constitués d'une seule pièce, comme cela POSTE ne contient que des kits (redondance pour chaque pièce)
    J'ai une préférence pour la 3 ou la 4 en fonction du nombre de données communes ; plus clairement : je n'aime pas du tout la 2 et encore moins la 1, la 5 est une pirouette.
    Dans les solutions 3 et 4 tu peux toujours reconstruire l'ensemble des postes par des vues (union)

    [edit] Correction de quelques bêtises sur le cas 4[/edit]
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut
    Merci beaucoup.

    Ce MCD (car il est plus vaste) me pose beaucoup de problème et les différentes solutions que tu me proposes pour la gestion de cette contrainte m'aident beaucoup.
    En fait au départ j'avais fait mon MCD comme ta solution 4 le proposait, cela dit, j'ai peur de me retrouver avec 2 numéros de poste identique (sur POSTEKIT et POSTEPIECE). Je m'explique, au niveau de la base de données, on sait que le poste est identifiable via l'id + le ref soit du kit ou de la piece (en fonction de la table) mais pour l'utilisateur, le numéro qui doit s'afficher à l'écran est : Projet + Famille + numéro
    Projet c'est la ref projet
    Famille est un numéro choisit parmis 10 différents (donc redondant)
    numéro : je dois incrémenter les poste de 0 à N suivant chaque projet.

    Donc une fois que la personne saisie ses postes, en faisant un select sur tous les postes des 2 tables elle se retrouve forcément avec 2 postes ayant le meme numéro, certains désigant des kits, d'autres des pieces...

    Du coup je dois trouver une astuce évitant ce pb.

    En tout cas merci beaucoup de ton aide

    Bonne journée
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    J'ai rectifié le cas 4 (erreurs et présentation ), tel qu'il est cela devrait résoudre ton problème (il ne peut y avoir deux postes avec le même N° pour un même projet).

    J'ai déclaré dans la table POSTE (IdPoste, IdProjet) comme clé primaire, ce qui te permet de renuméroter à partir de 1 pour chaque Projet.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut
    Ah oui exact, le cas 4 remplit toutes les contraintes que j'avais
    Cela dit, idPoste de la table POSTE() est une clef numérique que je dois incrémenter manuellement afin de pouvoir repartir de 0 qd on saisie les postes d'un nouveau projet ?

    Merci pour ton aide précieuse [/b]
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Tankian
    Cela dit, idPoste de la table POSTE() est une clef numérique que je dois incrémenter manuellement afin de pouvoir repartir de 0 qd on saisie les postes d'un nouveau projet ?
    Oui, c'est l'inconvénient, d'un autre côté locker tous les postes d'un même projet le temps de les créer ne devrait pas poser trop de problèmes.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut
    Oui oui c'est sur...
    Je pense que c'est de toute façon la solution la plus adaptée.

    Une dernière fois merci.
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut
    Je pense que de toute façon c'est la solution la plus adaptée aux contraintes de gestion.

    Une dernière fos merci pour ton aide.
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

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

Discussions similaires

  1. Conseils sur la persistance
    Par le Daoud dans le forum Persistance des données
    Réponses: 3
    Dernier message: 14/12/2004, 13h34
  2. [JSP-Servlet] Conseils sur façon de coder
    Par gunnm dans le forum Servlets/JSP
    Réponses: 20
    Dernier message: 09/12/2004, 20h57
  3. cherche conseil sur livre pour jbuilder
    Par med1 dans le forum JBuilder
    Réponses: 3
    Dernier message: 09/06/2004, 13h33
  4. [débutant] conseils sur contraintes et alter table
    Par maysa dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 26/05/2004, 09h03
  5. Recherche Livre / Conseils sur la conception de Base
    Par Yeuma dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 02/01/2004, 14h25

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