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 :

[aide] Relations et Choix des clés étrangères dans mes tables


Sujet :

Schéma

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut [aide] Relations et Choix des clés étrangères dans mes tables
    Salut à tous,

    Voici une ébauche de ma BDD de gestion de materiels informatique (simple)


    Nom : BDD.JPG
Affichages : 1660
Taille : 206,5 Ko


    Ça fait très longtemps que je n'ai pas modélisé de BDD et je bute sur les clés étrangères
    J'ai lu pas mal de cours sur les relations entre les tables mais j'ai l'impression que plus j'en lis, plus je suis perdu.

    Voici les régles de bases dont je me suis basé pour faire mes relations entre mes tables :
    Un utilisateur possède un ordinateur
    Un utilisateur peut ne pas posséder de téléphone_ip
    Un ordinateur peut ou pas être branché sur une prise_réseau
    Un ordinateur peut ou pas être relié à une imprimante
    Un ordinateur peut appartenir à plusieurs utilisateurs
    Un téléphone est toujours branché sur une prise_réseau
    Une imprimante peut ou pas être branchée sur une prise_réseau
    Une prise réseau peut ou pas être reliée au port d'un switch (j'ai mis 1,1 car je ne sais pas si je renseigne les prises libres dans ma table)

    Pouvez vous me dire si ce que j'ai fait est correct pour le moment ? Sinon, des pistes pour corriger mes erreurs.
    Et surtout je n'arrive pas a me décider dans quelles tables placer les clés étrangères.

    merci à vous.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par steak34 Voir le message
    Ça fait très longtemps que je n'ai pas modélisé de BDD et je bute sur les clés étrangères
    J'ai lu pas mal de cours sur les relations entre les tables mais j'ai l'impression que plus j'en lis, plus je suis perdu.
    Bonjour,
    C'est beaucoup plus simple de démarrer au niveau conceptuel c'est à dire le MCD, car du MCD dérive le MLD et donc les clefs étrangères

    Vous avez rédigé les règles de gestion, c'est très bien, malheureusement elles sont incomplètes

    Par exemple (je me suis permis d'identifier vos règles par des numéros, ca facilite leur suivi), en vert ce qui manque :

    R001a : Un utilisateur possède un ordinateur <= possède un et un seul, un à plusieurs ? à préciser
    R001b : un ordinateur est possédé par un et un seul utilisateur, par un à plusieurs utilisateurs, par zéro ou un seul utilisateur... à préciser

    R002a : Un utilisateur peut ne pas posséder de téléphone_ip, il peut en posseder plusieurs ? un seul ?
    R002b : Un téléphone_ip peut être possédé par zéro à plusieurs utilisateurs, un et un seul... à préciser

    Etc...
    Les règles doivent être rédigées sans équivoque, et il faut à minima deux règles par relation

    Selon que les relations ont des cardinalités n de chaque coté ou pas, soit elle deviendront des tables (auquel cas pas de FK dans les tables issues des entités-type) soit elle ne deviendront pas des tables, et les FK apparaitront dans les tables issues des entités-type coté 1 de la relation.
    Il faut donc bien commencer par les règles de gestion précises et complètes

    Pour info, cette question est sans rapport avec le langage SQL, elle concerne la modélisation dont le forum est ici : https://www.developpez.net/forums/f6...sation/schema/

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Pour vous aider, voir mon billet de blog sur les règles de gestion des données.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre aide.

    d’après le billet de blog sur les règles de gestion des données, j'ai écrit les règles suivantes :

    Un ORDINATEUR est possédé par 0 ou plusieurs UTILISATEUR (pas d'utilisateurs pour les ORDINATEURS en stock)
    Un UTILISATEUR possède 0 ou 1 ORDINATEUR

    Un TELEPHONE est possédé par 0 ou 1 UTILISATEUR (pas d'utilisateurs pour les TELEPHONES en stock)
    Un UTILISATEUR possède 0 ou 1 TELEPHONE

    Un ORDINATEUR est relié à 0 ou 1 TELEPHONE
    Un TELEPHONE est relié à 0 ou 1 ORDINATEUR

    Un ORDINATEUR est connecté à 0 ou 1 PRISE_RESEAU
    Une PRISE_RESEAU est connectée à 0 ou 1 ORDINATEUR

    Un TELEPHONE est connecté à 1 seule PRISE_RESEAU
    Une PRISE_RESEAU est connectée à 0 ou 1 TELEPHONE

    Une IMPRIMANTE est connectée 1 seule PRISE_RESEAU
    Une PRISE_RESEAU est connectée à 0 ou 1 IMPRIMANTE

    Une PRISE_RESEAU est connectée à 0 ou 1 PORT_SWITCH
    Un PORT_SWITCH est connecté à 0 ou 1 PRISE_RESEAU

    J'en ai déduit ce MCD :

    Nom : MCD_relations.JPG
Affichages : 583
Taille : 231,6 Ko

    Est-ce que cela vous semble correct ?
    Je ne suis pas sur si je peux utiliser plusieurs fois les termes CONNECTER ou POSSEDER.

    merci !

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Donc,

    Citation Envoyé par steak34 Voir le message
    Un ORDINATEUR est possédé par 0 ou plusieurs UTILISATEUR (pas d'utilisateurs pour les ORDINATEURS en stock)
    Un UTILISATEUR possède 0 ou 1 ORDINATEUR
    Cette relation de possession est peut être à date, sinon, un même ordinateur à un même instant peut être possédé par plusieurs utilisateurs
    Est-ce bien le cas ?
    Dans l'affirmative, peut être manque-t-il la notion de responsabilité, car si possédé par plusieurs utilisateurs, il est probablement sous la responsabilité d'un seul d'entre eux
    C'est dommage de n'avoir pas conservé la numérotation des règles que je vous avais proposée, c'est plus simple de parler de la règle R002b par exemple, que de devoir citer tout son texte complet à chaque fois ...

    Citation Envoyé par steak34 Voir le message
    Un UTILISATEUR possède 0 ou 1 TELEPHONE
    Ne devez vous jamais, pour un même utilisateur, connaitre son téléphone fixe de bureau, son portable pro, son portable d'astreinte ?...

    Citation Envoyé par steak34 Voir le message
    Une IMPRIMANTE est connectée 1 seule PRISE_RESEAU
    Probablement à au plus une, sans doute avez vous des imprimantes non connectées (en stock, en réparation...) à confirmer et compléter

    Citation Envoyé par steak34 Voir le message
    Je ne suis pas sur si je peux utiliser plusieurs fois les termes CONNECTER ou POSSEDER.
    Ca n'est pas recommandé car ça nuit à la clarté du propos, mais ce n'est pas grave si les relations en questions ne deviennent pas des tables
    Dans certains cas, faute d'imagination, il m'arrive de nommer mes relations R001, R002 ...

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Un ORDINATEUR est possédé par 0 ou plusieurs UTILISATEUR (pas d'utilisateurs pour les ORDINATEURS en stock)
    Un UTILISATEUR possède 0 ou 1 ORDINATEUR
    Ce n'est pas exactement comme ça que j'exprime les règles de gestion mais admettons...

    Votre règle signifie qu'un ordinateur peut avoir plusieurs utilisateurs en même temps mais qu'un utilisateur ne pourra utiliser qu'un seul ordinateur ? Êtes-vous sûr de votre règle ?

    Chez nous, un ordinateur est affecté à un instant t au plus à un seul utilisateur (ou au stock donc pas à un utilisateur) mais un utilisateur peut avoir plusieurs ordinateurs (j'ai encore mon ancien ordinateur sur mon bureau, des collègues peuvent se voir affecter un ordinateur de bureau et un portable...).

    Un TELEPHONE est possédé par 0 ou 1 UTILISATEUR (pas d'utilisateurs pour les TELEPHONES en stock)
    Un UTILISATEUR possède 0 ou 1 TELEPHONE
    C'est possible... sauf si plusieurs utilisateurs se partagent le même téléphone (1 téléphone dans un bureau de 2 personnes parce qu'il n'y a pas assez de prises pour en brancher deux, 1 téléphone portable d'astreinte confié à tour de rôle à plusieurs utilisateurs, un téléphone de service et c'est celui qui est là à se moment là qui décroche, donc affecté potentiellement à tous les membres du service...).

    Un ORDINATEUR est connecté à 0 ou 1 PRISE_RESEAU
    Une PRISE_RESEAU est connectée à 0 ou 1 ORDINATEUR
    OK, si aucun de vos ordinateur ne possède plus d'une carte réseau.

    Un TELEPHONE est connecté à 1 seule PRISE_RESEAU
    Une PRISE_RESEAU est connectée à 0 ou 1 TELEPHONE
    OK.

    Une IMPRIMANTE est connectée 1 seule PRISE_RESEAU
    Une PRISE_RESEAU est connectée à 0 ou 1 IMPRIMANTE
    OK.

    Une PRISE_RESEAU est connectée à 0 ou 1 PORT_SWITCH
    Un PORT_SWITCH est connecté à 0 ou 1 PRISE_RESEAU
    OK.

    Dans le MCD...
    1) Ne pas utiliser de propriétés signifiantes comme clé ; préférer l'ajout d'un identifiant technique de type entier et auto-incrémenté qui servira de clé primaire à la table.

    2) Externaliser les marques pour éviter de se retrouver avec la même marque enregistrée sous diverses orthographes. En plus, ça prend moins de place et c'est plus facile et moins lourd à mettre à jour.
    Ordinateur -1,1----vendre----0,n- Marque -0,n----vendre----1,1- Imprimante

    3) Nommez vos entités-types au singulier !
    La règle de gestion décrit ce qu'il se passe vu depuis UN ordinateur et UN utilisateur.
    Ça évite des ambiguïtés dans certains cas.

    4) Que représente service_tag dans Ordinateur ?

    5) Vous appelez l'entité-type "Switchs" (en fait, c'est switches au pluriel mais j'ai dit plus haut qu'il faut nommer au singulier) alors que les propriétés et les règles de gestion parlent du port d'un switch.
    Peut-être vous manque t-il la partie modélisation des switches...
    Je vous laisse y réfléchir.

    6) Revoyez les types des propriétés !
    Le type TEXT est pour les textes longs. Il vaut mieux utiliser CHAR (à taille fixe) ou VARCHAR (à taille variable) dans la plupart des cas.
    Les dates s'enregistrent sous un type DATE ou DATETIME ou TIMESTAMP.
    Un switch ayant peu de ports, vous pouvez utiliser le type TINYINT qui va jusqu'à 255.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Cette relation de possession est peut être à date, sinon, un même ordinateur à un même instant peut être possédé par plusieurs utilisateurs
    Est-ce bien le cas ?
    Dans l'affirmative, peut être manque-t-il la notion de responsabilité, car si possédé par plusieurs utilisateurs, il est probablement sous la responsabilité d'un seul d'entre eux
    Par exemple, il y a une personne qui travaille du lundi au mercredi et qui utilise l'ordinateur numéro 3, ce même ordinateur est utilisé par une autre personne du jeudi au vendredi. (ces jours peuvent varier)
    Si ce n'est pas bien au niveau des relations, comment je peux gérer ces cas-là ? mettre cet ordinateur dans une catégorie "ordinateur de prêt" ? mais comment savoir à qui il appartient quand je le recherche dans mon appli ?

    Citation Envoyé par escartefigue Voir le message
    Ne devez vous jamais, pour un même utilisateur, connaitre son téléphone fixe de bureau, son portable pro, son portable d'astreinte ?...
    Un utilisateur peut ne pas avoir de téléphone du tout oui. Et si on doit le joindre il a un numéro de téléphone portable (cellulaire dans la table utilisateurs) ce numéro de téléphone portable est optionnel
    La table Telephones ne concerne que les telephones ip du bureau. Je vais modifier le nom de la table

    Citation Envoyé par escartefigue Voir le message
    Probablement à au plus une, sans doute avez vous des imprimantes non connectées (en stock, en réparation...) à confirmer et compléter
    Les imprimantes peuvent être USB ou réseau (pas les deux en même temps) et il n'y a pas d'imprimante en stock (des qu'elles arrivent elles sont branchées immédiatement)

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Votre règle signifie qu'un ordinateur peut avoir plusieurs utilisateurs en même temps mais qu'un utilisateur ne pourra utiliser qu'un seul ordinateur ? Êtes-vous sûr de votre règle ?

    Chez nous, un ordinateur est affecté à un instant t au plus à un seul utilisateur (ou au stock donc pas à un utilisateur) mais un utilisateur peut avoir plusieurs ordinateurs (j'ai encore mon ancien ordinateur sur mon bureau, des collègues peuvent se voir affecter un ordinateur de bureau et un portable...).
    Un ordinateur peut être partagé mais pas au même moment T :
    Par exemple, il y a une personne qui travaille du lundi au mercredi et qui utilise l'ordinateur numéro 3, ce même ordinateur est utilisé par une autre personne du jeudi au vendredi. (ces jours peuvent varier)
    Les anciens ordinateurs des utilisateurs lui sont retirés (soit détruits, soit utilisés en ordinateur de prêt)

    Citation Envoyé par CinePhil Voir le message
    C'est possible... sauf si plusieurs utilisateurs se partagent le même téléphone (1 téléphone dans un bureau de 2 personnes parce qu'il n'y a pas assez de prises pour en brancher deux, 1 téléphone portable d'astreinte confié à tour de rôle à plusieurs utilisateurs, un téléphone de service et c'est celui qui est là à se moment là qui décroche, donc affecté potentiellement à tous les membres du service...).
    Aucun téléphone n'est partagé car une extension (numéro de téléphone) correspond à un seul utilisateur.

    Citation Envoyé par CinePhil Voir le message
    OK, si aucun de vos ordinateur ne possède plus d'une carte réseau.
    uniquement des pc avec une seule prise réseau

    Citation Envoyé par CinePhil Voir le message
    Dans le MCD...
    1) Ne pas utiliser de propriétés signifiantes comme clé ; préférer l'ajout d'un identifiant technique de type entier et auto-incrémenté qui servira de clé primaire à la table.
    Je comprend mon erreur, si un jour on change la façon d'identifier les ordinateurs par exemple, ça va poser des problèmes.
    Je vais donc ajouter des clés primaires ID (uniques, auto incrémentées et Integer)

    Citation Envoyé par CinePhil Voir le message
    2) Externaliser les marques pour éviter de se retrouver avec la même marque enregistrée sous diverses orthographes. En plus, ça prend moins de place et c'est plus facile et moins lourd à mettre à jour.
    Ordinateur -1,1----vendre----0,n- Marque -0,n----vendre----1,1- Imprimante
    OK, je vais ajouter une table pour ça

    Citation Envoyé par CinePhil Voir le message
    3) Nommez vos entités-types au singulier !
    La règle de gestion décrit ce qu'il se passe vu depuis UN ordinateur et UN utilisateur.
    Ça évite des ambiguïtés dans certains cas.
    Je vais modifier

    Citation Envoyé par CinePhil Voir le message
    4) Que représente service_tag dans Ordinateur ?
    c'est l’équivalent du numéro de série (unique) de l'ordinateur

    Citation Envoyé par CinePhil Voir le message
    5) Vous appelez l'entité-type "Switchs" (en fait, c'est switches au pluriel mais j'ai dit plus haut qu'il faut nommer au singulier) alors que les propriétés et les règles de gestion parlent du port d'un switch.
    Peut-être vous manque t-il la partie modélisation des switches...
    Je vous laisse y réfléchir.
    Oui je vais travailler sur cette partie qui est un peu compliquée pour moi

    Citation Envoyé par CinePhil Voir le message
    6) Revoyez les types des propriétés !
    Le type TEXT est pour les textes longs. Il vaut mieux utiliser CHAR (à taille fixe) ou VARCHAR (à taille variable) dans la plupart des cas.
    Les dates s'enregistrent sous un type DATE ou DATETIME ou TIMESTAMP.
    Un switch ayant peu de ports, vous pouvez utiliser le type TINYINT qui va jusqu'à 255.
    Ces types ont été choisis automatiquement par mon appli de modélisation car je vais utiliser SQLite 3



    merci pour toutes vos infos.

    Voici les modification apportées :

    Nom : MCD_relations.JPG
