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 :

MCD blog pour l'exemple


Sujet :

Schéma

  1. #1
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Points : 98
    Points
    98
    Par défaut MCD blog pour l'exemple
    Bonjour

    Je vais me lancer dans un autre exemple de modélisation. Celui d'un blog

    Je commence par une ET SLUG
    cela permet d'identifier une page a partir de l'url du site. Cela sera du type texte (sans id dans l'url)

    Nom : Capture12.PNG
Affichages : 16608
Taille : 12,5 Ko

    le fait d'écrire
    un slug permet d"afficher 1 et 1 seul post

    m’empêche d'écrire
    un post est affiché depuis 1 et 1 seul slug

    je suis obligé d'écrire
    un post est affiché depuis 0, 1 ou plusieurs slug



    Idem pour CUSTOM qui me permet de définir un type de page (article, portfolio, page auteur....)

  2. #2
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Points : 98
    Points
    98
    Par défaut
    On pourrait aussi avoir

    Nom : Capture12.PNG
Affichages : 5369
Taille : 12,9 Ko

    C'est peut être plus logique mais j'ai l'impression que cela ne change rien

    Cela serait intéressant de savoir si les 2 logiques ont des conséquences (comportements) différent ?

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Bonsoir Scamphp

    Je vois que vous prenez goût à la modélisation, une question toute simple dans le forum MySQL vous aura rendu curieux sur ce chapitre.
    Je ne saurais vous en blâmer, bien au contraire

    Cela étant, même (sempiternelle) remarque, qui dit modélisation conceptuelle, dit rédaction préalable des règles de gestion, et, avant toutes choses, description du contexte.

    Le MCD est toujours la résultante de règles de gestion, pas de RG pas de MCD !

  4. #4
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Points : 98
    Points
    98
    Par défaut
    Règle de Gestion

    Définition des URL : www.monsite.com/slug

    Un SLUG correspond à une page
    une page correspond à 0 ou 1 slug (pour éviter le contenu dupliqué, une page ne peut pas être accessible depuis plusieurs adresses)

    Une page permet d'afficher des articles POST, ou des pages membres MEMBRE ou des groupes CATÉGORIE -> héritage

    Un article est classé dans une seule catégorie
    une catégorie regroupe 0 ou plusieurs articles

    une page est customisé par un et un seul model (model d'affichage template)
    un model (template) customise 0, 1 ou plusieurs pages

    Nom : Capture12.PNG
Affichages : 6100
Taille : 20,1 Ko

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Par le jeu de l’identification relative vous faites de l’entité-type POST une propriété multivaluée de l’entité-type CATEGORIE, ce qui revient notamment à dire que la suppression d’une catégorie entraîne celle de ses posts.
    En réalité, un post relève d’une catégorie, la désigne, et c’est tout.

    Vous faites des entités-types MEMBRE, CATEGORIE et POST des spécialisations de l’entité-type PAGE, ce qui veut dire qu’une page est soit un membre, soit une page, soit un post, ce qui est pour le moins douteux...
    (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 régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Points : 98
    Points
    98
    Par défaut
    Bon, je veux aller trop vite et cela ne sert a rien.

    On va commencer étape par étape

    ETAPE 1

    Je veux qu'une adresse URL corresponde à une page sans ID dans l'URL

    Définition des URL : www.monsite.com/slug

    Un SLUG correspond à une et une seule page
    une page correspond à 0 ou 1 slug (pour éviter le contenu dupliqué, une page ne peut pas être accessible depuis plusieurs adresses)

    J'ai un ID_slug identifiant technique

    Est ce que Créer une ET SLUG et ET PAGE est correct ?
    Les relation sont-elles correctes ?
    l'ID_slug est-il utile vu que le slug sera UNIQUE (il me semble que cela sera plus simple de faire une clé étrangère sur l'ID_slug que sur le slug).

    Nom : Capture12.PNG
Affichages : 4251
Taille : 4,1 Ko

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    En traduisant votre MCD en MLD, avec PowerAMC on obtient ceci :


    Ce qui est évidemment faux, l’AGL ayant confondu 0,1 et 0,N. Il aurait dû produire :


    En effet, du fait de l’identification relative vous faites de l’entité-type SLUG une propriété monovaluée de l’entité-type PAGE, propriété que vous avez externalisée, car manifestement une page n’a pas nécessairement de slug. Dans ce 2e diagramme, idSlug n’est pas clé primaire (symbolisée par le mickey <pk>), mais clé alternative (symbolisée par le mickey <ak>), unicité garantie. Ceci est en fait bien luxueux, l’attribut idSlug fait double emploi, il est inutile et au nom du rasoir d’Ockham doit disparaître du MCD. idPage est transmis à SLUG lors de la dérivation en MLD (et y devient clé primaire).

    Et si l’attribut Slug est le seul attribut de l’entité-type SLUG, il peut être rapatrié dans PAGE. L’absence de valeur pour cet attribut sera alors à traduire dans la base de données par une chaîne de caractère de longueur égale à 0. Par contre, si SLUG contient d’autres attributs, alors il est préférable de conserver cette entité-type.

    Quel MLD génère WinDesign de son côté ?

    P.S. Merci pour les médailles
    (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.

  8. #8
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Points : 98
    Points
    98
    Par défaut
    Mon MLD est :

    Nom : Capture11.PNG
Affichages : 4066
Taille : 2,9 Ko

    et UML

    Nom : Capture10.PNG
Affichages : 4153
Taille : 3,6 Ko

    TABLE SLUG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PRIMARY KEY(id_page, id_slug),

  9. #9
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Points : 98
    Points
    98
    Par défaut
    En réalité je ne suis pas sur de la pertinence de la règle

    Un SLUG correspond à une et une seule page
    une page correspond à 0 ou 1 slug (pour éviter le contenu dupliqué, une page ne peut pas être accessible depuis plusieurs adresses)
    En réalité une page correspond forcement à un slug sinon elle n'existerait pas (pas accessible); mais on ne peut pas écrire slug -- 1,1 -- définir -- 1,1 -- page
    Ce n'est pas une affirmation, mais une interrogation...




    En réalité je voudrais que un SLUG corresponde à une PAGE

    Cette page pourra afficher un article, une catégorie, la page d'un auteur.... un blog classique type wordpress.

    Peut être qu'il ne faut pas chercher a séparer SLUG de PAGE (dans des entité); slug étant tout simplement un attribut de PAGE.

    PS : pour info, je découvre de monde de la programmation PHP, Mysql en auto formation (je suis urbaniste lol). Mais en découvrant MCD, je me suis dit que j'allais me pencher sur la modélisation... donc je découvre

    Plutôt que de partir de des Tables (type) Wordpress plus ou moins Monotable... je voulais réfléchir sur la modélisation d'un blog pour me poser les bonnes questions et apprendre sur un exemple réel.


    Je ne cherche pas de réponses toutes faites, mais plus a forger mon raisonnement, pour apprendre... alors peut être que la règle de départ n'est même pas bonne



    L'idée était de dire :

    le slug d'une url va me permettre de trouver une page.
    je ne veux pas d'ID dans l'url, mais seulement une chaine de caractères

    Maintenant j'ai 2 solutions
    - soit j'intègre slug (chaine de caractère) directement dans ma table page (comme identifiant unique).
    - soit je crée une ET SLUG avec un ID et c'est cey ID que je manipulerais (il sera plus léger qu'une chaine de caractère)

    L'erreur c'est que conceptuellement (visuellement), j'ai envie de créer une ET SLUG, alors que en réalité cela ne semble pas pertinent (J'ai fait un peu de lecture une ET n'est pas forcement une TABLE )

    Finalement je tourne au tour... je cherche a schématiser... blablabla pour au final arriver à :
    Nom : Capture10.PNG
Affichages : 4081
Taille : 1,4 Ko

    Je ne sais pas on dit tellement qu'il faut découper et redécouper... je ne sais plus...

    Nous pouvons peut être déjà échanger sur le principe (règles)... car de mauvaises règles donnent un mauvais MCD, un très mauvais MLD et un script SQL catastrophique...

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


    Citation Envoyé par scamphp Voir le message
    En réalité une page correspond forcement à un slug sinon elle n'existerait pas (pas accessible); mais on ne peut pas écrire slug -- 1,1 -- définir -- 1,1 -- page
    Ce n'est pas une affirmation, mais une interrogation...
    Pour répondre en partie à votre interrogation, voyez le billet que j’ai rédigé en ce qui concerne ce qui revient à une bijection :

    [A]----1,1----(R)----1,1----[B]

    Pour éviter les ambiguïtés dans l’énoncé des règles de gestion, vous pouvez écrire :

    Un slug est associé à au moins et au plus une page ;
    Une page et une page est associée à au moins et au plus un slug.


    Je dois m’absenter, mais j’emporte une copie de votre message, car il y a des choses à dire. Quoi qu’il en soit, l’essentiel est que rapidement vous soyez rassuré quant à la modélisation de votre univers (au sens d’Augustus De Morgan)...
    (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.

  11. #11
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    En ce qui concerne la base de données, que vous stockiez l’information dans PAGE ou SLUG, la colonne Slug sera a priori celle qui tient de la place. Puisque le slug a pour objet de permettre d’accéder à la page associée, je suppose que près de 100% des pages seront associées chacune à un slug. Si PAGE possède d’autres attributs, il faudrait que vous les énumériez, pour qu’on puisse estimer le bienfait ou non du dégagement des slugs dans SLUG. Bref, quelles sont les volumétries estimées ? (nombre de lignes pour une table PAGE et une éventuelle table SLUG), liste (à peu près exhaustive) des attributs de PAGE et leur type. On quitte le niveau conceptuel où le temps et l’espace ne sont pas comptés, mais les contingences matérielles nous rappellent à la réalité et cela influe sur le conceptuel, à savoir la mise en œuvre ou non de l’entité-type SLUG...
    (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. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Comme je ne savais pas ce qu'est un SLUG, je suis allé demander à Wikipedia. Il s'agit de la partie de l'URL permettant d'accéder à une source d'un site web.

    Le SLUG de cette discussion est "mcd-blog-lexemple'.

    En fait il s'agit d'une propriété du post de votre blog, ou de tout autre contenu du site web accessible par une URL. C'est construit par le programme selon des règles que vous définissez. Au final, puisque un post aura un slug, celui-ci sera enregistré dans une colonne de la table des posts. Vous vous compliquez trop la vie !
    C'est comme si vous cherchiez à faire une association entre une personne physique et sa date de naissance alors qu'il est bien plus simple et suffisamment pertinent d'enregistrer la date de naissance dans une colonne de la table des personnes physiques.

    Le fait que le slug soit une propriété d'un article, d'un commentaire, d'une page, ne vous oblige pas à externaliser le slug de ces entités-types.
    Pensez à la date de validité, par exemple... elle peut exister dans une table des diplômes (le bac F3 que j'ai passé en 1981 n'existe plus), des villes (à cause du regroupement de certaines communes), des pays (parce qu'ils peuvent changer de nom, comme le Zaïre devenu République Démocratique du Congo ; ou par fusion des deux Allemagnes en une seule), des pièces d'identité, des contrats, des produits périssables...

    Pour modéliser, interrogez-vous sur les différentes choses que vous aurez dans votre blog (pages, posts, commentaires, annonces, images, vidéos...) avant d'entrer dans le détail de chacune de ces choses.

    Commencez simplement par le coeur du contenu du blog : des publications et des commentaires sur ces publications. Écrivez la règle de gestion et proposez le MCD qui en découle.
    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 !

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