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 :

Studio photo


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 11
    Points
    11
    Par défaut Studio photo
    Bonjour,

    J'ai un sacré souçi je doit faire un site web avec accès à une base de données en rapport avec mes cours (jusque la rien de bien compliquer) mais le souçi c'est qu'en faisant l'analyse je me rend compte que nos cours ont était un peu expédié au lance pierre et je me retrouve à m'embrouiller avec les cardinalité du MCD ! Clairement ma spécialité n'est pas l'analyse et la conception de base de données mais je suis malheureusement obliger de tout faire tout seul et sans possibilités de me faire aider par mon entourage ! Il me reste un mois avant d'avoir a rendre mon projet et je n'ai toujours pas de base de données " propre " de crée ( j'ai juste préparer des tables pour faire tourner mon code que j'adapterai si j'ai des modifications a faire dessus !

    Donc pour vous donner un exemple de mon mcd, le voici => Nom : mcd 1.2.jpg
Affichages : 5630
Taille : 106,4 Ko

    Je pense que mes cardinalités ne sont pas du tout correcte , et lorsque je génere mon MPD je suis encore plus embrouillé :'( et le temps commence a jouer contre moi !

    Il est plus que probable que beaucoup de choses ne vont pas dedans c'est pourquoi j'ai besoin d'un peu d'aide de votre part Svp ! ( et merci d'avance !)

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


    Prenons le cas de l’association entre ADMINISTRATEUR et COMMENTAIRE. Vous avez modélisé ceci :


    [ ADMINISTRATEUR ]--1,1--------(MODERE)--------0,N--[ COMMENTAIRE]


    Certains représentent les cardinalités comme vous l’avez fait (voyez l’article de Peter Chen, The Entity-Relationship Model—Toward a Unified View of Data), néanmoins les AGL francophones représentent les cardinalités à la façon de Merise, c'est-à-dire ... dans l’autre sens :


    [ ADMINISTRATEUR ]--0,N--------(MODERE)--------1,1--[ COMMENTAIRE]


    Forcément, nous connaissons tous Blanche-Neige, alors que les Anglo-saxons connaissent plutôt Snow White...

    En l’état, selon votre MCD, un administrateur donné modère au moins et au plus un commentaire, tandis qu’un commentaire donné peut être modéré par une armée d’administrateurs : tel Dagobert, il va falloir que remettiez tout ça à l’endroit

    Cela vaut bien sûr pour toutes les autres associations entre entités-types.

    Pour faciliter la lecture des cardinalités, procédez ainsi : un administrateur peut participer au moins une fois à l’association AFFECTER (=> 0,N) ; un commentaire participe une fois et une seule à cette association (=> 1,1).


    De très nombreux mots dans votre diagramme sont illisibles (par exemple le nom de l’association entre ADMINISTRATEUR et SEANCE), merci d’utiliser une taille plus grande pour la police de caractères.


    Veuillez compléter l’association MODIFIE, la seule patte avec CLIENT ne suffit pas.


    Une fois les cardinalités remises dans le bon sens, on regardera votre MCD de plus près. Et n’hésitez pas à fournir la liste des règles de gestion des données, voyez à ce propos le blog de CinePhil.


    Ne perdez pas 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.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Tout d'abord un grand merci pour avoir pris le temps de répondre et ceci très rapidement

    J'ai donc suivi vos conseil et refait tout mon MCD (sous PowerAmc au lieu de JMerise ) en changeant mes cardinalités, en modifiant certains termes des relations pour une meilleure compréhension. J'ai aussi généré le MPD (modele physique) et le MLD (modele logique) si cela permet de mieux comprendre ou analyser les éventuelles erreur !? (je les ajouterais à la fin de ce message )

    Donc concernant mon MCD les règles de gestion sont :


    R1 : Une photo appartient à 1 et 1 seule catégorie photo.
    R2 : Une catégorie photo peut appartenir à plusieurs photos.
    R3 : Une catégorie photo possède plusieurs sous-catégories photos.
    R4 : Une sous-catégorie photo peut posséder 1 et 1 seule catégorie photo.
    R5 : Une photo peut être liée à 1 et 1 seul client.
    R6 : Un client peut être lié à plusieurs photos.
    R7 : Une photo correspond à 1 et 1 seule séance photo.
    R8 : Une séance photo peut correspondre à plusieurs photos.
    R9 : Une photo peut avoir 1 et 1 seule sous-catégorie photo.
    R10 : Une sous-catégorie photo peut avoir plusieurs photos.
    R11 : Un client peut créer plusieurs sélections photos.
    R12 : Une sélection photo peut être créée par plusieurs clients.
    R13 : Un client peut poster plusieurs commentaires.
    R14 : Un commentaire peut être posté par plusieurs clients.
    R15 : Un client peut demander plusieurs séances photos.
    R16 : Une séance photo peut être demandée par plusieurs clients.
    R17 : Une sélection photo peut regrouper plusieurs séances photos.
    R18 : Une séance photo peut regrouper plusieurs sélections photos.
    R19 : Une sélection photo peut être traitée par 1 et 1 seul administrateur.
    R20 : Un administrateur peut traiter plusieurs sélections photos.
    R21 : Une sélection photo peut compter 1 et 1 seule liste sélection photo.
    R22 : Une liste sélection photo peut compter plusieurs sélections photos.
    R23 : Une liste sélection photo peut comprendre plusieurs formats photos.
    R24 : Un format photo peut être compris dans plusieurs listes sélection photos.
    R25 : Un administrateur peut modérer des commentaires.
    R26 : Un commentaire peut être modéré par 1 et 1 administrateur.
    R27 : Un administrateur peut gérer plusieurs séances photos.
    R28 : Une séance photo peut être gérée par 1 et 1 seule administrateur.
    R29 : Un administrateur peut être 1 et 1 seul utilisateur.
    R30 : Un utilisateur peut être 1 et 1 seul administrateur.
    R31 : Un utilisateur est rattaché à 1 et 1 seul client.
    R32 : Un client peut être rattaché à plusieurs utilisateurs.
    R33 : Un administrateur peut gérer plusieurs photos.
    R34 : Une photo peut être gérée par 1 et 1 seul administrateur.
    R35 : Un administrateur peut gérer plusieurs catégories photos.
    R36 : Une catégorie photo peut être gérée par 1 et 1 seul administrateur.
    R37 : Un administrateur peut valider plusieurs sélections photos.
    R38 : Une sélection photo peut être validée par 1 et 1 seul administrateur.
    R39 : Un client peut consulter 1 et 1 seul compte.
    R40 : Un compte peut être consulté par 1 et 1 seul client.
    R41 : Un client peut passer plusieurs commandes.
    R42 : Une commande peut être passée par 1 et 1 seul client.
    R43 : Une commande peut être déclenchée par 1 et 1 seule sélection photo.
    R44 : Une sélection photo peut déclencher 1 et 1 seule commande.
    R45 : Une commande peut être enregistrée 1 et 1 seul administrateur.
    R46 : Un administrateur peut enregistrer plusieurs commandes.

    Concernant le schéma du MCD le voici =>

    Nom : CaptureMCD.JPG
Affichages : 3465
Taille : 138,7 Ko

    La le MLD =>

    Nom : CaptureMLD.JPG
Affichages : 3313
Taille : 119,2 Ko

    Et içi le MPD =>

    Nom : CaptureMPD.JPG
Affichages : 3315
Taille : 125,6 Ko

    p.s: j'aurai bien mis les fichiers de powerAmc mais impossible de les charger même compresser apparemment ! :/
    Mais si besoin je peux toujours les envoyer par mail

    Et encore merci !

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


    Je vois que vous avez dressé l’inventaire des règles de gestion des données, c’est très bien ! Manifestement vous aimez le travail bien fait.


    Une observation concernant les cardinalités 1,1, et 0,1 :

    Prenons le cas de l’énoncé de la règle R1 : « Une photo appartient à 1 et 1 seule catégorie photo ». La cardinalité dans le MCD est sans ambiguïté 1,1.

    Prenons le cas de l’énoncé de la règle R4 : « Une sous-catégorie photo peut posséder 1 et 1 seule catégorie photo ». « peut » et « 1 et 1 » sont contradictoires et la phrase devient donc ambiguë. Si l’appartenance d’une sous-catégorie à une catégorie est optionnelle, il serait préférable d’écrire : une sous-catégorie appartient de 0 à 1 catégorie.

    Cela dit, par définition une sous-catégorie appartient forcément à une catégorie, en conséquence de quoi, dans le MCD, la patte R4 connectant l’entité-type SOUS_CATEGORIE_PHOTO et l’association POSSEDER devrait être porteuse d’une cardinalité 1,1 et non pas 0,1.

    Règle R9 : une photo n’appartient-elle pas à une et une seule sous-catégorie de photos ? Si oui, dans le MCD, la cardinalité 0,1 correspondant à cette règle est à remplacer par 1,1. Sinon, on conserve la cardinalité 0,1, mais il y a un malaise, car lorsqu’une photo appartient à une sous-catégorie, il y a redondance des associations AVOIR et APPARTENIR, donc risque d’incohérence dans la base de données si on ne surveille pas de près cette redondance, donc danger !

    Par contre, si chaque sous-catégorie de photos appartient nécessairement à une et une seule catégorie de photos, et si chaque photo appartient nécessairement à une et une seule sous-catégorie de photos, le danger est éliminé : Supposons que la sous-catégorie de photos Sc1 appartienne à la catégorie de photos C1. Si la photo Ph1 appartient à la sous-catégorie Sc1, alors par transitivité on infère que cette photo Ph1 appartient à la catégorie C1, autrement dit l’association APPARTENIR connectant les entités-types PHOTO et CATEGORIE_PHOTO n’est pas essentielle, et comme dit Guillaume d’Ockham : « Pluralitas non est ponenda sine necessitate », en vertu de quoi l’association APPARTENIR doit disparaître du MCD.



    Citation Envoyé par Redreams
    R11 : Un client peut créer plusieurs sélections photos.
    R12 : Une sélection photo peut être créée par plusieurs clients.
    La règle R12 sous-entend que les clients Cli1, Cli2, etc., peuvent se mettre ensemble pour créer une sélection de photos. Intuitivement, j’aurais tendance à penser que Cli1 et Cli2 créent en fait chacun leur collection, Col1 par Cli1 et Col2 par Cli2, et qu’il est possible que ces deux collections soient identiques, mais de manière fortuite. Dans ces conditions, si les clients Cli1, Cli2 ne sont pas de connivence pour créer une collection donnée, il serait plus sain de faire évoluer la règle R12 : une sélection photo est créée par au moins et au plus un client, d’où une cardinalité 1,1 (si certaines sélections de photos ne sont pas crées par des clients, la règle R12 est à aménager ainsi : une sélection photo est créée par 0 à 1 client, d’où une cardinalité 0,1).

    La règle R14 sous-entend que les clients Cli1, Cli2, etc., peuvent se mettre ensemble pour créer un commentaire. Comme dans le cas des sélections de photos (cf. mes observations sur la règle R12), ne serait-ce pas plutôt chaque client qui pond ses propres commentaires ?

    La règle R16 sous-entend que les clients Cli1, Cli2, etc., peuvent se mettre ensemble pour demander une séance de photos. Là encore, ne serait-ce pas plutôt chaque client qui demande ses propres séances ?

    Pourriez-vous expliquer ce qu’est une séance de phots dans le contexte de votre application ?


    Je n’ai pas examiné complètement votre MCD et les règles de gestion dont il est issu, mais je préfère que soit d’abord réglé le problème de l’ambiguïté des cardinalités 0,1. Ainsi, la règle R42 est caractéristique, elle dénote un défaut d’adéquation avec la réalité : une commande sans client ça n’est pas pertinent et, dans le MCD, en toute logique la patte R42 devrait être porteuse d’une cardinalité 1,1.

    Il faudrait que vous justifiiez les cardinalités 0,1 quand elles sont pertinentes, non remplaçables par 1,1...

    Allez ! Après ces premiers tours de chauffe et réglages préliminaires, on va progresser !
    (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.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    J'ai donc tout revu, mais je vais d'abord vous expliquer un peu le but de l'application pour vous expliquer un peu en quoi tout ça devra servir !

    Alors il s'agit d'un studio photo qui souhaite posséder un site web, (et une application mobile quasi similaire) , le site devra posséder une galerie comprenant une image de chaque type de catégorie, qui donneront accès à ces galeries selon leurs catégorie qui elle donneront accès à des galeries des sous-catégorie. (jusque la rien de bien compliquer).
    Le site devra donc avoir une partie client, un client connecté pourra consulter une ou plusieurs de ses séances photo mis en ligne par l'administrateur; il pourra aussi poster des commentaires, réaliser des sélections de photos (selon les photos mis en ligne de la séance photo concerner) et ensuite une fois sa sélection faite et valider par l'administrateur il pourra effectuer et consulter ces commandes.

    L'administrateur lui devra donc pouvoir gérer les photos (que ce soit des galeries général, ou uniquement celle des client ), gérer aussi les séances, valider et traiter une sélection de photo, gérer les commande, gérer les catégories, gérer les clients... et je crois que j'ai fais le tour ou du moins suffisamment pour avoir une meilleure idée du projet.

    Donc ci dessous voici les règles de gestion, réécrites après quelques modification et beaucoup de prises de tête ! Cependant pour la relation ternaire entre " Utilisateur, administrateur et Client " je ne vois pas comment formuler sa ! De même pour les cardinalités car à chaque fois un message d'erreur s'affichait ! Puis je n'ai pas vraiment vu sa en cours sauf pendant.... 5 minutes ! :-/

    (Au passage encore une fois merci et vous êtes très pédagogue ! Mes cours aurait peut être était plus simple avec vous ! (enfin peut être !^^))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    R1 : Une sous-catégorie photo possède 1 et 1 seule catégorie photo.
    R2 : Une catégorie photo possède 1 ou plusieurs sous-catégories photos.
    R3 : Une sous-catégorie photo a 0 ou plusieurs photos.
    R4 : Une photo a 1 et 1 seule sous-catégorie photo.
    R5 : Une photo est liée au plus à 1 seul client.
    R6 : Un client est lié à 0 ou plusieurs photos.
    R7 : Une photo correspond à 1 et 1 seule séance photo.
    R8 : Une séance photo correspond à 1 ou plusieurs photos.
    R9 : Une photo est gérée par 1 et 1 seul administrateur.
    R10 : Un administrateur gère 1 ou plusieurs photos.
    R11-R12-R13 : ? (administrateur, utilisateur, client)  
    R14 : Un administrateur gère 1 ou plusieurs séances photos.
    R15 : Une séance photo est gérée par 1 et 1 seul administrateur. 
    R16 : Un administrateur modère 0 ou plusieurs commentaires.
    R17 : Un commentaire est modéré par 1 et 1 seul administrateur. 
    R18 : Un administrateur traite 0 ou plusieurs sélections photos.
    R19 : Une sélection photo est traitée par 1 et 1 seul administrateur.
    R20 : Un administrateur gère 0 ou plusieurs catégories photos.
    R21 : Une catégorie photo est gérée par 1 et 1 seul administrateur. 
    R22 : Un administrateur enregistre 0 ou plusieurs commandes.
    R23 : Une commande est enregistrée 1 et 1 seul administrateur.
    R24 : Une commande est passée par 1 et 1 seul client.
    R25 : Un client passe 0 ou plusieurs commandes.
    R26 : Une commande est déclenchée par au plus 1 sélection photo.
    R27 : Une sélection photo déclenche 0 ou plusieurs commandes.
    R28 : Une sélection photo est créée par 1 et 1 seul client.
    R29 : Un client crée 0 ou plusieurs sélections photos.
    R30 : Une sélection photo regroupe 1 et 1 seule séance photo.
    R31 : Une séance photo regroupe 0 ou plusieurs sélections photos.
    R32 : Une sélection photo compte 1 ou plusieurs listes sélections photos.
    R33 : Une liste sélection photo compte 1 et 1 seule sélection photo.
    R34 : Une liste sélection photo comprend 1 ou plusieurs formats photos.
    R35 : Un format photo est compris dans 1 ou plusieurs listes sélection photos.
    R36 : Un client poste 0 ou plusieurs commentaires. 
    R37: Un commentaire est posté par 1 et 1 seul client.
    R38 : Un client demande 0 ou plusieurs séances photos.
    R39 : Une séance photo est demandé par 1 et 1 seul client.
    R40 : Un client modifie 0 ou plusieurs informations sur son compte.
    R41 : Une information est modifiée par 1 et 1 seul client.
    Voici le MCD => Nom : Capture.JPG
Affichages : 3400
Taille : 130,3 Ko

    J'ai aussi le MPD et le MLD que sa généré mais je les mettrais si besoin car si il y a des erreurs dans le MCD ce n'est pas utile de les publier ici. Encore une fois merci pour votre aide

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


    Vous avez mis le paquet sur le MCD et la rédaction des règles de gestion des données, on ne peut que vous en féliciter.

    Vous avez rédigé ces règles dans les règles (sic) de l’art : je vote, car c’est du travail, le plus souvent fastidieux, ce qui fait que 9 fois sur 10 les gens rechignent et s’abstiennent, mais ce travail est pourtant essentiel...

    Comme vous le savez, le choix des verbes pour les associations est important pour une bonne compréhension du sujet (au moins quand on prend connaissance du MCD). Ainsi, concernant les règles R5 et R6, qu’entendez-vous par « lier » ? (J’ai une observation ci-dessous concernant R5).


    Inférence des règles :

    Selon R7, une photo correspond à 1 et 1 seule séance photo.
    Selon R15, une séance photo est gérée par 1 et 1 seul administrateur.
    Autrement dit, cet administrateur gère l’ensemble des photos ce cette séance, donc la règle R9 (selon laquelle une photo est gérée par 1 et 1 seul administrateur) est une conséquence de R7 et R15 : elle devrait disparaître (au moins du diagramme), vous pouvez la conserver dans la liste des règles, mais à condition de préciser qu’elle n’est qu’une conséquence des deux autres règles (même chose pour la règle R10).


    De la même façon, la règle R19 est une conséquence de R30 et R15 elle devrait subir un sort identique à celui de R9.

    Même chose normalement pour la règle R5, laquelle (au moins du point de vue du MCD) est une conséquence des règles R7 et R39.


    A propos des commentaires postés par les clients : ce sont des commentaires généraux ? Sans relation avec des photos en particulier ?


    Dans les bases de données relationnelles, le mot « Liste » n’est pas recommandé : il serait opportun de renommer l’entité-type LISTE_SELECTION_PHOTO en SOUS_SELECTION_PHOTO (mais peut-être avez-vous mieux...)



    Citation Envoyé par Redreams
    R11-R12-R13 : ? (administrateur, utilisateur, client)

    Cependant pour la relation ternaire entre " Utilisateur, administrateur et Client " je ne vois pas comment formuler ça !
    Qu’est-ce qu’un utilisateur ? Quel rôles respectifs voyez-vous tenir ces trois types d’acteurs dans leur association ?
    N’oubliez pas ce que disait Boileau : « Ce qui se conçoit bien ... ». On devrait arriver à mettre cette affaire à plat.

    J’ai d’autres choses à dire concernant les commandes, on verra ça par la suite.

    En tout cas, keep up the good job !


    N.B. Plutôt que la balise CODE, utilisez de préférence la balise PRE pour les règles de gestion 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.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Bonjour " fsmrel" !

    C'est sur que j'ai mis le paquet pour le MCD et la rédaction des règles de données (même si je fais des erreurs) mais quitte à faire quelques chose autant le faire sérieusement et proprement ! Mais merci de me féliciter mais c'est plutôt à moi de vous félicitez d'aider une personne que vous ne connaissez pas en utilisant votre temps pour cela, donc encore une fois merci

    Concernant les inférences des règles, j'ai corrigé selon vos dires ou du moins ce que j'ai cru en comprendre !

    Pour les commentaires, ils concerneront plutôt l'avis des clients sur le studio mais il vrai que je pourrais envisager de les lier aussi au photos mais cela sera ma dernière priorité de mon projet. (Etant donner que les commentaires ne sont pas une chose essentiel à réaliser dans le projet !)

    Puisque dans les bases de données relationnelles, le mot « Liste » n’est pas recommandé :j'ai donc décider de renommer l’entité-type LISTE_SELECTION_PHOTO en DETAIL_SELECTION_PHOTO (mais peut-être que cela non plus n'est pas recommandé ? )

    Qu’est-ce qu’un utilisateur ? Quel rôles respectifs voyez-vous tenir ces trois types d’acteurs dans leur association ?
    Pour moi un utilisateur définira quel type d'acteur vient de se connecter afin de déterminer sur quel accès l'utilisateur se retrouvera connecter ! ( la partie client ou la partie administrateur qui ne seront pas du tout similaire que ce soit au niveau du design ainsi que pour les différentes actions possible !)

    Concernant les commandes j'ai modifié la relation qui relier COMMANDE à SELECTION_PHOTO par COMMANDE à DETAIL_SELECTION_PHOTO car je me suis dit qu'une commande ne peut être réaliser au moment d'une sélection si le détail de la sélection n'existe pas encore ! Mais possible que je me trompe la aussi !

    Passons maintenant aux règles de gestion :
    Règles de gestion :
    
    R1 : Une sous-catégorie photo possède 1 et 1 seule catégorie photo. 
    
    R2 : Une catégorie photo possède 1 ou plusieurs sous-catégories photos. 
    
    R3 : Une sous-catégorie photo a 0 ou plusieurs photos. 
    
    R4 : Une photo a 1 et 1 seule sous-catégorie photo. 
    
    Conséquences de r7 et r39 : Une photo est rattachée au plus à 1 seul client. Un client est rattaché à 0 ou plusieurs photos. 
    
    R7 : Une photo correspond à 1 et 1 seule séance photo. 
    
    R8 : Une séance photo correspond à 1 ou plusieurs photos. 
    
    Conséquence de r7 et r 15: Une photo est gérée par 1 et 1 seul administrateur. Un administrateur gère 1 ou plusieurs photos. 
    
    R11 : Un administrateur est définit en tant que 1 et un seul utilisateur.
    
    R12 : Un Utilisateur définit un ou plusieurs acteurs  (administrateur, client). 
    
    R13 : Un client est défini en tant que 1 et un seul utilisateur.
    
    R14 : Un administrateur gère 1 ou plusieurs séances photos. 
    
    R15 : Une séance photo est gérée par 1 et 1 seul administrateur. 
    
    R16 : Un administrateur modère 0 ou plusieurs commentaires.
    
    R17 : Un commentaire est modéré par 1 et 1 seul administrateur.
    
     Conséquence de r30 et r15 : Une sélection photo est traitée par 1 et 1 seul administrateur. Un administrateur traite 0 ou plusieurs sélections photos. 
    
    R20 : Un administrateur gère 0 ou plusieurs catégories photos. 
    
    R21 : Une catégorie photo est gérée par 1 et 1 seul administrateur. 
    
    R22 : Un administrateur confirme 0 ou plusieurs commandes. 
    
    R23 : Une commande est confirmé par 1 et 1 seul administrateur. 
    
    R24 : Une commande est passée par 1 et 1 seul client. 
    
    R25 : Un client passe 0 ou plusieurs commandes. 
    
    R26 : Une commande est déclenchée par une et un seul détail sélection photo. 
    
    R27 : Un détail sélection photo peut déclencher 0 ou plusieurs commandes. 
    
    R28 : Une sélection photo est créée par 1 et 1 seul client.
    
    R29 : Un client crée 0 ou plusieurs sélections photos.
    
    R30 : Une sélection photo regroupe 1 et 1 seule séance photo. 
    
    R31 : Une séance photo regroupe 0 ou plusieurs sélections photos. 
    
    R32 : Une sélection photo compte 1 ou plusieurs détail sélection photo.
    
    R33 : Un détail sélection photo compte 1 et 1 seule sélection photo. 
    
    R34 : Un détail sélection photo comprend 1 ou plusieurs formats photos. 
    
    R35 : Un format photo est compris dans 1 ou plusieurs détail sélection photo. 
    
    R36 : Un client poste 0 ou plusieurs commentaires. 
    
    R37: Un commentaire est posté par 1 et 1 seul client. 
    
    R38 : Un client demande 0 ou plusieurs séances photos. 
    
    R39 : Une séance photo est demandé par 1 et 1 seul client. 
    
    R40 : Un client modifie 0 ou plusieurs informations sur son compte. 
    
    R41 : Une information est modifiée par 1 et 1 seul client.
    
    
    Et voici le MCD :

    Nom : CaptureMCD.JPG
Affichages : 3383
Taille : 161,6 Ko


    Voilà j'espère ne pas avoir fait trop d'erreur mais en tout cas merci pour le coup de main

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


    Citation Envoyé par Redreams
    j'ai donc décidé de renommer l’entité-type LISTE_SELECTION_PHOTO en DETAIL_SELECTION_PHOTO.
    C’est parfait, j’achète !


    A propos de la règle R12 :

    Citation Envoyé par Redreams
    Pour moi un utilisateur définira quel type d'acteur vient de se connecter afin de déterminer sur quel accès l'utilisateur se retrouvera connecter ! ( la partie client ou la partie administrateur qui ne seront pas du tout similaire que ce soit au niveau du design ainsi que pour les différentes actions possible !)

    Ne s’agit-il pas de signifier qu’un utilisateur est soit un client, soit un administrateur ? Si c’est cela, on va dire que les entités-types ADMINISTRATEUR et CLIENT font l’objet d’une généralisation, donnant naissance à l’entité-type UTILISATEUR, jouant le rôle de surtype, où l’on factorise les propriétés qu’ADMINISTRATEUR et CLIENT ont en commun (entités-types qui deviennent des sous-types d’UTILISATEUR).

    Pour cela, les 3 entités-types étant définies comme ci-dessous, on clique sur l’icône « Héritage » :





    Puis on fait un drag/drop depuis un des deux sous-types (CLIENT par exemple) vers le surtype. Au résultat, CLIENT est sous-type d’UTILISATEUR (ceci est symbolisé par une lunule) :





    Après en avoir fait un drag/drop depuis l’autre sous-type à destination de la lunule, on obtient ceci :





    On clique alors sur la lunule pour signifier que les sous-types sont exclusifs (un utilisateur est soit un client, soit un administrateur, mais ne peut pas être les deux à la fois) et complets (un utilisateur est obligatoirement un client ou un administrateur). On a donc un partitionnement, c'est-à-dire, comme le disait Pierre Dac à sa façon : « Le monde des uns n’est pas celui des autres, bien que le monde des uns et des autres soit le monde de tout le monde » :






    Au résultat :






    Vous observerez que les entités-types ADMINISTRATEUR et CLIENT n’ont pas d’identifiant en propre : elles héritent implicitement de celui de l’entité-type UTILISATEUR.


    Au passage (en cliquant sur la lunule), on précise que chaque entité-type donnera lieu à une table au niveau tabulaire (disons SQL), et que seul l’attribut identifiant de l’entité-type UTILISATEUR (à savoir l’attribut id_utilisateur) sera automatiquement recopié par l’AGL dans les tables ADMINISTRATEUR et CLIENT :





    A propos des identifiants alternatifs

    Si deux utilisateurs ne peuvent pas avoir la même adresse de courriel (attribut mail_utilisateur), alors on déclare une contrainte d’unicité à cet effet, un identifiant alternatif {mail_utilisateur}, symbolisé dans les images ci-dessus par le mickey <ai> placé à côté du nom de l’attribut. Pour parvenir à cela voyez l’exemple que je fournis ici.


    Règle R27 :

    L’énoncé de la règle R27 et la cardinalité 0,1 porté par la patte connectant l’entité-type DETAIL_SELECTION_PHOTO et l’association DECLENCHER se contredisent.


    Par ailleurs, l’entité-type DETAIL_SELECTION_PHOTO est faible (weak entity-type) par rapport à l’entité-type SELECTION_PHOTO, elle n’en est jamais qu’une propriété, multivaluée certes, mais propriété quand même. il serait préférable d’utiliser l’identification relative.

    Avec PowerAMC, cliquer sur le lien connectant l’entité-type DETAIL_SELECTION_PHOTO et l’association Compter, et cocher la case « Identifiant » :





    L’identifiant de DETAIL_SELECTION_PHOTO n’est plus le singleton {id_detail_selection}, mais la paire {id_selection_photo, id_detail_selection}, même si ça ne se voit pas sur le diagramme. En cherchant sur le site avec les mots-clés « identification » « relative », « fsmrel », vous trouverez un tas d’exemples. Si vous avez besoins d’explications comlémentaires, n’hésitez pas....



    Citation Envoyé par Redreams
    c'est plutôt à moi de vous féliciter
    Chez developpez.com, il y a manifestement des retraités préférant transmettre ce qu’ils ont pu apprendre et pratiquer du temps où ils étaient actifs, plutôt que rester bêtement scotchés à la télé...

    En échange, si certains messages ont pu vous aider, n’hésitez pas à voter...



    Il se fait tard, je regarderai la suite demain
    (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.

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


    Si deux séances ne peuvent pas avoir le même numéro, alors {num_seance} est identifiant alternatif de SEANCE_PHOTO.

    Une sous-catégorie est en général une propriété multivaluée d’une catégorie : l’entité-type SOUS_CATEGORIE_PHOTO pourrait être identifiée relativement à l’entité-type CATEGORIE_PHOTO.

    Entité-type PHOTO : quel est le rôle de l’attribut date_ajout ? Date de l’affectation d’une photo à une sous-catégorie ?

    Entité-type COMMANDE : {num_commande} est identifiant alternatif. Quel est le rôle de l’attribut valide_com ? Ce booléen passe à "vrai" seulement quand l’administrateur a confirmé la commande ? Les attributs nom_com, prenom_com, etc. caractérisent le destinataire (qui n’est pas forcément le client je suppose) ? Sinon qui ?

    Entité-type SELECTION_PHOTO : {num_selection} est identifiant alternatif. Si la valeur prise par l’attribut nb_selection_photo est calculable (par exemple nombre de détails composant la sélection), alors il doit disparaître.

    Règles R40 et R41 : l’énoncé de ces règles n’a rien à voir avec l’association MODIFIER : en effet, celle-ci exprime une hiérarchie des clients ! Ce montage doit disparaître... Si un client souhaite modifier les données qui le concernent, il le fera via l’écran ad-hoc que vous lui proposerez...



    Maintenant, comment les choses se passent-elles dans le temps ? Je suppose que le client Raoul fait une demande pour une séance, laquelle est effectuée à la date D1. Je suppose encore qu’au cours de cette séance sont créées des photos qui sont incorporées dans des sous-catégories (donc dans des catégories). Une séance est du ressort d’un administrateur (règles R14, R15). Est-ce nécessairement l’administrateur qui gère ses catégories qui doit gérer les séances des photos parties prenantes dans cette affaire ?

    Ensuite, à la date D2, Raoul crée une sélection en référence à une séance. S’agit-il obligatoirement d’une séance demandée (règles R38, R39) par Raoul lui-même ? Peut-il s’agir d’une séance demandée par un autre client ?

    Je note que d’après le MCD, Une sélection concerne toutes les photos d’une séance puisqu’il n’y a pas de lien direct entre les entités-types SELECTION_PHOTO et PHOTO.



    Citation Envoyé par Redreams
    Concernant les commandes j'ai modifié la relation qui relier COMMANDE à SELECTION_PHOTO par COMMANDE à DETAIL_SELECTION_PHOTO car je me suis dit qu'une commande ne peut être réaliser au moment d'une sélection si le détail de la sélection n'existe pas encore ! Mais possible que je me trompe la aussi !
    Attention, car chaque détail va déclencher une commande... Mais si j’ai bien compris, une commande fait référence à une seule sélection (règle R43 présente dans votre message #3). On devrait donc revenir à la situation antérieure, d’autant que selon le MCD (cardinalité 1,n) et la règle R32, une sélection comporte au moins un détail.

    Raoul passe commande à la date D3. La sélection référencée par la commande doit-elle être nécessairement une sélection créée par Raoul ?


    Il faudra impérativement qu’on traite du mélange interdit ou possible des photos du client CL1 et du client CL2, plus précisément des contraintes de chemin...


    En attendant, je vous passe la main...
    (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. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Donc pour l'histoire des catégorie j'ai donc rattaché SOUS_CATEGORIE uniquement à CATEGORIE et ainsi déplacer la relation AVOIR (qui allait de PHOTO à SOUS CATEGORIE) directement sur CATEGORIE. Enfin je crois que c'était cela qu'il fallait faire !?

    Le rôle de l'attribut " date_ajout" dans PHOTO consiste uniquement à déterminer la date de son ajout pour pouvoir gérer l'affichage par ordre chronologique des photos.

    Quand à " valide_com ", son but est bien d'être passer à 1 si la commande est valider par l'administrateur (sinon il reste à 0).

    Le rappel des informations dans commande (adresse, nom, etc..) sont là pour la simple raison qu'un client peut confier ces identifiants de connexion à une personne de son entourage pour réaliser une commande ( prenons le cas des photos de mariage, si les mariés doivent gérer les photos pour mamie, pour les cousins, les oncles etc, on aurait très bien pu tout regrouper puis hop qu'ils se débrouillent à savoir qui a pris quoi, qui paye quoi ! Donc pour simplifier tout ça autant leurs laisser la possibilité d'effectuer des commandes en précisant pour qui exactement ! ).

    Donc oui, c'est l'administrateur qui gère à la fois les séances, et les catégories.

    Les séances ne concerne qu'un seul client ( tout autre client ne doit pouvoir accéder à ces photos, si il ne possède pas les identifiants de connexion de ce client, ni le numéro de la séance).

    Une sélection concerne bien toutes les photos d’une séance

    Concernant les contraintes de chemin... j'avoue ne pas vraiment avoir vu ceci durant mes cours (ou sinon j'ai oublié ! :s).
    Mais un client ne doit en aucun cas pouvoir accéder aux photos des autres clients (à leurs photos de séances).

    Concernant l'héritage j'ai eu quelques complications lors de la génération du MLD et MPD étant donner que je n'ai jamais vu sa en cours ! (A ce demander si cela était utile de nous faire des cours aussi peu détailler :/ ) je vous mets donc mon MCD, MLD et MPD que j'ai obtenu après toutes ces modifications... En espérant qu'il n'y a bientôt plus grand chose a faire pour réussir à créer ma base de façon correct et fonctionnel car il ne me reste vraiment plus beaucoup de temps...

    MCD => Nom : CaptureMCD.JPG
Affichages : 3325
Taille : 119,7 Ko

    MLD => Nom : CaptureMLD.JPG
Affichages : 3223
Taille : 118,5 Ko

    MPd => Nom : CaptureMPD.JPG
Affichages : 3281
Taille : 95,2 Ko

    Je me rend compte que beaucoup d'attributs apparaissent à des endroits et je ne comprends pas pourquoi ils apparaissent dans certaines tables !
    Par exemple dans si on prend la table CATEGORIE_PHOTO dans le MPD on voit " id_utilisateur " mais pourquoi il se pointe la lui ! Ou alors " Admin_id_utilisateur " dans commande ! J'ai l'impréssion que dès que je me débloque quelques part il y a un nouveau soucis qui apparait ! C'est comme faire du pédalo sans être sur de l'eau ! Je pédale, je pédale mais j'avance pas !

  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 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut Un coup de turbo...
    Bonsoir Redreams,


    Citation Envoyé par Redreams
    pour l'histoire des catégorie j'ai donc rattaché SOUS_CATEGORIE uniquement à CATEGORIE et ainsi déplacer la relation AVOIR (qui allait de PHOTO à SOUS CATEGORIE) directement sur CATEGORIE. Enfin je crois que c'était cela qu'il fallait faire !?
    Comme je l’ai évoqué dans me message #8 à propos de l’entité-type DETAIL_SELECTION_PHOTO, il est des entités-types qui sont faibles par rapport à d’autres : il in est ainsi de SOUS_CATEGORIE_PHOTO par rapport à CATEGORIE_PHOTO. Mais ça n’est pas pour autant qu’il faille changer les règles de gestion des données : les règles R3 et R4 présentes dans le message #7 restent d’actualité, l’entité-type PHOTO reste associée à l’entité-type (faible) SOUS_CATEGORIE_PHOTO :






    Citation Envoyé par Redreams
    c'est l'administrateur qui gère à la fois les séances, et les catégories
    La réponse est ambiguë. Je repose ma question différemment :

    Une séance est du ressort d’un administrateur (règles R14, R15). Si l’administrateur Albert gère ses catégories, l’administrateur Bernard peut-il gérer les séances des photos correspondantes à la place d’Albert ?

    Mais si vous êtes pressé par le temps, on laisse le MCD en l’état, il n’y a pas péril en la demeure.

    Dans les diagrammes précédents, une photo était attachée à au moins et au plus une séance, mais dans votre dernier MCD, « au moins » a été remplacé par « 0 » : ce changement est important. Que s’est-il passé ? Il y a des photos hors séance ? donc ne correspondant à aucun client ?


    A propos des contraintes de chemin :

    Au vu du diagramme ci-dessous, le client Raoul peut demander une séance de photos Sn1, laquelle pourra regrouper les sélections Sel1, Sel2, etc. Cela dit, rien n’interdit du point de vu du MCD de brancher le client Fernand sur une ou plusieurs de ces sélections :






    Ainsi, on pourrait parfaitement avoir la situation suivante au stade SQL, sans que le SGBD et les contraintes référentielles n’y voient d’inconvénient :

    CLIENT

    
    id_utilisateur ...
                 1 ...
                 2 ...
    
    

    SEANCE_PHOTO

    
    id_seance    id_utilisateur ...
            1                 1
    
    

    SELECTION_PHOTO

    
    id_selection_photo    id_seance    id_utilisateur
                     1            1                 2
    
    
    Conclusion : l’utilisateur 2 a accès aux photos de l’utilisateur 1...


    Pour éviter cette situation fâcheuse, on considère SEANCE_PHOTO comme une entité-type faible (donc non autonome) relativement à l’entité-type CLIENT (ce qui est sémantiquement parfaitement légitime, puisqu’une séance est viscéralement attachée à un client). On matérialise la chose en identifiant SEANCE_PHOTO relativement à CLIENT. Pour les mêmes raisons, on pourrait identifier SELECTION_PHOTO relativement à SEANCE_PHOTO, et on pourrait aussi identifier SELECTION_PHOTO relativement à CLIENT, mais on peut éventuellement s’en dispenser :






    Conséquence : au stade SQL, l’attribut id_utilisateur est intégré à la clé primaire de la table SEANCE_PHOTO, clé qui n’est plus le singleton {id_seance}, mais la paire {id_utilisateur, id_seance}.

    La situation devient la suivante :


    
    id_utilisateur ...
                 1 ...
                 2 ...
    
    

    SEANCE_PHOTO

    
    id_utilisateur    id_seance    ...
                 1            1    ...
    
    

    SELECTION_PHOTO

    
    id_selection_photo    id_utilisateur_A    id_seance    id_utilisateur_B
                     1                   1            1                   2
    
    
    Où {id_selection_photo, id_utilisateur_A} est une clé étrangère héritée de SEANCE_PHOTO (conséquence de l’association Regrouper_selection), et {id_utilisateur_B} est une clé étrangère héritée de CLIENT (conséquence de l’association Creer_selection).

    Comme on ne veut pas mélanger les photos des uns et des autres, on supprime l’attribut id_utilisateur_B et l’on rend à sa place {id_utilisateur_A} clé étrangère relativement à CLIENT. Maintenant, conséquence de l’identification relative, on a deux chemins redondants pour accéder à une sélection :

    CLIENT > Demander_seance > SEANCE_PHOTO > Regrouper_selection > SELECTION_PHOTO ;

    CLIENT > Creer_selection > SELECTION_PHOTO.

    Il y a redondance, on supprime donc un chemin. Le 1er est évidemment à conserver, alors que le 2e est manifestement inutile, on le supprime, et le MCD devient :






    Je vous vois tousser, mais il n’empêche qu’avec cette représentation non redondante, on n’en est pas moins capable de créer et consulter des sélections, tout en empêchant les mélanges entre clients...

    Pour rester dans la logique des entités-types faibles, on peut très bien identifier SELECTION_PHOTO relativement à SEANCE_PHOTO (ainsi, l’attribut id_utilisateur sera propagé jusqu’à DETAIL_SELECTION_PHOTO, ce qui peut simplifier les requêtes et la vie de l’optimiseur du SGBD, c'est-à-dire booster les performances) :






    A y regarder de près, on pourrait aussi mélanger les commandes d’un client A avec celles d’un client B, il y a en effet deux chemins pour aller de CLIENT à COMMANDE :

    CLIENT > COMMANDE ;

    CLIENT > Demander_seance > SEANCE_PHOTO > Regrouper_selection > SELECTION_PHOTO > déclencher > COMMANDE.

    Pour empêcher les mélanges, on agit cette fois-ci au niveau MLD/MPD, car tous les liens sont ici essentiels, on ne peut en supprimer aucun. Même pas grave, on agit au niveau MPD (voir plus loin).



    Citation Envoyé par Redreams
    Je me rend compte que beaucoup d'attributs apparaissent à des endroits et je ne comprends pas pourquoi ils apparaissent dans certaines tables !
    Par exemple dans si on prend la table CATEGORIE_PHOTO dans le MPD on voit " id_utilisateur " mais pourquoi il se pointe la lui ! Ou alors " Admin_id_utilisateur " dans commande ! J'ai l'impréssion que dès que je me débloque quelques part il y a un nouveau soucis qui apparait ! C'est comme faire du pédalo sans être sur de l'eau ! Je pédale, je pédale mais j'avance pas !
    Prenons le cas de l’attribut id_utilisateur. Au niveau MCD, il n’apparaît qu’une fois, à savoir dans le surtype UTILISATEUR. Au niveau MLD/MPD, il doit être répliqué dans les tables CLIENT et ADMINISTRATEUR, car il sert pour les jointures entre tables UTILISATEUR et CLIENT d’une part, et les jointures entre les tables UTILISATEUR et ADMINISTRATEUR d’autre part. C’est comme cela que Ted Codd a vu les choses en 1969 en créant le modèle relationnel de données (voyez son article fondateur de 1970, A Relational Model of Data for Large Shared Data Banks) : pas de pointeurs pour accéder à l’information, mais comparaison entre les valeurs des attributs. En outre, cette réplication sert pour l’intégrité référentielle : si l’attribut id_utilisateur prend la valeur 12345 dans la table CLIENT, cette valeur doit exister pour l’attribut id_utilisateur de la table UTILISATEUR, sinon : bug ! par exemple, si 12345 est absent de la table UTILISATEUR, comment se nommerait cet utilisateur 12345 ? Allez savoir... Dans une société de crédit automobile, il y a une trentaine d’années de cela, j’avais constaté l’existence de tonnes de contrats faisant référence à des clients inconnus ou bataillon, évaporés ! (tant pis pour la société en question, mais grâce aux sauvegardes, on a pu récupérer les associations manquantes, ouf !)

    Maintenant, il est bien dit qu’une catégorie de photos est gérée par un administrateur : pour effectuer la jointure entre les tables ADMINISTRATEUR et CATEGORIE_PHOTO, c’est encore l’attribut id_utilisateur qui va servir.

    L’attribut Admin_id_utilisateur vous interpelle : c’est lui va servir pour effectuer la jointure entre les tables ADMINISTRATEUR et COMMANDE, pour savoir quel administrateur valide quelle commande. En l’occurrence, dans COMMANDE, PowerAMC a nommé ainsi l’attribut parce que id_utilisateur est déjà utilisé pour le lien avec CLIENT.


    Le MPD

    A ce niveau, Il y a une fenêtre à connaître, qui permet de savoir quelles colonnes de quelles tables servent pour les associations entre celles-ci, c’est la fenêtre « Propriétés de la référence ». Par exemple, pour repérer les colonnes joignant les tables ADMINISTRATEUR et SEANCE_PHOTO on fait un clic droit sur le lien (R7 ou R8 chez vous je pense), d’où ouverture de la fenêtre qui va bien, et dans laquelle on voit dans l’exemple ci-dessous que c’est la colonne id_utilisateur de la table parente ADMINISTRATEUR qui est à joindre avec la colonne id_utilisateur_admin de la table SEANCE_PHOTO :





    Examinons maintenant le MPD que m’a généré l’AGL (je n’ai pas tout mis, par exemple les commentaires sont absents) :






    Table UTILISATEUR : rien à signaler.

    Table ADMINISTRATEUR : rien à signaler. A noter que l’attribut id_utilisateur est à la fois clé primaire et clé étrangère (celle-ci permet de faire référence à la clé primaire {id_utilisateur} de la table UTILISATEUR.

    Table CATEGORIE_PHOTO : rien à signaler. La colonne id_utilisateur permet de savoir quel administrateur gère quelle catégorie.

    Table SOUS_CATEGORIE_PHOTO : comme l’entité-type SOUS_CATEGORIE_PHOTO a été identifiée relativement à l’entité-type CATEGORIE_PHOTO, la clé primaire est la paire {id_categorie_photo, id_sous_categorie_photo}.

    Table PHOTO : comme dans d’autres tables, on a un attribut CLI_id_utilisateur, qui sert manifestement à la jointure des tables SEANCE_PHOTO et PHOTO (on s’en assure en ouvrant la fenêtre « Propriétés de la référence »). L’attribut id_seance binôme avec CLI_id_utilisateur, car la paire {CLI_id_utilisateur, id_seance} est clé étrangère, elle référence la clé primaire {CLI_id_utilisateur, id_seance} de la table SEANCE_PHOTO. On retrouve la paire {id_categorie_photo, id_sous_categorie_photo}, en qualité de clé étrangère, elle référence la clé primaire {id_categorie_photo, id_sous_categorie_photo} de la table SOUS_CATEGORIE_PHOTO. Incidemment, grâce à la présence de l’attribut id_categorie_photo, on sait tout de suite quelle est la catégorie de la photo.

    Table CLIENT : rien à signaler. Plus tard, pour des raisons évidentes de convivialité et d’homogénéité avec autres attributs de la table, je renommerai l’attribut id_utilisateur en id_client.

    Table SEANCE_PHOTO : comme « CLI_id_utilisateur » ça n’est pas très beau comme nom, je le remplacerai par « id_client », en m’étant d’abord assuré, grâce à la fenêtre « Propriétés de la référence » que je ne suis pas à côté de la plaque, et j’en ferai autant au fur et mesure pour les autres tables. Pour sa part, l’attribut id_utilisateur_admin permet de faire la jointure avec la table ADMINISTRATEUR.

    Table SELECTION_PHOTO : du fait de l’identification relative à SEANCE_PHOTO, cette table a pour clé primaire le triplet {CLI_id_utilisateur, id_seance, id_selection} où id_selection sert à dédoublonner les paires {CLI_id_utilisateur, id_seance}.

    Table DETAIL_SELECTION_PHOTO : même principe.

    Table COMMANDE : y a du monde en ce qui concerne les clés étrangères ! Le singleton {id_utilisateur_admin} est clé étrangère par rapport à la clé primaire {id_utilisateur_admin} de la table ADMINISTRATEUR, ce qui permet de savoir quel administrateur gère et valide quelle commande.

    Pour savoir quelles colonnes de la table COMMANDE sont en relation avec quelles colonnes de la table SELECTION_PHOTO :




    Pour savoir quelles colonnes de la table COMMANDE sont en relation avec quelles colonnes de la table CLIENT :






    On constate à cette occasion qu’on deux fois affaire au client : une 1re fois avec l’attribut SEL_CLI_id_utilisateur et une 2e fois avec l’attribut id_utilisateur : on retrouve le problème de la contrainte de chemin laissé en suspens plus haut :

    CLIENT > COMMANDE ;

    CLIENT > Demander_seance > SEANCE_PHOTO > Regrouper_selection > SELECTION_PHOTO > déclencher > COMMANDE.

    La solution consiste à ne conserver qu’un des deux attributs, par exemple id_utilisateur. Mais on demande d’abord à l’AGL de joindre COMMANDE et SELECTION_PHOTO non plus sur SEL_CLI_id_utilisateur, mais sur id_utilisateur.

    Dans un 1er temps, on attaque la liste déroulante qui va bien :




    Dans un 2e temps, on clique sur id_utilisateur : c’est bien désormais la colonne id_utilisateur qui sert pour la jointure avec la table SELECTION_PHOTO :






    Et au niveau du diagramme, c’est net, on voit que l’attribut id_utilisateur participe aux deux clés étrangères (symbolisées par le mickey <fk1,fk3>). On constate aussi que l’AGL a supprimé l’attribut SEL_CLI_id_utilisateur devenu inutile (il ne l’aurait pas fait que je m’en serais chargé) :





    Il ne doit pas manquer grand-chose. J’utilise quand même la touche F4 pour m’assurer que je n’ai pas commis d’erreur...

    Pour éviter les lourdeurs, je renomme carrément en « id_client » les id_utilisateur et CLI_id_utilisateur valant pour les clients. De la même façon, je renomme en id_admin ce qui peut l’être :





    Un coup de F4 et je sauvegarde les modèles...


    N.B. pour ne pas perdre inutilement du temps, vous pouvez passer directement du MCD au MPD (qui pour moi est un MLD du moins graphiquement parlant, car le vrai MPD concerne les index et toute ces sortes de choses, dans la soute SQL).


    Doit-on s’intéresser au script de création des tables ?

    J'espère qu'il n'y a pas trop d'erreurs de copier/coller (et n'oubliez pas de voter pour les messages qui vous ont aidé...)
    (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
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Je vais finir par devoir vous envoyer des chocolats pour vous remercier !

    Donc concernant la règle R14 et R15, par rapport à l'administrateur, théoriquement pour le moment il n'y aura qu'une personne qui sera l'admin pour gérer les séances et le reste mais possible qu'un jour il y en ai plus d'un !

    Concernant les photos, oui, il peut y avoir des photos hors séance qui ne correspondront à aucun client ( mais celle ci seront quand même incorporer dans une catégorie/sous-catégorie, par exemple avec le cas des publicités qui ne représenteront aucun client ! ).

    En tout cas pour un coup de turbo, ça m'a bien fait avancer n'ayant jamais ou quasiment pas vu l'histoire des MPD (enfin grand max 1h en cours...) par contre j'ai toujours des avertissements pour les index ! Je dois donc les créer avec toutes les informations de chaque table ou seulement les infos dont j'aurais besoin (par exemple avec FORMAT_PHOTO, mon index doit comporter tout ou juste " id_format_photo " et "nom_format" ? )

    Et en ce qui concerne le script de création de table je veux bien qu'on y jette un œil car j'ai pu remarquer que les " id " n'était pas écrit avec auto incrémentation une fois le code SQL crée !
    J'ai remarqué aussi que je devrais changer aussi la plupart des " char " par des " varchar " ainsi que des petits détails, tout comme pour la connexion va falloir que je protège le mot de passe ( je pense que je dois modifié " mdp_utilisateur " en le passant en " char (40) " pour utiliser " sha-1 " mais ça aussi sont des choses non vues pendant les cours ! A mon grand regret car je trouve pas ça très logique de faire des utilisateurs sans protéger leurs infos ou identifiants de connexion ! )

    En tout cas merci pour tout le travail déjà fait qui m'a aidé, sans vous j'aurai probablement pas réussi à avancer ! En gros vous êtes un peu mon sauveur

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


    Comme il faut agir vite, je reviens sur la cardinalité 0,1 concernant les photos : je suis d’accord avec votre explication, mais alors évitons de mélanger les photos des clients avec les autres.

    Astuce : Considérons que, comme il y a des papous papas et des papous pas papas, il y a des photos à clients et des photos pas à clients. On aurait donc un surtype PHOTO et deux sous-types PHOTO_CLIENT et PHOTO_PAS_CLIENT, mais comme le second n’a pas d’attributs spécifiques et n’entretient pas de relation particulière avec son voisinage, on va éviter de le mettre en oeuvre, toutes les données concernant les photos « pas à client » sont dans l’entité-type PHOTO. On ajoute donc seulement une entité-type PHOTO_CLIENT sous-type de PHOTO, permettant de faire le lien avec l’entité-type SEANCE_PHOTO :






    Lors du passage au MPD, éviter la recopie dans PHOTO_CLIENT des attributs autres que l’identifiant de PHOTO :






    Ne pas casser ce qui a été fait dans le MPD ! (en faire une sauvegarde...) Lors de la génération du MPD, cocher la case « Conserver les modification » :






    Au résultat dans le MPD :






    Je dois m’absenter un moment, mais je traiterai la suite de votre message dès que possible.

    Quel est votre SGBD ?
    (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. #14
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Addendum en vitesse :


    J’ai demandé une vérification de mon MPD (touche « F4 » du clavier) : j’ai eu une erreur concernant le lien les tables PHOTO_CLIENT et SEANCE_PHOTO... De fait, si vous regardez la dernière image de mon message précédent, les attributs id client et id séance sont là, mais il manque les mickeys <fk> symbolisant les clés étrangères :





    Si vous rencontrez le même problème, pour réparer ça, il faut ajouter les attributs à la main (table enfant = PHOTO_CLIENT) :

    1) Liste déroulante :





    2) après choix dans la liste déroulante :





    Au résultat :


    (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.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Je ne vois pas trop comment faire avec la relation " créer " ! Je l'ajoute ou c'est la même relation que " correspondre " dans mon MCD ?

  16. #16
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par Redreams
    Je ne vois pas trop comment faire avec la relation " créer " ! Je l'ajoute ou c'est la même relation que " correspondre " dans mon MCD ?
    C’est la même relation que « correspondre », donc vous supprimez la patte connectant PHOTO et Correspondre, vous créez PHOTO_CLIENT, vous procédez à l’héritage et vous ajoutez la patte devant connecter maintenant PHOTO_CLIENT et Correspondre (cardinalité 1,1 et pas 0,1 !)
    (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. #17
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut Les index
    Cas des index.


    Citation Envoyé par Redreams
    j'ai toujours des avertissements pour les index !
    Cette fois-ci on est dans la soute

    Au niveau conceptuel, on part du principe qu’on a l’éternité devant soi pour accéder au contenu de la base de données, et que l’utilisateur est infiniment patient. Quand l’application devient opérationnelle, il en va tout autrement, les gens sont pressés comme des lavements , c’est donc là qu’interviennent les index, leur rôle est de ramener la durée des transactions de l’infini à la seconde ou moins. La contrepartie : quand on met à jour les tables, les index sont touchés et les mises à jour peuvent s’éterniser, voyez l’exemple caractéristique des remises de chèques, auquel j’ai eu droit il y plus de 20 ans dans une ville méridionale où il fait bon vivre. Bref, il faut user mais ne pas abuser, et ce sont les DBA qui doivent intervenir, c’est leur métier, ce sont les rois de l’EXPLAIN et des outils d’analyse des performances.

    Disons qu’au stade où nous en sommes, on conserve seulement les index branchés sur les clés primaires et les clés alternatives (voire sur les clés étrangères, mais pas forcément tout le temps, c’est un sujet qui dépasse le cadre de notre discussion, et dans le doute on conservera ces index). En tout cas, il faut d’emblée éliminer les index faisant double emploi.

    Ainsi, quand je demande à l’AGL de vérifier le MPD (touche « F4 » du clavier), celui-ci me signale les index faisant double emploi :






    Prenons le cas des deux 1ers index en cause, R26_FK et R24_FK, branchés sur la table COMMANDE :




    Comparons-les :





    L’index de gauche est utilisé pour la clé étrangère {id_client, id_seance, id_selection} en relation avec la clé primaire {id_client, id_seance, id_selection} de la table SELECTION_PHOTO. L’index de droite est utilisé pour la clé étrangère {id_client} en relation avec la clé primaire {id_client} de la table CLIENT. Je rappelle que le but de la manœuvre est de booster les performances des jointures entre tables. Supposons maintenant qu’on supprime l’index de droite : la performance de la jointure des tables COMMANDE et CLIENT va-t-elle être dégradée ? Que nenni ! En effet, le SGBD utilisera l’autre index, dont la 1ère colonne est justement id_client. Conclusion, l’index de droite non peut disparaître sans que ça gêne les performances, mais en plus il faut le supprimer, car moins il y a d’index, mieux les mises à jour se portent, comme on l’a vu avec l’exemple de la remise des chèques.

    Plus généralement, à chaque fois que l’AGL signale qu’un index X1 est « inclus » dans un index X2, on supprime X1.
    (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.

  18. #18
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par Redreams
    en ce qui concerne le script de création de table je veux bien qu'on y jette un œil car j'ai pu remarquer que les " id " n'étaient pas écrits avec auto incrémentation une fois le code SQL créé !

    Ça n’est pas l’AGL qui décide du type des attributs, même s’ils sont identifiants, c’est de votre ressort. Si vous souhaitez utilisez un auto-incrément, vous pouvez le faire au niveau du MCD :





    En cliquant sur le bouton « Séquentiel » :





    =>





    Mais vous risquez de vous retrouver avec un type numeric , auquel cas il faut modifier le script SQL généré, ce qui va quand même assez vite.



    Citation Envoyé par Redreams
    Pour la connexion il va falloir que je protège le mot de passe ( je pense que je dois modifié " mdp_utilisateur " en le passant en " char (40) " pour utiliser " sha-1 "
    Passer à char(40), rien de plus simple, là encore vous pouvez faire la modification au stade du MCD ou directement dans le script de création des tables, mais quant à la protection des mots de passe, on sort de la conception des modèles de données, ça devrait faire l’objet d’une nouvelle discussion dans le forum dédié à votre SGBD.

    Pour la revue de votre script, vous pouvez le copier dans votre prochain message (avec la balise PRE pou qu’on le voie bien), et n’oubliez pas de préciser le SGBD que vous utilisez.

    Encore bon 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.

Discussions similaires

  1. Besoin d'aide urgente sur gentoo
    Par wyllos dans le forum OVH
    Réponses: 0
    Dernier message: 04/06/2008, 20h54
  2. Besoin d'aide pour un MCD des tables de la BDD
    Par nicaud dans le forum Schéma
    Réponses: 3
    Dernier message: 23/04/2006, 10h34
  3. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 19h06

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