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 :

Modélisation d'une relation entre 2 tables [MCD]


Sujet :

Schéma

  1. #21
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 965
    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 : 7 965
    Points : 30 777
    Points
    30 777
    Billets dans le blog
    16
    Par défaut
    Comme je l'ai écrit précédemment, au stade SQL, country_customer est une colonne de la table customer, engendrée par Looping à partir de l’association qui selon le MCD connecte les classes country et customer. Bien entendu, toujours au stade SQL, country_customer est élément du sous-ensemble FK_COUNTRY3, clé étrangère référençant la clé candidate {country_key} de la table country.

    Au stade conceptuel, dans l'inventaire des données, c'est country_key qui existe, identifiant de country.

    Quant à ce qu’est une clé candidate, voyez ici.
    (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.

  2. #22
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Comme je l'ai écrit précédemment,
    Mea culpa, c'était écrit au post #19...J'ai une excuse en béton pour ne pas l'avoir noté. J'en dirai pas plus.

    Citation Envoyé par fsmrel Voir le message
    Au stade conceptuel, dans l'inventaire des données, c'est country_key qui existe, identifiant de country.
    Je suppose que ça veut dire que j'avais tort en disant
    Il me paraît évident que country_key n'est pas une donnée
    Donc au niveau du MCD, faut-il conserver country_key dans la classe customer et ne pas mettre country_customer ? Peut-être que la lecture du chapitre Association des classes d'entités m'apportera la réponse...

    Au fait, félicitation pour cette maîtrise du chinois
    Ainsi, le sous-ensemble défini par la paire {Four_No, Piece_No} est une clé candidate de la relvar FPV (clé, pour faire court). Considérons en effet les DF vues précédemment etc
    relvar et DF, ça me parle pas...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  3. #23
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 965
    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 : 7 965
    Points : 30 777
    Points
    30 777
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Donc au niveau du MCD, faut-il conserver country_key dans la classe customer et ne pas mettre country_customer ?
    Relisez la réponse faite par Paprick dans le post #14. Quand on recense les données, c’est-à-dire les vraies, celles qui sont naturelles, non techniques, ayant donc un sens du point de vue « métier », il est alors d’usage d’ignorer les rubriques « techniques », qui ne seront ajoutées au MCD que pour les besoins de production du code SQL. Si country_key est à considérer comme étant une rubrique technique, on commence par l’oublier, c’est la rubrique country, véritable donnée naturelle qui est à considérer comme identifiant « naturel » légitime. Avant production du code SQL, country sera légalement ravalé(e) au rang d’identifiant alternatif (paramètre UNIQUE pour la rubrique country), et c’est country_key rubrique ajoutée avant production du code SQL qui deviendra l’identifiant principal, donc clé primaire au stade SQL. La rubrique country deviendra attribut de la table COUNTRY, mais en même temps clé alternative (unicité oblige), voyez le paragraphe 3.2.6. Pourquoi tout ça ? Entre autres, voyez l’avis du grand Merisien Yves Tabourier.


    Citation Envoyé par laurentSc
    relvar et DF, ça me parle pas
    La définition de la clé candidate figure au paragraphe 3.2.3., en faisant rouler la molette de votre souris, vous remonterez au paragraphe 3.2.2., et là vous trouverez la définition des dépendances fonctionnelles (DF).
    Quant à la relvar, il suffit de rechercher ce terme, par exemple dans le sommaire, de l’article, et vous verrez que la définition en est donnée au paragraphe A.2. Pour faire court, la relvar correspond à la table SQL, mais en beaucoup plus rigoureux. Si ça reste du chinois, parcourez les annexes (ou l’article complet) et investissez dans l’ouvrage de Chis Date : The New Relational Database Dictionary.
    (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.

  4. #24
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    j'ai lu avec intérêt votre réponse ; bien qu'abonné à cette discussion, pas reçu de mail, et c'est par hasard, pensant poser une nouvelles question en fin d'après-midi, que je l'ai vue (je me suis replongé dans ce sujet qu'en fin d'après-midi). J'ai aussi lu les 2 liens que vous fournissez.

    Je vous cite :
    il faut éviter d'utiliser pour les clés primaires des données dont les valeurs sont significatives
    Je constate que je ne suis pas cette règle. Par exemple, j'ai une table license
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE `license` (
      `sesa` int NOT NULL,
      `application_key` smallint NOT NULL,
      `activate_date` date DEFAULT NULL,
      `deactivate_date` date DEFAULT NULL,
      PRIMARY KEY (`sesa`,`application_key`) USING BTREE,
      KEY `FK_APPLICATION` (`application_key`),
      CONSTRAINT `FK_APPLICATION` FOREIGN KEY (`application_key`) REFERENCES `application` (`application_key`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    Déjà, la clé primaire porte sur 2 colonnes. rawsrc, ex-modo de DVP, très compétent, toujours dans ce domaine (sa spécialité est plutôt le PHP et la POO, mais il maîtrise aussi le SQL (c'est lui qui m'avait installé Mysql Workbench)), avec lequel je suis resté en contact, me déconseille de faire porter une clé primaire sur plusieurs colonnes (je crois me souvenir, source de complexité au niveau codage SQL) ; qu'en pensez-vous ?
    Et la première colonne (sesa) est certes invariante mais porteuse de sens : c'est le matricule du propriétaire de la licence. Est-ce une erreur et faudrait-il créer une rubrique artificielle du genre id_license ?

    EDIT : j'oubliais une question que je me posais : j'ai choisi de sortir de mon MCD la rubrique country_key (ou country_customer ) de la table customer , car la “vraie” info est dans la table country, et l’info country_customer viendra de l’association entre les tables customer et country. Est-ce le bon choix ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #25
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 965
    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 : 7 965
    Points : 30 777
    Points
    30 777
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par laurentSc Voir le message
    la clé primaire porte sur 2 colonnes. rawsrc, ex-modo de DVP, très compétent, toujours dans ce domaine (sa spécialité est plutôt le PHP et la POO, mais il maîtrise aussi le SQL (c'est lui qui m'avait installé Mysql Workbench)), avec lequel je suis resté en contact, me déconseille de faire porter une clé primaire sur plusieurs colonnes (je crois me souvenir, source de complexité au niveau codage SQL) ; qu'en pensez-vous ?
    On peut avoir la compétence dans diverses disciplines sans l’avoir dans celle qui nous intéresse ici, à savoir la théorie relationnelle. PHP et POO sont ici hors sujet, quant à SQL, rejeton boiteux de cette théorie, il faut l’avoir pratiqué à haute dose en qualité de DBA reconnu pour porter un jugement.

    Selon la structure de votre table LICENSE, la paire {sesa, application_key} est au moins une clé candidate, au motif qu’elle satisfait aux règles d’unicité et d’irréductibilité de ce type de clé. Si rawsrc tient à ce que la clé primaire ne soit composée que d’une seule colonne (id_license dans votre cas), alors vous aurez nécessairement deux clés, la clé primaire et la clé alternative {sesa, application_key}. Au niveau physique, le SGBD aura deux index à gérer au lieu d’un seul, d’où une surcharge lors de la mise à jour de la table (ne serait-ce que dans le cas des inserts).

    Descendons dans la soute. Le regroupement dans une même page physique, par exemple celui des licences d’un propriétaire est capital su point de vue des performances. Situons-nous dans le contexte du SGBD que je torturais il y a encore 15 ans, à savoir DB2 : pour forcer ce regroupement j’aurais rendu cluster l’index {sesa, application_key}. Supposons que l’on a n1 application_key par sesa, et qu’une page physique de la table LICENSE contienne n2 lignes de la table. Indépendamment des accès aux index, le nombre d’entrées/sorties pour récupérer les lignes pour un sesa donné est égal à 1 + quotient de n1/n2. Si l’index n’est pas cluster, le nombre d’entrées/sorties peut tendre vers n1 (par exemple si c’est l’index (id_license) qui est cluster). Avantage à l’index bi-colonnes.

    Quant à la complexité évoquée par rawsrc, du point de vue du DBA que je fus, disons que c’est une pieuse légende. Décortiquez le 4e exemple du paragraphe 1.7.

    A propos de la colonne sesa : Vous dites que cette colonne est invariante mais porteuse de sens (matricule du propriétaire de la licence). De mon côté, dans mon entreprise, mon matricule était 'FSM', invariant, puis au bout de quelques années il devint 'FSM69' et l’invariance en prit un coup. Cela dit, votre colonne sesa est du type INT, donc peu sujette à varier, donc vous pouvez prendre le pari de la conserver en l’état. Mais ne manque-t-il pas une table pour décrire les propriétaires des licences (nom, coordonnées, etc.) ?

    Toujours à propos de la colonne sesa : les tables USER et LICENSE sont toutes les deux dotées d’une colonne nommée sesa. Si la colonne sesa de la table USER et celle de la table LICENSE n’ont rien à voir entre elles, pour éviter toute ambiguïté, il serait bon de les renommer par exemple en user_sesa et license_sesa. S’il s’agit de la même chose, la modélisation est à revoir (One fact, one place!).


    Citation Envoyé par laurentSc Voir le message
    j'ai choisi de sortir de mon MCD la rubrique country_key (ou country_customer) de la table customer, car la “vraie” info est dans la table country, et l’info country_customer viendra de l’association entre les tables customer et country. Est-ce le bon choix ?
    Oui, si la donnée country_customer est en toute logique hébergée par la table country, sortez-la de la table customer (One fact, one place!). Le code SQL généré par Looping mettra en évidence la clé étrangère associant les deux tables, rendant possible par jointure la connaissance du nom du pays de chaque client.

    Il est temps que vous présentiez un MCD conçu avec Looping.
    (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. #26
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Il est temps que vous présentiez un MCD conçu avec Looping.
    Je l'ai commencé (c'est quand même plus confortable de tout avoir sur le même PC ) et mon MCD sera fini soit ce soir, soit demain. En fait, je n'ai fini de lire que 8 chapitres (sur 20) du bouquin de Paprick (ne pas oublier que je vais pas vite) mais il me semblait avoir compris suffisamment pour démarrer (j'étais impatient de pouvoir le faire)

    Citation Envoyé par fsmrel Voir le message
    Mais ne manque-t-il pas une table pour décrire les propriétaires des licences (nom, coordonnées, etc.) ?
    Elle existe et le MCD la décrira !

    Citation Envoyé par escartefigue Voir le message
    L'apprentissage de Looping n'a rien de rébarbatif, on ne se pose à peu près aucune question, c'est très intuitif
    En effet, très intuitif. Y a quand un truc que j'ai pas deviné mais que Google m'en a donné la solution : quand on créé une entité et qu'on veut l'éditer, il faut cliquer sur l'icône Sélection .
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 650
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonsoir,
    Citation Envoyé par laurentSc Voir le message
    En effet, très intuitif. Y a quand un truc que j'ai pas deviné mais que Google m'en a donné la solution : quand on créé une entité et qu'on veut l'éditer, il faut cliquer sur l'icône Sélection
    En cliquant à droite, vous revenez automatiquement en mode sélection : il suffit alors de double-cliquer sur la classe d'entités pour l'éditer .
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  8. #28
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    Citation Envoyé par Paprick Voir le message
    En cliquant à droite, vous revenez automatiquement en mode sélection : il suffit alors de double-cliquer sur la classe d'entités pour l'éditer .
    Merci pour l'astuce !

    voici mon premier MCD fait avec Looping !

    Nom : MCD1.png
Affichages : 489
Taille : 76,2 Ko

    Il est très probable qu'il y a plein d'améliorations à faire.

    Je donne un brin d'explications mais je me limite ne souhaitant pas passer beaucoup de temps à faire des choses qui seraient inutiles. Donc merci de critiquer mon MCD et de me dire ce qui manque pour que ça soit compréhensible.

    Tout d'abord, je gère des licences et des tickets. Des users peuvent posséder une ou des licence(s) sur des applications (qui sont des logiciels).

    Des tickets peuvent être soumis : il s'agit d'une déclaration d'un bug sur un des logiciels.
    Un user soumet un ticket (d'où le lien soumet entre user et ticket) et un autre user gère l'application sur laquelle porte le ticket (d'où les 2 liens gère entre user et application et concerne_t entre ticket et application ).

    A noter que je me suis efforcé que les clés primaires portent sur des rubriques non significatives. En simplifiant, il n'y a finalement plus de clé primaire portant sur 2 colonnes. Il y a une classe d'entités sans aucun lien avec une autre classe : file_uploaded.
    L'association abrite est sacrément excentrée car j'ai pas trouvé pour couder les liens et je ne voulais pas que les liens traversent une entité.

    J'attends vos remarques et en attendant, je vais continuer ma lecture du bouquin de Paprick.
    Images attachées Images attachées    
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #29
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 965
    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 : 7 965
    Points : 30 777
    Points
    30 777
    Billets dans le blog
    16
    Par défaut
    Bonsoir,

    Bon début avec Looping !


    Citation Envoyé par laurentSc Voir le message
    Des users peuvent posséder une ou des licence(s) sur des applications
    Dan votre phrase, il a ambiguïté du fait de l’utilisation du pluriel (« Des utilisateurs peuvent posséder »). Il faut donc utiliser le singulier : « Un utilisateur possède ». Cela dit, au vu de votre MCD, on interprète ainsi les choses :

    Un utilisateur possède de 0 à 1 licence ;
    Une licence est possédée (utilisée ?) par 0 à N utilisateurs.

    De la même façon, chaque association présente dans le MCD doit faire l’objet des règles de gestion la gouvernant.

    Pour la petite histoire, en Merise, au stade MCD on parle d’identifiants plutôt que de clés primaires.

    En tout ca, vous avez pris la bonne direction, courage !
    (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.

  10. #30
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Merci pour votre réponse hyper tardive !

    Citation Envoyé par fsmrel Voir le message
    Bon début avec Looping !

    En tout ca, vous avez pris la bonne direction, courage !
    ça m'encourage à poursuivre (à mon rythme lent...)

    Citation Envoyé par fsmrel Voir le message
    Un utilisateur possède de 0 à 1 licence ;
    Une licence est possédée (utilisée ?) par 0 à N utilisateurs.
    Même en interne (ce sont des logiciels internes), on les achète et donc l'acheteur possède une licence.

    Citation Envoyé par fsmrel Voir le message
    De la même façon, chaque association présente dans le MCD doit faire l’objet des règles de gestion la gouvernant.
    Ca, je l'avais compris (je ne l'ai pas fait pour ne pas faire les choses de travers), mais je ne l'ai pas encore vu, existe-t-il un formalisme pour les présenter ?

    Citation Envoyé par fsmrel Voir le message
    Pour la petite histoire, en Merise, au stade MCD on parle d’identifiants plutôt que de clés primaires.
    Merci de l'info ; j'avais une bonne intuition en nommant ces rubriques id_xxx
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #31
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 965
    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 : 7 965
    Points : 30 777
    Points
    30 777
    Billets dans le blog
    16
    Par défaut
    Bonjour,

    A propos des cardinalités.

    Citation Envoyé par laurentSc Voir le message
    Même en interne (ce sont des logiciels internes), on les achète et donc l'acheteur possède une licence.
    Le problème que j’évoque ne concerne pas l’inférence voulant que, parce que même en interne on achète un logiciel, alors l’acheteur en possède une licence. Ce dont il s’agit concerne plutôt — dans le contexte de la modélisation — l’emploi de la cardinalité minimale (0 ou 1, voire plus à l’occasion) et celui de la cardinalité maximale (1 ou N).

    Pour reprendre mon exemple précédent selon lequel un utilisateur peut posséder au plus une licence, et une licence peut être possédée par plusieurs utilisateurs, en appelant un chat, un chat, les possibilités de représentation sont les suivantes :

    Un utilisateur possède de 0 à 1 licence ;
    Une licence est possédée par 0 à N utilisateurs.  

    Avec le style de rédaction que j’ai utilisé, on élimine une éventuelle ambiguïté causée par le verbe verbe pouvoir (« peut posséder », « peut être possédée »).

    Le choix de la règle a été fait parmi les suivantes ( voyez aussi à la page 119 de l’ouvrage de Paprick) :

    (R01) Un utilisateur possède de 0 à 1 licence.
    Exemples : 
    Raoul ne possède aucune licence, 
    tandis que Paul en possède une (et au plus une seule). 

    (R02) Un utilisateur possède au moins et au plus une licence. 
    Exemples : 
    Raoul possède au moins et au plus une licence ; 
    Paul possède lui aussi au moins et au plus une licence. 

    (R03) Un utilisateur possède de 0 à N licences (N représentant un nombre quelconque).
    Exemples  :
    Raoul ne possède aucune licence,  
    tandis que Paul en possède 5 et Jean en possède 7.  

    (R04) Un utilisateur possède 1 à N licences (N représentant un nombre quelconque), ce qui peut encore s’écrire : un utilisateur possède au moins une licence et au plus plusieurs.
    Exemples  :
    Raoul ne possède qu’une licence,  
    tandis que Paul en possède 5 et Jean en possède 7.  

    (R05) Un utilisateur possède M à N licences (M et N représentant des nombres quelconques).
    Exemples  :
    Un utilisateur possède au moins 3 licences et au plus 5. 

    Ce qui vaut pour les utilisateurs par rapport aux licences vaut évidemment pour les licences par rapport aux utilisateurs.

    En passant, puisque selon votre MCD un utilisateur possède au plus une licence, laquelle concerne au moins et au plus une application, cet utilisateur peut néanmoins gérer plusieurs applications (sous-entendu possiblement toutes distinctes de celle qu’il possède) : sommes-nous en phase ?
    (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.

  12. #32
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    En passant, puisque selon votre MCD un utilisateur possède au plus une licence, laquelle concerne au moins et au plus une application, cet utilisateur peut néanmoins gérer plusieurs applications (sous-entendu possiblement toutes distinctes de celle qu’il possède) : sommes-nous en phase ?
    En lisant ceci, j'ai réalisé que je m'étais trompé dans les cardinalités.

    Les bonnes règles sont :

    - un utilisateur (user) possède 0 à n licences

    - une licence est possédée par 0 à n users.

    D'où le MCD corrigé :
    Nom : MCD2.png
Affichages : 450
Taille : 71,1 Ko

    Autre point : Je viens de lire un truc dans le bouquin de Paprick qui me semble contradictoire avec ce que j'ai lu chez vous.

    Paprick (page 136 de son livre) :
    Pérennité : le numéro d'une facture et la référence d'un produit n'évolueront jamais et sont alors de bons identifiants pour leur classe respective.
    fsmrel (https://fsmrel.developpez.com/basesr...?page=3#L3.2.6)
    il faut éviter d'utiliser pour les clés primaires des données dont les valeurs sont significatives
    Les 2 assertions sont incompatibles. Qu'en pensez-vous ?

    EDIT (19h01) : MCD mis à jour car erreur dans les cardinalités.
    Images attachées Images attachées  
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #33
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 965
    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 : 7 965
    Points : 30 777
    Points
    30 777
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    une licence est possédée par 0 à n users.
    Selon le MCD, une licence est possédée par 0 à 1 user…


    Citation Envoyé par laurentSc Voir le message
    Je viens de lire un truc dans le bouquin de Paprick qui me semble contradictoire avec ce que j'ai lu chez vous
    Vous avez de saines lectures

    Y a-t-il contradiction ? En fait, quand Paprick écrit que le numéro d'une facture n'évoluera jamais, donc que c’est un bon identifiant pour sa classe, c’est vrai, le bon sens parle. Ainsi, un concepteur de MCD peut présenter son bébé à l’utilisateur (le maître d’oeuvre), et le défendre de façon claire. C’est la force des MCD merisiens d’être des modèles compréhensibles par tous, ce qui au demeurant n’était pas le cas du temps où Merise n’existait pas : pour avoir été confronté à ce problème dès le milieu des années soixante, j’ai énormément apprécié la possibilité de pouvoir un jour faire des MCD et les présenter enfin à des non informaticiens (pour se situer dans le temps, on peut dire que Merise est officiellement née le 24 mars 1978, suite à l’arrêté du Ministre de l’Industrie, René Monory).

    Mais il y a ensuite la dure réalité du terrain des bases de données… Le numéro de facture n’est pas forcément un entier, et mes propres fournisseurs ont parfois des systèmes de numérotation alambiqués, aboutissant à la mise en oeuvre de types du genre CHAR(16), et de son côté le DBA ne tient pas à ce que la clé primaire (et celle des lignes de facture, etc.) soit consommatrice de ressources, je pense notamment à la hauteur des arbres (btrees) pouvant être la cause d’un surcoût important en entrées/sorties pour les tables faisant référence à la table FACTURE. Dans ce genre de situation, il devient raisonnable de doter la table FACTURE d’un attribut supplémentaire, artificiel, appelons-le factureId, de type INT, tandis que le numéro de facture fait alors l’objet d’une clé alternative : c’est un point d’entrée dans le système, et les requêtes à suivre mettront en oeuvre l’attribut factureId.

    Autrement dit, on peut être amené à avoir deux MCD, celui dont on se sert pour discuter avec l’utilisateur, et l’autre qui servira à la production du code SQL, donc pouvant être enrichi de clés primaires « techniques », suite aux discussions avec le DBA. Les clés « naturelles » deviennent alors des clés alternatives.

    Le MCD « naturel » et le MCD « technique » ne sont pas contradictoires, disons que le premier devient un sous-ensemble du second.

    En passant, en ce qui concerne la pérennité des identifiants « naturels », je rappelle qu’elle peut toujours être remise en cause, à l’image de mon matricule dans mon entreprise (cf. post #25).

    Une anecdote : un de mes neveux a le même NIR (numéro de sécu) que quelqu’un d’autre. Même situation pour un de mes anciens collègues. Il est vrai que tous deux sont nés à une époque où la Sécu n’était pas informatisée. En tout cas, indépendamment des problèmes rencontrés dans la vie courante par mon neveu et mon collègue, bonjour les collisions de clés…
    (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.

  14. #34
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Selon le MCD, une licence est possédée par 0 à 1 user…
    Exact, et je viens de le réaliser et de le corriger :
    Nom : MCD2.png
Affichages : 299
Taille : 70,7 Ko

    J'ai aussi apporté une autre correction :
    un user gère 0 à n application(s)
    une application est gérée par un et un seul user.

    Ce que j'appelle gérer : le gestionnaire d'une application (informatique) en est le responsable (et supervise la correction des bugs)

    Question au sujet des tables de correspondance : J'ai lu dans le bouquin de Paprick qu'il convenait de créer une table de correspondance en cas de cardinalité multiple de part et d'autre. Ce cas se présente 1 fois dans mon cas :

    - un user possède 0 à n licences ;

    - une licence est possédée par 0 à n users.

    Je dois donc créer une table de correspondance nommée posseder et qui comportera 2 clés étrangères (les identifiants des tables user et application). Par contre, il y aura aussi des liens entre cette table et la table user et entre cette table et la table application. Mais je ne sais pas comment les nommer ni quelles cardinalité leur attribuer...
    Images attachées Images attachées  
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 650
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonsoir,
    Comme je l'ai déjà indiqué dans ce forum concernant la nature des identifiants (naturel ou artificiel), ma position est assez modérée quand à l'utilisation systématique d'identifiants non significatifs , même si mon raisonnement conduit bien souvent au même résultat .

    En préambule, je rappelle que les dates, hautement significatives, contribuent bien souvent à la composition d'identifiants.
    En fait, la problématique se situe à 2 niveaux : la performance et la maintenance.
    Pour la performance, je ne reviendrai pas sur tout ce qui a été dit dans cette discussion, l'entier (sous toutes ses formes) sera toujours préférable.
    Pour la maintenance, l'ennemi est le changement de structure de la clé qui peut provoquer des modifications en chaîne considérables sur les grosses bases de données.

    L'utilisation systématique d'identifiants non significatifs de type compteur règle effectivement ces problèmes... ça n'en fait pas pour autant la seule approche acceptable (n'en déplaise à Tabourier).
    Soyons pragmatiques : quels sont les qualités nécessaires pour un identifiant ?

    • Unicité : bien évidemment, mais trop souvent considérée comme la seule.
    • Formalisme : l'identifiant ne doit laissé aucun doute quant à la façon de l'écrire : numéro, code, réf, ... ce qui, pour moi, exclut de facto les textes "libres" et donc l'utilisation du VARCHAR.
    • Légalité : l'exemple classique est bien sûr l'utilisation interdite du numéro de sécurité sociale.
    • Irréductibilité : le sacro-saint principe de la clé minimale (attention aux surclés !).
    • Pérennité : dans mes cours (et dans mon livre), je le traite en 3ème position, mais là je l'ai gardé pour la fin ! En effet, c'est bien souvent au cœur de nos discussions : pourquoi favorise-t-on un identifiant artificiel ? Parce que, dépourvu de signification, il est forcément pérenne ! On pourrait donc s'arrêter là... Mais, la pérennité peut également exister avec des rubriques naturelles : certes, il faut y regarder à 10 fois pour s'en assurer, mais partir du principe que cela ne peut exister me parait exagéré. Lorsque je définis, par exemple, le format d'un numéro de facture, qui par définition (comptable), n'a pas le droit d'évoluer dans le temps, pourquoi créer en plus un Id_Facture qui n'a rien à voir avec le système d'information alors que celui-ci nous en propose un. Et quand bien même, une fois tous les 10 ans, il faudrait mouliner la base pendant 48 heures pour réactualiser les structures, est-ce que le rapport intérêt/coût ne mérite pas d'être étudié ? Après, chacun fait ses choix, et l'usage systématique d'identifiants artificiels en est un... mais pas forcément le seul, et en tout cas, ce n'est pas, à mon avis, une règle d'or intransgressible.


    En résumé, l'important, c'est la pérennité, par forcément l'artificiel, même si bien souvent, l'un ne va pas sans l'autre.

    Bonne continuation !
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  16. #36
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 965
    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 : 7 965
    Points : 30 777
    Points
    30 777
    Billets dans le blog
    16
    Par défaut
    Bonsoir,

    laurentSc, je ne vous oublie pas, mais ce soir j’ai du lait sur le feu…


    Vite fait sur le gaz :

    Citation Envoyé par Paprick Voir le message
    Lorsque je définis, par exemple, le format d'un numéro de facture, qui par définition (comptable), n'a pas le droit d'évoluer dans le temps, pourquoi créer en plus un Id_Facture qui n'a rien à voir avec le système d'information alors que celui-ci nous en propose un.
    Oui, Paprick, je comprends ton point de vue, mais si le DBA met en évidence que la hauteur de l’arbre (l’index, le btree) est réduite drastiquement en utilisant pour la clé primaire l’attribut artificiel Id_Facture, tandis que l’attribut naturel (le numéro de facture, bouffeur de ressources) prend rang de clé alternative, pas d’hésitation de sa part. Fonctionnellement tout est préservé, tandis que les performances ne pourront être que meilleures. J’ai passé ma vie de DBA à prototyper ce genre de choses, puis au besoin les mettre en oeuvre, tout ça chez des foultitudes de clients, pour le plus grand bien de leurs applications.
    (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.

  17. #37
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Je dois donc créer une table de correspondance nommée posseder et qui comportera 2 clés étrangères (les identifiants des tables user et application). Par contre, il y aura aussi des liens entre cette table et la table user et entre cette table et la table application. Mais je ne sais pas comment les nommer ni quelles cardinalités leur attribuer...
    Merci de ne pas m'oublier. Pour rappel, ce qui me bloque à l'heure actuelle, c'est le point rappelé ci-dessus (pas trouvé la réponse dans le bouquin de Paprick).
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 650
    Points : 2 657
    Points
    2 657
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Question au sujet des tables de correspondance : J'ai lu dans le bouquin de Paprick qu'il convenait de créer une table de correspondance en cas de cardinalité multiple de part et d'autre. Ce cas se présente 1 fois dans mon cas :
    - un user possède 0 à n licences ;
    - une licence est possédée par 0 à n users.
    Je dois donc créer une table de correspondance nommée posseder et qui comportera 2 clés étrangères (les identifiants des tables user et application). Par contre, il y aura aussi des liens entre cette table et la table user et entre cette table et la table application. Mais je ne sais pas comment les nommer ni quelles cardinalité leur attribuer...
    Il ne faut pas raisonner simultanément à 2 niveaux d'abstraction !
    Là, vous êtes au niveau conceptuel et vous devez finaliser votre modélisation à ce niveau là.
    La problématique des tables de correspondance est traitée au niveau logique, et ces tables sont générées automatiquement dès que les associations sont multiples de part et d'autre : vous n'avez donc rien à spécifier de plus dans le MCD.
    Dans Looping, jetez un coup d'œil sur le MLD et vous verrez apparaître la table "posseder" avec les 2 clés étrangères qui constituent la clé primaire de la table en question .
    Et s'il est nécessaire d'associer cette table à d'autres classes d'entités (ce dont je doute dans votre cas), il faut alors envisager, soit de décomposer l'association (cf. page 189 et suivantes), soit de faire appel à une association n-aire (chapitre 14)... mais là, attention, la modélisation passe à un niveau au-dessus.
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  19. #39
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 965
    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 : 7 965
    Points : 30 777
    Points
    30 777
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    - un user possède 0 à n licences ;

    - une licence est possédée par 0 à n users.

    Je dois donc créer une table de correspondance nommée posseder et qui comportera 2 clés étrangères (les identifiants des tables user et application).
    Dans le MCD, POSSEDER est une association entre LICENSE et USER, et comme dit Paprick, Looping générera donc le MLD qui va bien, et au stade SQL une instruction CREATE TABLE POSSEDER, dont la clé primaire sera composée de la paire {id_license, sesa}. La table APPLICATION n’est pas concernée.


    Citation Envoyé par laurentSc Voir le message
    l y aura aussi des liens entre cette table et la table user et entre cette table et la table application.
    Votre formulation n’est pas claire. Par référence au MCD, l’association POSSEDER est entre LICENSE et USER. Si vous cherchez en plus à faire participer APPLICATION à POSSEDER, cette association deviendrait ternaire. C’est possible, mais on ne le fait pas impunément, voyez le chapitre 14 du livre de Paprick. Jetez aussi un coup d’oeil à la figure 1 ici (courses hippiques) ; vous verrez qu’avec les contraintes qui s'ensuivent, l’affaire se corse (chef-lieu Ajaccio comme disait l’autre)…

    En tout cas, si ternaire il y a il faudra la justifier.


    Attention, USER est un mot réservé SQL, il faudrait utiliser un autre nom pour la table concernée.

    A propos de la terminologie : "table associative" est plus pertinent que "table de correspondance".
    (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.

  20. #40
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Paprick Voir le message
    Il ne faut pas raisonner simultanément à 2 niveaux d'abstraction !
    OK, j'avais pas compris que les tables associatives concernent le MLD...

    En effet, la table possederapparaît dans le MLD ; pas besoin de la créer : Nom : MLD2.png
Affichages : 296
Taille : 70,1 Ko

    Citation Envoyé par fsmrel Voir le message
    La table APPLICATION n’est pas concernée.
    Citation Envoyé par fsmrel Voir le message
    Si vous cherchez en plus à faire participer APPLICATION à POSSEDER, cette association deviendrait ternaire.
    Ca doit être du à la fatigue. En effet, c'est plutôt la table license...
    Citation Envoyé par fsmrel Voir le message
    Attention, USER est un mot réservé SQL, il faudrait utiliser un autre nom pour la table concernée.
    pris en compte.

    Citation Envoyé par fsmrel Voir le message
    A propos de la terminologie : "table associative" est plus pertinent que "table de correspondance".
    OK pour ici, mais pas encore présent dans mon MCD, mais il y a une vraie table de correspondance ; je la rajouterai plus tard (dans le MCD)...
    Images attachées Images attachées  
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Comment établir une relation entre deux tables
    Par Monta^^ dans le forum Hibernate
    Réponses: 15
    Dernier message: 30/04/2009, 20h54
  2. Supprimer et créer une relation entre deux tables
    Par bassiste dans le forum Administration
    Réponses: 1
    Dernier message: 18/07/2008, 21h20
  3. Récupérer le code d'une relation entre des tables
    Par ClaudeLELOUP dans le forum VBA Access
    Réponses: 8
    Dernier message: 23/05/2008, 18h51
  4. Réponses: 6
    Dernier message: 23/12/2007, 15h06
  5. Réponses: 9
    Dernier message: 24/04/2006, 10h13

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