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 :

Savoir si mes tables sont correctes en 3NF


Sujet :

Schéma

  1. #1
    Candidat au Club
    Femme Profil pro
    marseille
    Inscrit en
    Janvier 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : marseille

    Informations forums :
    Inscription : Janvier 2022
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Savoir si mes tables sont correctes en 3NF
    Bonsoir,
    je dois faire la création de table dans MySQL, avant cela j'aimerai savoir si les table et les dependences fonctionnelles sont tous bien en 3NF?
    merci de votre aide par avance.

    Salle (NomSalle, Capacité, NomEquipement, NomGes, PrenomGes)

    Spectacle (NomSpectacle, DateDebut_Program, GenreSpectacle, Prix, DateFin_Program, NomSalle)

    Casting (NomActeur, NomSpectacle)

    Acteur (NomActeur, PrénomActeur)

    MiseEnScène (NomMS, NomSpectacle)

    MetteurEnScène (NomMS, PrénomMS)

    Representation (DateRepresentation, NomSpectacle ,Durée)

    Spectateur (NomSpectateur, PrenomSpectateur, Email, Âge, Tel, Categorie)

    Catégorie(Categorie, coefficient,prixPlace)

    Reservation (Email, NumRes, NomSpectateur, Nb_Places, DateReprésentation)


    (ceux qui sont souligné sont les clés primaire)

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 388
    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 388
    Points : 39 901
    Points
    39 901
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Pour bien répondre à ce genre de questions, il faut savoir ce que représente exactement chaque attribut et quelles sont les règles de gestion.

    Quoi qu'il en soit, pour la première table, le nom du gestionnaire et son prénom ne dépendent pas de la salle. Cette table n'est donc pas en 3NF.
    Si le gestionnaire est en charge de plusieurs salles, alors, en cas d'erreur sur l'orthographe du nom, il faudra modifier toutes les salles où ce gestionnaire intervient. La bonne modélisation est donc une table des salles et une table du personnel, dans laquelle on trouvera non seulement les gestionnaires de salles, mais également les autres catégories de personnel.
    À l'inverse, la capacité d'une salle est bien dépendante de la salle, cet attribut a donc toute sa place dans cette table.

    Il faut appliquer le même raisonnement pour les autres tables.

    Par ailleurs, toutes vos tables ont pour PK une colonne fonctionnelle de type char ou varchar, c'est un très mauvais choix.
    La PK doit être stable : sa valeur se propage dans d'autres tables pour permettre les contrôles d'intégrité (contraintes "foreign key").
    Si vous choisissez une ou plusieurs colonne(s) ayant un sens fonctionnel comme PK, alors la valeur peut être modifiée à tout moment. Modification qui se propagera dans les tables liées, ce qui peut provoquer des mises à jour en masse préjudiciables aux performances.
    Si au contraire vous utilisez un chrono technique, ce genre de mésaventure n'arrive jamais, car la valeur de ce genre de chrono n'a aucune importance, seule son unicité compte.
    En plus, dans certains cas, les choix faits ne garantissent aucunement l'unicité qui est une règle incontournable pour une PK.
    Par exemple votre table MetteurEnScène (NomMS, PrénomMS) interdit d'avoir deux metteurs en scènes distincts homonymes, c'est très restrictif !
    Enfin, une PK de type char ou varchar pénalise énormément les performances.
    C'est pour toutes ces raisons que le plus souvent, on utilise un chrono technique attribué par le SGBD comme PK : c'est une colonne stable et concise dont on n'a même pas besoin de s'occuper de la valeur, c'est le SGBD qui gère

  3. #3
    Candidat au Club
    Femme Profil pro
    marseille
    Inscrit en
    Janvier 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : marseille

    Informations forums :
    Inscription : Janvier 2022
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    merci de votre réponse , je dois revoir mes tables alors, cependant je vous présente mes règles de gestions:
    RG 1 Une salle a un seul gestionnaire, un gestionnaire peut gérer plusieurs salles
    RG 2 Une salle est utilisée pour plusieurs spectacle, Un spectacle est joué dans une seule salle
    RG 3 Un spectacle a un seul metteur en scène, un metteur en scène peut travailler sur plusieurs spectacles différents
    RG 4 Une salle peut avoir plusieurs équipements, un équipement est dans une seule salle (car chaque salle a son equipement particulier)
    RG 5 Un acteur peut jouer dans plusieurs spectacles, un spectacle a plusieurs acteurs
    RG 6 Un spectacle peut avoir plusieurs représentations/Une représentation est jouée pour un spectacle
    RG 7 Un client peut reserver plusieurs représentations/Une représentation peut être reservé par plusieurs clients
    RG 8 un spectateur appartient à une seule catégorie pour les réductions (soit prix étudiant, soit prix abonné, soit prix solidarité)
    RG9 un client peut faire plusieurs réservation , une reservation est faite par un seul client

    , pour le gestionnaire dépend de ma salle car c'est en fait selon la règle de gestion 1 salle-->NomGestionnaire, prenomGestionnaire
    avec chaque salle ont pourra dernier le gestionnaire qui se charge de la salle...

  4. #4
    Candidat au Club
    Femme Profil pro
    marseille
    Inscrit en
    Janvier 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : marseille

    Informations forums :
    Inscription : Janvier 2022
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci de votre réponse: j'ai modifier mes tables en prenant en compte que la PK soit un decimal et non un varchar

    Salle(NomSalle, Capacité , NomEquipement)

    Personnels(NomSalle, NomGes, PrenomGes )

    Spectacle(IdSpectacle, NomSpectacle, GenreSpectacle, DateDebutProgramm, DateFinProgram, Prix, NomSalle)

    Acteurs(NumActeur, NomActeur, PrenomActeur, IdSpectacle)

    MetteurEnScene (NumMS , NomMS, PrenomMS, IdSpectacle)

    Representation (DateRepresentation , idSpectacle , Duree)

    Spectateur ( NumCl, NomCl, PrenomCl, Email, Age, Tel, Categorie)

    Categorie( NumCl, Categorie, Coefficient, PrixPlace)

    Reservation(NumRes, NumCl, NbPlace, DateRepresentation)

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 388
    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 388
    Points : 39 901
    Points
    39 901
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Compte tenu de ceci

    Citation Envoyé par rise.shine Voir le message
    RG 4 Une salle peut avoir plusieurs équipements, un équipement est dans une seule salle (car chaque salle a son equipement particulier)
    Cette réponse est erronée

    Citation Envoyé par rise.shine Voir le message
    Salle(NomSalle, Capacité , NomEquipement)
    le type d'entité [salle] est mal modélisé : plusieurs équipements étant possibles dans une même salle, le nom de l'équipement n'a rien à faire dans la salle. il faut créer un type d'entité [equipement] ayant pour attributs un identifiant, un nom etc... et qui sera en relation avec le type d'entité [salle]

    Il faut appliquer le même raisonnement aux autres types d'entité

    Par ailleurs
    Citation Envoyé par rise.shine Voir le message
    j'ai modifié mes tables en prenant en compte que la PK soit un decimal et non un varchar
    Un decimal, c'est mieux, mais un integer c'eut été encore mieux, car moins encombrant qu'un decimal à nombre de valeurs distinctes égal et donc plus performant
    De plus, dans l'entité-type [salle], vous avez conservé le nom comme identifiant

    Relisez-vous bien, car il y a d'autres erreurs de même nature

  6. #6
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 408
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 408
    Points : 20 551
    Points
    20 551
    Par défaut
    Citation Envoyé par rise.shine Voir le message
    Bavant cela j'aimerai savoir si les table et les dependences fonctionnelles sont tous bien en 3NF?
    pour ajuster tout cela bref la partie conceptuelle je propose de mettre en pratique sous Ms-Access ou Open Office...en créant des tables,faire des requêtes SQL.
    Cela permet de voir si la définition des tables est correcte et optimale.
    Bref pour faire simple ne pas passer trop d'heures sur la partie conceptuelle...

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 388
    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 388
    Points : 39 901
    Points
    39 901
    Billets dans le blog
    9
    Par défaut
    Non : la création des tables n'apportera aucune information quant au respect des formes normales et notamment de la 3NF, c'est bien au niveau du modèle conceptuel qu'il faut réfléchir au positionnement des attributs, positionnement qui doit tenir compte des règles de gestion.

    Les tables ne sont qu'une conséquence du modèle conceptuel.

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

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

    Informations forums :
    Inscription : Juin 2019
    Messages : 712
    Points : 2 877
    Points
    2 877
    Par défaut
    Bonjour,
    Citation Envoyé par Mat.M Voir le message
    pour ajuster tout cela bref la partie conceptuelle je propose de mettre en pratique sous Ms-Access ou Open Office...en créant des tables,faire des requêtes SQL.
    Cela permet de voir si la définition des tables est correcte et optimale.
    Bref pour faire simple ne pas passer trop d'heures sur la partie conceptuelle...
    Mettre en oeuvre la structure de la base de données et faire des requêtes SQL pour, ensuite, s'intéresser à la modélisation conceptuelle n'a, pour moi, aucun sens...
    La conception, comme son nom l'indique, permet de concevoir le SI... et comment le réaliser si on ne l'a pas préalablement conçu ?
    Un bon Modèle Conceptuel de Données (MCD) permettra de formaliser les règles de gestion du SI (dans le respect des formes normales), et le Modèle Logique de Données (MLD) ainsi que les requêtes permettant la création du schéma relationnel (les tables du SGBD) seront automatiquement générées par tout bon outil de modélisation.

  9. #9
    Rédacteur

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

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 922
    Points : 51 717
    Points
    51 717
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    pour ajuster tout cela bref la partie conceptuelle je propose de mettre en pratique sous Ms-Access ou Open Office...en créant des tables,faire des requêtes SQL.
    Cela permet de voir si la définition des tables est correcte et optimale.
    Bref pour faire simple ne pas passer trop d'heures sur la partie conceptuelle...
    Votre propos est stupide. Par analogie édifier un immeuble sans se préoccuper des fondations ou encore, en l'édifiant puis en chargeant les étages pour voir si cela tient, coute éminemment plus cher que de faire bien dès le départ...

    A +

  10. #10
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 408
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 408
    Points : 20 551
    Points
    20 551
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Par analogie édifier un immeuble sans se préoccuper des fondations ou encore, en l'édifiant puis en chargeant les étages pour voir si cela tient, coute éminemment plus cher que de faire bien dès le départ...
    bah oui on s'en doute bien

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 388
    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 388
    Points : 39 901
    Points
    39 901
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    bah oui on s'en doute bien
    En ce cas, il ne fallait pas proposer de brûler les étapes comme ce fut le cas dans votre réponse précédente :

    Citation Envoyé par Mat.M Voir le message
    pour ajuster tout cela bref la partie conceptuelle je propose de mettre en pratique sous Ms-Access ou Open Office...en créant des tables,faire des requêtes SQL.
    Cela permet de voir si la définition des tables est correcte et optimale.
    Bref pour faire simple ne pas passer trop d'heures sur la partie conceptuelle...

Discussions similaires

  1. Prob : comment enlever innodb quand toutes mes tables sont en myisam
    Par virgrennes dans le forum Administration
    Réponses: 17
    Dernier message: 14/06/2012, 22h20
  2. [MCD] Est-que mes cardinalités sont correctes ?
    Par Mika2008 dans le forum Schéma
    Réponses: 2
    Dernier message: 01/08/2009, 14h56
  3. Savoir si mes bases sont démarrées
    Par foucfouc dans le forum Administration
    Réponses: 7
    Dernier message: 05/12/2008, 15h19
  4. [VBA] Savoir sur quelle base mes tables sont liées
    Par ullgom dans le forum Access
    Réponses: 2
    Dernier message: 27/02/2007, 12h19
  5. [Oracle] Je n'arrive pas à vérifier si mes id et pwd sont corrects
    Par alex007 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/10/2005, 18h41

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