Partage
  • Partager sur Facebook
  • Partager sur Twitter

Structure, relations

    13 septembre 2010 à 13:02:06

    Bonjour à tous,

    Je suis occupé à réfléchir sur la structure de ma BDD et je me pose une question...

    Je vous explique le sujet :)

    J'ai une table dont les entrées correspondent à des vêtements.
    Chaque vêtement peux avoir plusieurs photo, il y a donc une table photos en plus.
    Un vêtements, bien qu'il puisse avoir plusieurs photos, a une seule photo principale.

    Voilà ce que j'ai pour le moment :
    Image utilisateur

    En SQL :
    -- -----------------------------------------------------
    -- Table `clothes`.`vetements`
    -- -----------------------------------------------------
    CREATE  TABLE IF NOT EXISTS `clothes`.`vetements` (
      `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
      `nom` VARCHAR(255) NOT NULL ,
      `photo_principale_id` INT UNSIGNED NULL ,
      `created_at` DATETIME NOT NULL ,
      `updated_at` DATETIME NOT NULL ,
      PRIMARY KEY (`id`) ,
      INDEX `fk_vetements_photos1` (`photo_principale_id` ASC) ,
      CONSTRAINT `fk_vetements_photos1`
        FOREIGN KEY (`photo_principale_id` )
        REFERENCES `clothes`.`photos` (`id` )
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    
    -- -----------------------------------------------------
    -- Table `clothes`.`photos`
    -- -----------------------------------------------------
    CREATE  TABLE IF NOT EXISTS `clothes`.`photos` (
      `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
      `nom_fichier` VARCHAR(80) NULL ,
      `vetement_id` INT UNSIGNED NOT NULL ,
      PRIMARY KEY (`id`) ,
      INDEX `fk_photos_vetements1` (`vetement_id` ASC) ,
      UNIQUE INDEX (`nom_fichier` ASC) ,
      CONSTRAINT `fk_photos_vetements1`
        FOREIGN KEY (`vetement_id` )
        REFERENCES `clothes`.`vetements` (`id` )
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    


    Comme vous pouvez le voir, chaque photo à un id (primary key), un nom de fichier et un id de vêtement.
    Ma question est la suivante :
    Comme toutes les photos sont dans le même dossier et on un nom unique aléatoirement donné,
    Est ce que la primary key de la table photo ne peut pas être le nom de fichier ?

    Le champ photo_principale dans la table vêtement serait alors également un nom de fichier.

    Qu'en pensez vous ?

    Que pensez vous du design général de ma BDD ?

    Merci d'avance pour vos précieux conseils !

    Bonne journée à tous :)
    • Partager sur Facebook
    • Partager sur Twitter
      13 septembre 2010 à 18:10:23

      Les clés primaire font d'excellents noms de fichiers (et en plus on se prend pas la tête avec les caractères spéciaux...)
      • Partager sur Facebook
      • Partager sur Twitter
        13 septembre 2010 à 20:25:23

        Je n'ai pas bien compris ce que tu voulais dire :/
        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2010 à 0:44:19

          Je crois que Lord Casque Noir répondait à la question "Est-ce que la primary key de la table photo ne peut pas être le nom de fichier ?".

          Une clé primaire ne devrait pas être changée toutefois, donc si tu penses modifier les noms / chemins, je ne sais pas si c'est une si bonne idée...
          • Partager sur Facebook
          • Partager sur Twitter
            15 septembre 2010 à 19:08:33

            Ah, je voulais seulement dire que comme nom de fichier, tu peux utiliser un truc du genre :

            sprintf( "%s/%08d.jpg", CHEMIN, $id )

            La clé primaire en question étant bien sûr un INT. Générer le nom de fichier à partir de la clé primaire, c'est très pratique.
            • Partager sur Facebook
            • Partager sur Twitter

            Structure, relations

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown