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

 SGBD Discussion :

analyseSI et cardinalité


Sujet :

SGBD

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 95
    Par défaut analyseSI et cardinalité
    bonjour à tous,

    je pense être au bon endroit pour poster, je débute les cours de bases de données donc c'est encore très abstrait pour moi. je dois modeliser la BD d'une bibliothèque sous analyseSI et j'ai du mal a comprendre le fonctionnement des clés étrangères avec ce logiciel. j'ai une entité "livre" avec numéro_livre (la clé), titre, auteur etc.. une entité auteurs avec numéro_auteur (la clé), nom_auteur, prénom_auteur, etc... et une association entre les deux.

    le seul moyen que j'ai trouvé (enfin c'est ce qu'il me semble avec ma faible compréhension du sql) pour que analyseSI utilise la clé de l'entité "auteurs" pour l'attribut auteur de l'entité "livre" c'est de mettre la cardinalité a 0,1. mais si un auteur est dans l'entité auteurs c'est qu'il a écrit de 1 à n livres.

    je voudrais également dans l'autre sens que toutes les occurrences de l'entité "livre" écrites par un même auteur puissent être retrouvés sous forme de clés étrangères dans l’occurrence de l'entité auteur correspondante (en clair que chaque occurrence de l'entité auteur contienne la liste des livres qu'il a écrit) et la je ne vois vraiment pas comment faire (a part peut-etre créer une association qui soit associée à l'entité auteur et ne contenant que des clés d'entités livre?).

    merci d'avance!

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par aperikub Voir le message
    bonjour à tous,

    je pense être au bon endroit pour poster, je débute les cours de bases de données donc c'est encore très abstrait pour moi. je dois modeliser la BD d'une bibliothèque sous analyseSI et j'ai du mal a comprendre le fonctionnement des clés étrangères avec ce logiciel.
    C'est normal, les clef étrangères ne doivent en aucun cas apparaître dans un MCD. Ce sont les associations qui font le lien entre deux entités, association qui se transformerons en FK ou autre en fonction des cardinalité !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 603
    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 603
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par aperikub Voir le message
    j'ai une entité "livre" avec numéro_livre (la clé), titre, auteur etc..
    Ça commence mal : au niveau conceptuel l'auteur n'a rien à faire dans l'entité-type livre !
    C'est au niveau tabulaire qu'on trouvera éventuellement dans la table livre, non pas l'auteur, mais l'identifiant de l'auteur hérité comme FK
    Je dis éventuellement car dans les faits, un livre peut avoir plusieurs auteurs et un auteur peut écrire plusieurs livres, il faudra donc une table associative livre-auteur et la FK de l'auteur sera dans cette table et non pas dans la table livre.

    Le modèle concpetuel est donc

    [AUTEUR]1,n --- ecrire --- 1,n [LIVRE]

    ce qui donne trois tables (PK soulignées, FK suffixées #) :
    AU_AUTEUR[AU_ident, AU_nom, AU_prenom, AU_datenais...]
    LI_LIVRE[LI_ident, LI_titre, LI_dateparu]
    EC_ecrire[AU_ident#, LI_ident#, EC_date]

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Citation Envoyé par aperikub Voir le message
    je voudrais également dans l'autre sens que toutes les occurrences de l'entité "livre" écrites par un même auteur puissent être retrouvés sous forme de clés étrangères dans l’occurrence de l'entité auteur correspondante (en clair que chaque occurrence de l'entité auteur contienne la liste des livres qu'il a écrit) et la je ne vois vraiment pas comment faire
    C'est ce qu'il ne faut surtout pas faire.
    Avec la table d'association EC_ecrire présentée ci-dessus par escartefigue vous pouvez récupérer par jointure toutes les informations nécessaires.

  5. #5
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 212
    Billets dans le blog
    16
    Par défaut
    Bonjour,

    En complément : il est préférable de laisser analyseSI et passer à Looping (gracieusement proposé par le professeur Patrick Bergougnoux (merci Paprick !)) offrant bien plus de possibilités pour la modélisation des données.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  6. #6
    Membre Expert
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 762
    Par défaut
    Bonjour,

    Voici à quoi devrait ressembler votre MCD, le MLD correspondant et le code SQL permettant la génération du schéma relationnel.

    Nom : MCD Aperikub.jpg
Affichages : 1181
Taille : 84,6 Ko

    Bonne continuation !

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 95
    Par défaut
    ok merci pour les réponses (j'ai mis un peu de temps a revenir, coupure internet ) du coups entretemps j'ai compris que analyseSI (que je suis obligé d'utiliser dans le cadre du cours) faisait les liens lui même donc mon mcd ressemble à vos exemples par contre au niveau SQL j'ai des **NOT_FOUND** pour les types des clés liées par des associations.
    voila mon mcd et le code SQL:

    Nom : mcd.png
Affichages : 968
Taille : 5,1 Ko


    Nom : sql.png
Affichages : 962
Taille : 152,3 Ko

    ps: j'ai beaucoup hésité sur l'endroit ou mettre mon booléen "disponible" donc je ne suis vraiment pas sur que ce soit correct

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 603
    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 603
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Quelques remarques :

    Certains livres n'ont pas d'auteur connu, c'est pourquoi la cardinalité mini de zéro est requise, d'autres ont un ou plusieurs auteurs.

    Un livre peut rester à l'état de manuscrit ou devenir un ouvrage lorsqu'il est édité par un éditeur, le même livre pouvant être édité plusieurs fois (par un même éditeur ou plusieurs).
    Un ouvrage possède un identifiant ISBN obligatoire depuis 1970, mais les ouvrages anciens n'en ont pas
    Un même ouvrage est imprimé en plusieurs exemplaires, c'est l'exemplaire qui peut être emprunté par un lecteur et non le livre ou l'ouvrage. Dans les bibliothèques, chaque exemplaire possède un code à barres unique.

    Comme un lecteur doit pouvoir emprunter le même exemplaire plusieurs fois (si l'envie de relire lui prend) mais qu'un même exemplaire ne peut être emprunté qu'une seule fois à un instant "t", la date contribue à l'association "emprunter" et, dans le script, il faudra évacuer l'identifiant de l'emprunteur de la PK de cette table associative

    Un même lecteur peut être abonné dans plusieurs bibliothèques (c'est assez courant) mais il faut vérifier que l'emprunteur est membre de la bibliothèque, d'où la contrainte (CIF) d'inclusion (i cerclé)

    Enfin, j'ai choisi dans le MCD ci-dessous d'identifier l'ouvrage relativement au livre (sans livre, pas d'ouvrage) et l'exemplaire relativement à l'ouvrage (pour la même raison) : l'ouvrage comme l'exemplaire sont des entités-type faibles.

    Ce qui donne le modèle suivant :

    Pièce jointe 582155

    Note : le booléen "disponible O/N" est inutile. Un exemplaire est disponible s'il n'est pas emprunté (absent de la table associative "emprunter" ou bien la date de fin d'emprunt est échue)

    EDIT : de "exemplaire" vers "localiser" la cardinalité devrait être 0,1 t non 1,1. Tout exemplaire n'étant pas obligatoirement dans une bibliothèque

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

Discussions similaires

  1. Cardinalité dans PHPMyAdmin
    Par xmag dans le forum Requêtes
    Réponses: 1
    Dernier message: 19/08/2005, 09h31
  2. Récupérer les cardinalités
    Par Invité dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/08/2005, 09h12
  3. [Together] Gestion des cardinalités
    Par cladsam dans le forum Autres
    Réponses: 3
    Dernier message: 03/08/2005, 21h33
  4. cardinalité
    Par star_light dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 30/12/2004, 17h59
  5. Cardinalités
    Par Pingwin dans le forum Diagrammes de Classes
    Réponses: 6
    Dernier message: 30/01/2003, 18h22

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