Affichages : 514
Taille : 110,2 Ko

    et les règles revues et corrigées :

    regles m_m :
    une marque fabrique au moins 1 à plusieurs modeles (1,n)
    un modele est fabriqué par 1 seule marque (1,1)

    regles m_o :
    un modele correspond à aucun ou 1 seul ordinateur (0,1)
    un ordinateur correspond à 1 seul modele (1,1)

    regles m_i :
    un modele correspond à aucune ou 1 seule imprimante (0,1)
    une imprimante correspond à 1 seul modele (1,1)

    regles u_o :
    un utilisateur utilise aucun ou 1 seul ordinateur (0,1)
    un ordinateur est utilisé par aucun ou 1 seul utilisateur (0,1)
    info : un seul ordinateur par personne. Des ordinateurs peuvent être en stock et attribués à personne. Peu importe si c'est un portable ou une tour

    regles u_t :
    un utilisateur possède aucun ou 1 seul telephone_ip (0,1)
    un telephone_ip est utilisé par aucun ou 1 seul utilisateur (0,1)
    info : oui il y des utilisateur sans telephone_ip de bureau, on les contacte sur leur telephone portable. on ne partage pas les telephones_ip

    regles o_t :
    un ordinateur est relié à aucun ou 1 seul telephone_ip (0,1)
    un telephone_ip est relié à aucun ou 1 seul ordinateur (0,1)

    regles o_p :
    un ordinateur est connecté à aucune ou 1 seule prise_reseau (0,1)
    une prise réseau est connectée à aucun ou 1 seul ordinateur (0,1)
    info : un ordinateur peut être relié au réseau par Wifi

    regles t_r :
    un telephone_ip est connecté à aucune ou 1 seule prise_reseau (0,1)
    une prise réseau est connectée à aucun ou 1 seul telephone_ip (0,1)
    info : des telephone_ip peuvent etre en stock attribués à personne

    regles i_p :
    une imprimante est branchée à aucune ou 1 prise_reseau (0,1)
    une prise réseau est connectée à aucun ou 1 seul imprimante (0,1)
    info : une imprimante peut etre branchée réseau ou USB ou en stock

    regles p_s :
    une prise_reseau est reliée à aucun ou 1 seul switch (0,1)
    un switch est relié à au moins une prise_reseau (1,n) (erreur dans l'image)
    info : j'ai retiré les ports des switches car je ne sais pas comment les modéliser.


    Voyez-vous des erreurs ?

    Merci.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    J'ai retravaillé tout ça avec JMerise

    j'obtient ce résultat :

    MCD:
    Nom : MCD.JPG
Affichages : 535
Taille : 98,8 Ko

    regles 001 :
    une marque FOURNIT au moins 1 à plusieurs modeles (1,n)
    un modele est FOURNI par 1 seule marque (1,1)

    regles 002 :
    un modele CONCERNE aucun ou 1 seul ordi (0,1)
    un ordi EST CONCERNÉ PAR à 1 seul modele (1,1)

    regles 003 :
    un modele CORRESPOND à aucune ou 1 seule imprimante (0,1)
    une imprimante CORRESPOND à 1 seul modele (1,1)

    regles 004 :
    un ordi APPARTIENT à aucun ou 1 seul user (0,1)
    un user POSSÈDE aucun ou plusieurs ordis (0,n)

    regles 005 :
    un user A aucun ou 1 seul telephone_ip (0,1)
    un telephone_ip est À aucun ou 1 seul user (0,1)

    regles 006 :
    un ordi est LIÉ à aucun ou 1 seul telephone_ip (0,1)
    un telephone_ip est LIÉ à aucun ou 1 seul ordi (0,1)

    regles 007 :
    un ordinateur est RELIÉ à aucune ou 1 seule prise_reseau (0,1)
    une prise réseau est RELIÉE à aucun ou 1 seul ordinateur (0,1)

    regles 008 :
    un telephone_ip est BRANCHÉ sur aucune ou 1 seule prise_reseau (0,1)
    une prise réseau est BRANCHÉE à aucun ou 1 seul telephone_ip (0,1)

    regles 009 :
    une imprimante est CONNECTÉE à aucune ou 1 prise_reseau (0,1)
    une prise réseau est CONNECTÉE à aucun ou 1 seul imprimante (0,1)

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    C'est une bonne chose d'avoir modélisé avec un outil ad hoc

    Voici mes remarques

    Toutes entités-type et relations
    Le type TEXT est à remplacer par du CHAR si la longueur est courte (moins de 20 caractères environ) ou qu'elle ne varie pas d'une ligne à l'autre.
    Le type TEXT est à remplacer par du VARCHAR si la longueur totale est moyenne ou importante et qu'elle varie d'une ligne à l'autre.
    Le type TEXT est utile pour les textes très long (genre bloc note par exemple)


    relation FOURNIR
    Vous pouvez éventuellement identifier un modèle relativement à une marque : MODELE<1,1> --- fournir --- 1,n MARQUE


    relation CONCERNER
    La cardinalité maxi un côté "MODELE" implique qu'un modèle ne concerne au plus qu'un seul ordinateur, c'est conforme à votre règle de gestion R002 mais très surprenant.
    La RG est probablement à corriger (et le MCD aussi bien sur si confirmé)


    relation APPARTENIR
    Vous aviez répondu ceci précédemment :

    Citation Envoyé par steak34 Voir le message

    Citation Envoyé par escartefigue Voir le message
    Donc,
    Cette relation de possession est peut être à date, sinon, un même ordinateur à un même instant peut être possédé par plusieurs utilisateurs
    Est-ce bien le cas ?
    Dans l'affirmative, peut être manque-t-il la notion de responsabilité, car si possédé par plusieurs utilisateurs, il est probablement sous la responsabilité d'un seul d'entre eux
    Par exemple, il y a une personne qui travaille du lundi au mercredi et qui utilise l'ordinateur numéro 3, ce même ordinateur est utilisé par une autre personne du jeudi au vendredi. (ces jours peuvent varier)
    Or la règle de gestion R004 (et votre MCD) ne correspond pas à cette réponse. Quelle est la bonne version ?
    De plus, il semble que la notion d'appartenance ne soit pas la bonne dans le cas présent, la relation "affecter" me semble plus correspondre à votre cas de figure.

    Si la réponse que vous aviez faite précédemment et citée ci-dessus est la bonne, la notion de période se confirme : il s'agit d'affecter les ordinateurs à des utilisateurs selon les périodes

    Ce qui donne le MCD :
    ORDINATEUR 0,n --- affecter ---> 0,n UTILISATEUR
    PERIODE 0,n -------------┘

    La flèche en direction de l'ET UTILISATEUR est une Contrainte d'Intégrité Fonctionnelle (CIF), qui indique que pour une période et un ordinateur on ne peut affecter qu'un utilisateur.
    Une nouvelle ET "PERIODE" entre donc en jeu pour piloter l'affectation du matériel (Ordinateur et peut être aussi les autres équipements )

    A moins que...
    ... peut être que les personnes qui utilisent le même équipement (ordinateur ou autre) sont des personnes qui se remplacent sur un même poste de travail (rotation d'équipe par exemple).
    Auquel cas le matériel n'est pas affecté à la personne, mais au poste de travail.
    Si c'est le cas, il faut identifier le poste de travail (nouvelle ET) et créer la relation entre le poste et l'équipement concerné.
    Puis faire une relation entre POSTE et UTILISATEUR par PERIODE


    Entités-type MODELE, ORDI et IMPRIMANTE
    Vous pouvez utiliser la généralisation et spécialisation avec l'héritage. ORDI et IMPRIMANTE sont des équipements qui partagent des attributs en commun (n° de série, adresse IP...).
    Ca peut valoir aussi pour les autres équipements (téléphone_IP par exemple)

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    relation CONCERNER
    La cardinalité maxi un côté "MODELE" implique qu'un modèle ne concerne au plus qu'un seul ordinateur, c'est conforme à votre règle de gestion R002 mais très surprenant.
    La RG est probablement à corriger (et le MCD aussi bien sur si confirmé)
    C'est corrigé merci

    Citation Envoyé par escartefigue Voir le message
    relation APPARTENIR
    Vous aviez répondu ceci précédemment :


    Or la règle de gestion R004 (et votre MCD) ne correspond pas à cette réponse. Quelle est la bonne version ?
    De plus, il semble que la notion d'appartenance ne soit pas la bonne dans le cas présent, la relation "affecter" me semble plus correspondre à votre cas de figure.

    Si la réponse que vous aviez faite précédemment et citée ci-dessus est la bonne, la notion de période se confirme : il s'agit d'affecter les ordinateurs à des utilisateurs selon les périodes

    Ce qui donne le MCD :
    ORDINATEUR 0,n --- affecter ---> 0,n UTILISATEUR
    PERIODE 0,n -------------┘

    La flèche en direction de l'ET UTILISATEUR est une Contrainte d'Intégrité Fonctionnelle (CIF), qui indique que pour une période et un ordinateur on ne peut affecter qu'un utilisateur.
    Une nouvelle ET "PERIODE" entre donc en jeu pour piloter l'affectation du matériel (Ordinateur et peut être aussi les autres équipements )

    A moins que...
    ... peut être que les personnes qui utilisent le même équipement (ordinateur ou autre) sont des personnes qui se remplacent sur un même poste de travail (rotation d'équipe par exemple).
    Auquel cas le matériel n'est pas affecté à la personne, mais au poste de travail.
    Si c'est le cas, il faut identifier le poste de travail (nouvelle ET) et créer la relation entre le poste et l'équipement concerné.
    Puis faire une relation entre POSTE et UTILISATEUR par PERIODE
    J'abandonne l'idée de partage d'ordinateur. Si celui-ci est partagé dans le temps, il sera affecté à un seul utilisateur.

    Citation Envoyé par escartefigue Voir le message
    Entités-type MODELE, ORDI et IMPRIMANTE
    Vous pouvez utiliser la généralisation et spécialisation avec l'héritage. ORDI et IMPRIMANTE sont des équipements qui partagent des attributs en commun (n° de série, adresse IP...).
    Ca peut valoir aussi pour les autres équipements (téléphone_IP par exemple)
    Les équipements n'ont pas vraiment d'attributs en commun.

    Voici le MCD corrigé (fait sous PowerAMC)
    J'ai simplifié les associations comme ici BRANCHER si j'ai des 0,1 de chaque coté et CORRESPONDRE mais je ne sais pas si je peux faire ça ?
    Et si cela aura un impact dans le MLD ?
    Nom : MCD.JPG
Affichages : 559
Taille : 59,0 Ko

  12. #12
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Vous êtes en train de vous perdre... et de me perdre aussi

    En effet, votre nouveau schéma est devenu sans rapport avec vos règles de gestion, or il devrait en être l'exact reflet.

    Par exemple, la relation ternaire entre MODELE, ORDI et PRINTER est justifiée par quelles règles de gestion ? a priori aucune : les règles 002 et 003 existent mais ne mettent pas en oeuvre simultanément les 3 ET, elles ne concernent chacune que 2 ET. Il faut donc, d'après vos règles, deux relations distinctes

    La relation à quatre (ca devient graveleux ) que vous avez appelée "brancher" est également très suspecte et sans rapport avec vos règles

    Au passage, pourquoi avoir renommé l'ET "IMPRIMANTE" en "PRINTER", si votre projet est francophone utilisez des termes français, dans le cas contraire, choisissez une langue adaptée, mais pour tous les objets (tables, vues, colonnes...).
    Donc soit par exemple ORDI(nateur) et IMPRIMANTE soit COMPUTER et PRINTER, le mélange des langues est un risque de confusion.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Vous avez tout à fait raison, (je pensais qu'on pouvait simplifier des relations si elles avaient les mêmes cardinalités de chaque coté)
    J'ai corrigé tout ça :

    Nom : MCD.JPG
Affichages : 562
Taille : 65,6 Ko
    regles FOURNIR 001 :
    une marque FOURNIT au moins 1 à plusieurs modèles (1,n)
    un modèle est FOURNI par 1 seule marque (1,1)

    regles CONCERNER 002 :
    un modèle CONCERNE aucun ou plusieurs ordinateurs (0,n)
    un ordinateur EST CONCERNÉ PAR à 1 seul modèle (1,1)

    regles CORRESPONDRE 003 :
    un modèle CORRESPOND à aucune ou plusieurs imprimante (0,n)
    une imprimante CORRESPOND à 1 seul modèle (1,1)

    regles AFFECTER 004 :
    un ordinateur est AFFECTÉ à aucun ou 1 seul utilisateur (0,1)
    un utilisateur se voit AFFECTER aucun ou plusieurs ordinateurs (0,n)

    regles AVOIR 005 :
    un utilisateur A aucun ou 1 seul telephone_ip (0,1)
    un telephone_ip est À aucun ou 1 seul utilisateur (0,1)

    regles LIER 006 :
    un ordinateurs est LIÉ à aucun ou 1 seul telephone_ip (0,1)
    un telephone_ip est LIÉ à aucun ou 1 seul ordinateurs (0,1)

    regles RELIER 007 :
    un ordinateur est RELIÉ à aucune ou 1 seule prise_reseau (0,1)
    une prise réseau est RELIÉE à aucun ou 1 seul ordinateur (0,1)

    regles BRANCHER 008 :
    un telephone_ip est BRANCHÉ sur aucune ou 1 seule prise_reseau (0,1)
    une prise réseau est BRANCHÉE à aucun ou 1 seul telephone_ip (0,1)

    regles CONNECTER 009 :
    une imprimante est CONNECTÉE à aucune ou 1 prise_reseau (0,1)
    une prise réseau est CONNECTÉE à aucun ou 1 seul imprimante (0,1)

    Pensez-vous que je puisse passer au MLD ?

Discussions similaires

  1. 2 clés étrangères dans une table
    Par Fr@ncky dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/02/2018, 16h21
  2. Réponses: 1
    Dernier message: 22/11/2016, 14h23
  3. [Normalisation] Plusieurs clés étrangères dans une table
    Par insane_80 dans le forum Schéma
    Réponses: 13
    Dernier message: 21/11/2014, 22h40
  4. insertion de clés étrangères dans ma table
    Par narama87 dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/04/2009, 14h51
  5. Réponses: 6
    Dernier message: 08/11/2008, 16h37

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