J'exploiterai ce genre de relation personnellement :
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`membre`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`membre` (
`id` INT NOT NULL AUTO_INCREMENT ,
`mail` VARCHAR(45) NOT NULL ,
`mdp` VARCHAR(45) NOT NULL ,
`session` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`nom` TEXT NULL ,
`prenom` TEXT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`contact`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`contact` (
`membre` INT NOT NULL ,
`ami` INT NOT NULL ,
`date` TIMESTAMP NOT NULL ,
PRIMARY KEY (`membre`, `ami`) ,
INDEX `fk_membre_has_membre_membre1_idx` (`ami` ASC) ,
INDEX `fk_membre_has_membre_membre_idx` (`membre` ASC) ,
CONSTRAINT `fk_membre_has_membre_membre`
FOREIGN KEY (`membre` )
REFERENCES `mydb`.`membre` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_membre_has_membre_membre1`
FOREIGN KEY (`ami` )
REFERENCES `mydb`.`membre` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`message`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`message` (
`expediteur` INT NOT NULL ,
`destinataire` INT NOT NULL ,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`contenu` TEXT NOT NULL ,
PRIMARY KEY (`expediteur`, `destinataire`) ,
INDEX `fk_membre_has_membre_membre3_idx` (`destinataire` ASC) ,
INDEX `fk_membre_has_membre_membre2_idx` (`expediteur` ASC) ,
CONSTRAINT `fk_membre_has_membre_membre2`
FOREIGN KEY (`expediteur` )
REFERENCES `mydb`.`membre` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_membre_has_membre_membre3`
FOREIGN KEY (`destinataire` )
REFERENCES `mydb`.`membre` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE `mydb` ;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
un membre possède un id unique, un mail et mot de passe pour s'identifier, et quelques informations personnelles tels que nom, prénom et une valeur 'session' qui va permettre de savoir si le membre est connecter ou non.
Un membre a une liste de contact qui regroupe les membres avec lesquels il est ami depuis une date donnée.
Un membre (expéditeur) envoi un message à un contact (destinataire), ce message est daté et contient du texte.
Voilà, n'hésite pas à passer du temps sur ton administration MYSQL et d’exécuter toutes les requêtes sql que tu auras besoin avant de commencer à coder.
Exemple :
- créer un membre
- faire une demande à un membre pour l'ajouter au contact
- sélectionner la liste des contacts d'un membre
- envoyer un message
- sélectionner la liste des messages d'un membre ordonné par date
En espérant t'avoir aider, n'hésite pas a me pm si tu veux plus d'aider.
Ciao