creation site communautaire - conseils BDD

tannos
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 20 Fév 2007

creation site communautaire - conseils BDD

Message le Lun Mai 11, 2009 12:48

Bonjour à tous

Je souhaite créer un site communautaire (genre facebook) pour les passionné de motos
Pour cela, j'utilise php, mysql et je symfony.
Symfony je débute.

Le concept:
Les utilisateurs s'enregistrent sur le site et créent des évènements.
Chaque utilisateur dispose d'un espace perso. Dans cette espace, il y a 2 rubriques:

Mes motos :: ou il peut créer une fiches pour chacune de ses motos
Mes sorties:: ou il peut créer un évènement

Pour la rubrique mes sorties voici le fonctionnement:
Il crée une sortie (ou un évènement) avec statut (participant ou organisateur)
une fois sa sortie créée, il peut créer :
-une fiche ma moto ou il prend sa moto en photo et peut mettre un commentaire qui va bien
-un album photos

Voici les contraintes que je veux imposer aux utilisateurs:
une fiche 'ma moto' est rattachée à un évènement
un album photos est rattaché à un évènement

voici le schéma de ma base de données:
Code: Tout sélectionner
-- -----------------------------------------------------
-- Table `motard`.`user`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `motard`.`user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT ,
  `civilite_id` INT(11) NULL DEFAULT 1 ,
  `nom` VARCHAR(75) NOT NULL DEFAULT '' ,
  `prenom` VARCHAR(75) NOT NULL DEFAULT '' ,
  `password` VARCHAR(255) NOT NULL DEFAULT '' ,
  `email` TEXT NOT NULL ,
  `avatar` TEXT NULL ,
  `birthday` DATE NULL ,
  `optin_newsletter` TINYINT(1) NULL DEFAULT 0 ,
  `optin_partenaires` TINYINT(1) NULL DEFAULT 0 ,
  `activation_key` VARCHAR(255) NULL ,
  `ip_enregistrement` VARCHAR(255) NULL ,
  `ip_connexion` VARCHAR(255) NULL ,
  `token` VARCHAR(255) NOT NULL ,
  `created_at` DATETIME NULL DEFAULT NULL ,
  `updated_at` DATETIME NULL DEFAULT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `user_FI_1` (`civilite_id` ASC) ,
  UNIQUE INDEX `user_U_1` (`email` ASC) ,
  UNIQUE INDEX `user_U_2` (`token` ASC) )
ENGINE = InnoDB;



-- -----------------------------------------------------
-- Table `motard`.`ma_moto_user`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `motard`.`ma_moto_user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT ,
  `user_id` INT(11) NOT NULL ,
  `evenement_id` INT(11) NOT NULL ,
  `categorie_id` INT(11) NOT NULL
  `titre` VARCHAR(255) NOT NULL DEFAULT '' ,
  `description` TEXT NOT NULL ,
  `caption_image1` TEXT NULL ,
  `caption_image2` TEXT NULL ,
  `caption_image3` TEXT NULL ,
  `caption_image4` TEXT NULL ,
  `caption_image5` TEXT NULL ,
  `created_at` DATETIME NOT NULL ,
  `updated_at` DATETIME NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_ma_moto_user_categories_ma_moto` (`categorie_id` ASC) ,
  INDEX `fk_ma_moto_user_user` (`user_id` ASC)
  INDEX `fk_ma_moto_user_evenement` (`evenement_id` ASC) ,
  CONSTRAINT `fk_ma_moto_user_categories_ma_moto`
    FOREIGN KEY (`categorie_id` )
    REFERENCES `motard`.`categories_ma_moto` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_ma_moto_user_user`
    FOREIGN KEY (`user_id` )
    REFERENCES `motard`.`user` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_ma_moto_user_evenement`
    FOREIGN KEY (`evenement_id` )
    REFERENCES `motard`.`evenement` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `motard`.`albums_photos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `motard`.`albums_photos` (
  `user_id` INT(11) NOT NULL ,
  `evenement_id` INT(11) NOT NULL ,
  `titre` VARCHAR(255) NULL DEFAULT NULL ,
  `description` TEXT NULL DEFAULT NULL ,
  `created_at` DATETIME NOT NULL ,
  `updated_at` DATETIME NOT NULL ,
  PRIMARY KEY (`evenement_id`, `user_id`) ,
  INDEX `fk_album_photos_user` (`user_id` ASC) ,
  INDEX `fk_albums_photos_evenement` (`evenement_id` ASC) ,
  CONSTRAINT `fk_album_photos_user`
    FOREIGN KEY (`user_id` )
    REFERENCES `motard`.`user` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_albums_photos_evenement`
    FOREIGN KEY (`evenement_id` )
    REFERENCES `motard`.`evenement` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `motard`.`photos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `motard`.`photos` (
  `user_id` INT(11) NOT NULL ,
  `evenement_id` INT(11) NOT NULL ,
  `caption_image` TEXT NOT NULL ,
  PRIMARY KEY (`user_id`, `evenement_id`) ,
  INDEX `fk_photos_user` (`user_id` ASC) ,
  INDEX `fk_photos_evenement` (`evenement_id` ASC) ,
  CONSTRAINT `fk_photos_user`
    FOREIGN KEY (`user_id` )
    REFERENCES `motard`.`user` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_photos_evenement`
    FOREIGN KEY (`evenement_id` )
    REFERENCES `motard`.`albums_photos` (`user_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


Quelqu'un peut il jeter un coup d'œil sur le modèle de ma base et me dire si j'ai bien mis les clés comme il faut ?
Il y a t'-il des optimisations possibles?

Je suis preneur de toute remarque
Merci
Cordialement
Mike

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités