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 :

Mon script est-il correct ?


Sujet :

Schéma

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Points : 43
    Points
    43
    Par défaut Mon script est-il correct ?
    Bonjour,
    Je ne sais pas si je poste dans la bonne section, enfin je vous expose mon problème quand même.
    J'ai fait un MCD (est-il correct ?)


    Et j'ai réalisé le script en SQL correspondant :
    CREATE TABLE equipement
    (id_equipement INT NOT NULL,
    INDEX(id),
    libelle_equipement VARCHAR(50),
    marque VARCHAR(50),
    taille VARCHAR(2),
    commentaire VARCHAR(500),
    PRIMARY KEY(id_equipement)
    )TYPE=INNODB;

    CREATE TABLE sport
    (id_sport INT NOT NULL,
    INDEX(id),
    libelle_sport VARCHAR(50),
    PRIMARY KEY(id_sport)
    )TYPE=INNODB;

    CREATE TABLE terrain
    (id_terrain INT NOT NULL,
    INDEX(id),
    type_terrain VARCHAR(50),
    PRIMARY KEY(id_terrain)
    )TYPE=INNODB;

    CREATE TABLE infos_generales
    (id_info INT NOT NULL,
    date DATE,
    lieu VARCHAR(50)
    meteo VARCHAR(50)
    fk_sport INT NOT NULL,
    INDEX(fk_sport),
    PRIMARY KEY(id_info),
    FOREIGN KEY(fk_sport) REFERENCES sport(id_sport) ON DELETE CASCADE
    fk_terrain INT NOT NULL,
    INDEX(fk_terrain),
    FOREIGN KEY(fk_terrain) REFERENCES terrain(id_terrain) ON DELETE CASCADE)
    TYPE=INNODB;

    CREATE TABLE entrainement
    (id_fk_info INT NOT NULL,
    type_entrainement VARCHAR(50),
    PRIMARY KEY(id_fk_info),
    FOREIGN KEY(id_fk_info) REFERENCES infos_generales(id_info) ON DELETE CASCADE)
    )TYPE=INNODB;

    CREATE TABLE competition
    (id_fk_info INT NOT NULL,
    categorie VARCHAR(50),
    nom_organisation VARCHAR(50),
    classement VARCHAR(10),
    PRIMARY KEY(id_fk_info),
    FOREIGN KEY(id_fk_info) REFERENCES infos_generales(id_info) ON DELETE CASCADE)
    )TYPE=INNODB;

    CREATE TABLE resultat
    (id_resultat INT NOT NULL,
    chrono VARCHAR(50),
    distance VARCHAR(50),
    PRIMARY KEY(id_fk_info),
    PRIMARY KEY(id_resultat),
    )TYPE=INNODB;
    Je souhaite exécuter ce script sur un XAMP, sous ubuntu.

    J'aurai voulu savoir si le script correspond au MCD ! J'ai des doutes surtout au niveau de la spécialisation et du (1,1) (=> j'ai oublié le nom du principe).

    Merci de votre aide.

    PS: je ne peux pas tester ce script actuellement.

  2. #2
    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
    Le MCD ne semble pas mal, même si j'ai un peu de mal à comprendre le sens de l'entité Infos_Generales.

    D'ailleurs, au passage, le nom d'une entité s'écrit au singulier et sans accent car un MCD peut servir à générer le MLD puis les tables de la BDD (je ne l'ai jamais fait avec Open Modelsphere qui semble être le logiciel de modélisation utilisé ici).
    Je l'appellerais plutôt "Evenement" puisqu'il y a un lieu, une date et une météo.

    Les sports sont-ils limités à des sports se pratiquant sur un terrain (exit la natation, le patinage, la voile...) ?

    Si oui, ne vaudrait-il mieux pas associer le terrain au sport ?
    Si non, il semble alors que tous les "Infos-Générales" ne se pratiquent pas sur un terrain et que donc les cardinalités devraient être (0,1 - 0,n).

    Mettre un classement dans une seule colonne de l'entité Competition, c'est soit un lien vers un fichier donnant le classement, soit une colonne multi-données, ce qui est contraire au principe de base de la modélisation des BDD !

    D'une manière générale, tu ne donnes pas assez d'informations pour qu'on puisse te dire si le MCD est correct ou pas.

    Il me semble que tu devrais encore peaufiner ton MCD avant de passer aux tables.

    Je vois quand même déjà une bizarrerie dans la première table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE equipement
    (id_equipement INT NOT NULL,
    INDEX(id),
    libelle_equipement VARCHAR(50),
    marque VARCHAR(50),
    taille VARCHAR(2),
    commentaire VARCHAR(500),
    PRIMARY KEY(id_equipement)
    )TYPE=INNODB;
    Tu mets un index sur une colonne appelée "id" qui n'existe pas dans la table. S'il s'agit de id_equipement, cet index est déjà implicite par la clé primaire donc inutile.

    Idem sur d'autres tables.

    Termine d'abord le MCD puis génère le MLD et corrige-le.
    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 !

Discussions similaires

  1. Mon script est-il correcte ?
    Par neufrdb dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 01/02/2011, 11h13
  2. Réponses: 5
    Dernier message: 10/11/2007, 10h20
  3. Mon Singleton est-il correct ?
    Par olive_le_malin dans le forum C++
    Réponses: 11
    Dernier message: 15/12/2006, 15h06
  4. Mon formulaire est-il correct?
    Par biglittlekiss dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2006, 12h29
  5. Réponses: 3
    Dernier message: 23/02/2006, 08h30

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