A voir également:
- [probleme SQL]Clé primaire clé etrangere
- Clé windows 10 gratuit - Guide
- Cle usb non reconnu - Guide
- Clé bootable windows 10 - Guide
- Recuperer cle windows - Guide
- Formater clé usb mac - Guide
8 réponses
bil808
Messages postés
21
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
10 février 2008
25
28 nov. 2007 à 03:57
28 nov. 2007 à 03:57
bonjour
enfaite t'as 4 entité membres , articles ,horaires ,etat civil ;
chaque entité va etre représenté par une table dans t'as base
la clé primaire d'une table doit étre unique et non null ;
or si tu choisis par exemple dans la table membres le nom d'un membre comme clé primaire
tu risque de violé l'unicité de la clé car 2 membres peuvent avoir le méme nom ; pour eviter ça il faut que tu ajoute un champ dans t'as table membres ,
"idmembre" par exemple qui sera de type int tu le définie avec un AUTO_INCREMENT (donc c'est un champ qui v'as etre incrementé à chaque insertion d'un nouveau membre dans la table membres ) avec ce champ on a assosier a chaque membre un numéro unique non null
. donc idmembre poura bien etre une clé primaire .
CREATE TABLE `membre` (
`idmembre ` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nom` VARCHAR( 25 ) NOT NULL ,
`prenom` VARCHAR( 25 ) NOT NULL ,
`motpasse` VARCHAR( 30 ) NOT NULL ,
`nomusage` VARCHAR( 30 ) NOT NULL ,
`telephone` INT( 10 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `idmembre ` )
) TYPE=INNODB;
pareil pour la table articles il te faut aussi un idarticles comme clé primaire
CREATE TABLE `articles` (
`idarticle ` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nombrearticle` VARCHAR( 25 ) NOT NULL ,
`codearticle` INT( 25 ) NOT NULL ,
`titre` VARCHAR( 30 ) NOT NULL ,
`text_article` VARCHAR( 30 ) NOT NULL ,
`auteur ` INT( 10 ) NOT NULL ,
PRIMARY KEY ( `idarticle ` )
) TYPE=INNODB;
maintenant tu dois lier tes tables par des relation
tu commencer par definir la relation entre les tables .
dans notre exemple
1)on commence par definir la relation entre les tables membres et articles ,
un client consulte un article
on voit bien que la relation "consulte " est une relation (n-n) ou (plusieurs-plusieurs) car un client peut consulter 0,1 ou plusieurs articles , et un article peut etre consulter par 0,1,ou plusieurs clients
2) il faut traduire la relation
la traduction d'une relation n-n
donne une table dont la clef primaire et l'union des clefs primaire des class d'entités (membres et articles dans notre exemple )
donc la liaison entre un membre et un article vas etre assurer par une table nommé consulte .
CREATE TABLE `consulte` (
`idmembre ` INT( 6 ) NOT NULL,
`idarticle ` INT( 6 ) NOT NULL ,
PRIMARY KEY ( `idmembre ` ,`idarticle ` )
INDEX (idmembre),
FOREIGN KEY (idmembre)
REFERENCES membres(idmembre)
INDEX (idarticle),
FOREIGN KEY (idarticle)
REFERENCES articles(idarticle)
)
explication :
FOREIGN KEY (idmembre)
REFERENCES membres(idmembre)
INDEX (idarticle),
FOREIGN KEY (idarticle)
REFERENCES articles(idarticle)
idmembre , idarticle sont une clé primaires dans la table consulte mais (on peut les considérer comme clé etrangere ) car il sont des clé dans d'autres table (membres,articles).
c'est pour ça qu' on est obliger de mentioner la reference à ces tables .
j'espaire que j'etais claire a+
bil808@yahoo.fr
enfaite t'as 4 entité membres , articles ,horaires ,etat civil ;
chaque entité va etre représenté par une table dans t'as base
la clé primaire d'une table doit étre unique et non null ;
or si tu choisis par exemple dans la table membres le nom d'un membre comme clé primaire
tu risque de violé l'unicité de la clé car 2 membres peuvent avoir le méme nom ; pour eviter ça il faut que tu ajoute un champ dans t'as table membres ,
"idmembre" par exemple qui sera de type int tu le définie avec un AUTO_INCREMENT (donc c'est un champ qui v'as etre incrementé à chaque insertion d'un nouveau membre dans la table membres ) avec ce champ on a assosier a chaque membre un numéro unique non null
. donc idmembre poura bien etre une clé primaire .
CREATE TABLE `membre` (
`idmembre ` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nom` VARCHAR( 25 ) NOT NULL ,
`prenom` VARCHAR( 25 ) NOT NULL ,
`motpasse` VARCHAR( 30 ) NOT NULL ,
`nomusage` VARCHAR( 30 ) NOT NULL ,
`telephone` INT( 10 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `idmembre ` )
) TYPE=INNODB;
pareil pour la table articles il te faut aussi un idarticles comme clé primaire
CREATE TABLE `articles` (
`idarticle ` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nombrearticle` VARCHAR( 25 ) NOT NULL ,
`codearticle` INT( 25 ) NOT NULL ,
`titre` VARCHAR( 30 ) NOT NULL ,
`text_article` VARCHAR( 30 ) NOT NULL ,
`auteur ` INT( 10 ) NOT NULL ,
PRIMARY KEY ( `idarticle ` )
) TYPE=INNODB;
maintenant tu dois lier tes tables par des relation
tu commencer par definir la relation entre les tables .
dans notre exemple
1)on commence par definir la relation entre les tables membres et articles ,
un client consulte un article
on voit bien que la relation "consulte " est une relation (n-n) ou (plusieurs-plusieurs) car un client peut consulter 0,1 ou plusieurs articles , et un article peut etre consulter par 0,1,ou plusieurs clients
2) il faut traduire la relation
la traduction d'une relation n-n
donne une table dont la clef primaire et l'union des clefs primaire des class d'entités (membres et articles dans notre exemple )
donc la liaison entre un membre et un article vas etre assurer par une table nommé consulte .
CREATE TABLE `consulte` (
`idmembre ` INT( 6 ) NOT NULL,
`idarticle ` INT( 6 ) NOT NULL ,
PRIMARY KEY ( `idmembre ` ,`idarticle ` )
INDEX (idmembre),
FOREIGN KEY (idmembre)
REFERENCES membres(idmembre)
INDEX (idarticle),
FOREIGN KEY (idarticle)
REFERENCES articles(idarticle)
)
explication :
FOREIGN KEY (idmembre)
REFERENCES membres(idmembre)
INDEX (idarticle),
FOREIGN KEY (idarticle)
REFERENCES articles(idarticle)
idmembre , idarticle sont une clé primaires dans la table consulte mais (on peut les considérer comme clé etrangere ) car il sont des clé dans d'autres table (membres,articles).
c'est pour ça qu' on est obliger de mentioner la reference à ces tables .
j'espaire que j'etais claire a+
bil808@yahoo.fr
bil808
Messages postés
21
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
10 février 2008
25
3 déc. 2007 à 21:54
3 déc. 2007 à 21:54
kyky si c'est résolu donc change le staut de sujet (résolut)
PPBoyington
Messages postés
2007
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
22 mai 2012
402
27 nov. 2007 à 22:57
27 nov. 2007 à 22:57
Je n'ai pas trop compris le but de tes tables mais mettre un mot de passe comme clé c'est une horreur...deja un mot de passe ca se change alors tu ne va pas te mettre a changer ta clé primaire,ensuite tu as toutes les chances d'avoir des doublons avec les mots de passe. Tu pourrais prendre nom+prénom comme clé ou bien créer une clé aléatoire, pour articles et horaires aussi (ca peut etre un bête numéro d'ordre)
Et bien je dois stockés toutes les informations de mon site en plus des inscriptions dans des tables donc c'est un site sur mon villages ou les personnes inscritents pourront si il sont authentifier consulter les horaires d'ouverture de la mairie par exemple ou meme consulter les articles.
donc c'est surtout pour dire que si les personne est logger et si le mot de passe figure bien dans la base donc afficher par exemple l'article
merci de m'eclairer
donc c'est surtout pour dire que si les personne est logger et si le mot de passe figure bien dans la base donc afficher par exemple l'article
merci de m'eclairer
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je vous remercie mais je suis obliger de refaire une autre table consulte 2 pour faire le lien entre membres et horaires car il s'agit encore d'une relation (n,n)?
donc je peut reprendre encore une fois idmembre et idhoraires comme clé de idconsulte2?
donc je peut reprendre encore une fois idmembre et idhoraires comme clé de idconsulte2?
CREATE TABLE `membre` (
`idmembre ` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nom` VARCHAR( 25 ) NOT NULL ,
`prenom` VARCHAR( 25 ) NOT NULL ,
`motpasse` VARCHAR( 30 ) NOT NULL ,
`nomusage` VARCHAR( 30 ) NOT NULL ,
`telephone` INT( 10 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `idmembre ` )
) TYPE=INNODB;
CREATE TABLE `articles` (
`idarticle ` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nombrearticle` INT( 6 ) NOT NULL ,
`codearticle` INT( 25 ) NOT NULL ,
`titre` VARCHAR( 30 ) NOT NULL ,
`text_article` VARCHAR( 3000 ) NOT NULL ,
`auteur ` VARCHAR( 25 ) NOT NULL ,
PRIMARY KEY ( `idarticle ` )
) TYPE=INNODB;
CREATE TABLE `horaires` (
`idhoraires` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nombre_office` INT( 6 ) NOT NULL ,
`code_office` INT( 10 ) NOT NULL ,
`nom_office` VARCHAR( 30 ) NOT NULL ,
`description_office` VARCHAR( 300 ) NOT NULL ,
`gerant_office` VARCHAR( 30 ) NOT NULL ,
`ouverture_office` VARCHAR( 30 ) NOT NULL ,
`fermeture_office` VARCHAR( 30 ) NOT NULL ,
`telephone_office` VARCHAR( 15 ) NOT NULL ,
PRIMARY KEY ( `idhoraires` )
) TYPE=INNODB;
CREATE TABLE `consulte_article` (
`idmembre` INT( 6 ) NOT NULL ,
`idarticle` INT( 6 ) NOT NULL ,
PRIMARY KEY ( `idmembre` , `idarticle` ) ,
INDEX ( `idmembre` ) ,
FOREIGN KEY ( `idmembre` ) REFERENCES `membre` ( `idmembre` ) ,
INDEX ( `idarticle` ) ,
FOREIGN KEY ( `idarticle` ) REFERENCES `articles` ( `idarticle` )
) TYPE = InnoDB
CREATE TABLE `consulte_horaires` (
`idmembre` INT( 6 ) NOT NULL ,
`idhoraires` INT( 6 ) NOT NULL ,
PRIMARY KEY ( `idmembre` , `idhoraires` ) ,
INDEX ( `idmembre` ) ,
FOREIGN KEY ( `idmembre` ) REFERENCES `membre` ( `idmembre` ) ,
INDEX ( `idhoraires` ) ,
FOREIGN KEY ( `idhoraires` ) REFERENCES `horaires` ( `idhoraires` )
) TYPE = InnoDB
voila j'ai donc creer mes tables sous mysql merci ^^
c'est resolu
`idmembre ` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nom` VARCHAR( 25 ) NOT NULL ,
`prenom` VARCHAR( 25 ) NOT NULL ,
`motpasse` VARCHAR( 30 ) NOT NULL ,
`nomusage` VARCHAR( 30 ) NOT NULL ,
`telephone` INT( 10 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `idmembre ` )
) TYPE=INNODB;
CREATE TABLE `articles` (
`idarticle ` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nombrearticle` INT( 6 ) NOT NULL ,
`codearticle` INT( 25 ) NOT NULL ,
`titre` VARCHAR( 30 ) NOT NULL ,
`text_article` VARCHAR( 3000 ) NOT NULL ,
`auteur ` VARCHAR( 25 ) NOT NULL ,
PRIMARY KEY ( `idarticle ` )
) TYPE=INNODB;
CREATE TABLE `horaires` (
`idhoraires` INT( 6 ) NOT NULL AUTO_INCREMENT ,
`nombre_office` INT( 6 ) NOT NULL ,
`code_office` INT( 10 ) NOT NULL ,
`nom_office` VARCHAR( 30 ) NOT NULL ,
`description_office` VARCHAR( 300 ) NOT NULL ,
`gerant_office` VARCHAR( 30 ) NOT NULL ,
`ouverture_office` VARCHAR( 30 ) NOT NULL ,
`fermeture_office` VARCHAR( 30 ) NOT NULL ,
`telephone_office` VARCHAR( 15 ) NOT NULL ,
PRIMARY KEY ( `idhoraires` )
) TYPE=INNODB;
CREATE TABLE `consulte_article` (
`idmembre` INT( 6 ) NOT NULL ,
`idarticle` INT( 6 ) NOT NULL ,
PRIMARY KEY ( `idmembre` , `idarticle` ) ,
INDEX ( `idmembre` ) ,
FOREIGN KEY ( `idmembre` ) REFERENCES `membre` ( `idmembre` ) ,
INDEX ( `idarticle` ) ,
FOREIGN KEY ( `idarticle` ) REFERENCES `articles` ( `idarticle` )
) TYPE = InnoDB
CREATE TABLE `consulte_horaires` (
`idmembre` INT( 6 ) NOT NULL ,
`idhoraires` INT( 6 ) NOT NULL ,
PRIMARY KEY ( `idmembre` , `idhoraires` ) ,
INDEX ( `idmembre` ) ,
FOREIGN KEY ( `idmembre` ) REFERENCES `membre` ( `idmembre` ) ,
INDEX ( `idhoraires` ) ,
FOREIGN KEY ( `idhoraires` ) REFERENCES `horaires` ( `idhoraires` )
) TYPE = InnoDB
voila j'ai donc creer mes tables sous mysql merci ^^
c'est resolu
bil808
Messages postés
21
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
10 février 2008
25
2 déc. 2007 à 03:12
2 déc. 2007 à 03:12
de rien kyky ;)
Bonjour,
j'aurais aimé savoir à quoi servent les termes "Index" dans la table 'consulte_horaires':
CREATE TABLE 'consulte_horaires' (
'idmembre' INT( 6 ) NOT NULL ,
'idhoraires' INT( 6 ) NOT NULL ,
PRIMARY KEY ( 'idmembre' , 'idhoraires' ) ,
INDEX ( 'idmembre' ) ,
FOREIGN KEY ( 'idmembre' ) REFERENCES 'membre' ( 'idmembre' ) ,
INDEX ( 'idhoraires' ) ,
FOREIGN KEY ( 'idhoraires' ) REFERENCES 'horaires' ( 'idhoraires' )
) TYPE = InnoDB
Peut-on créer la table sans les "Index"? Comme ci-dessous
CREATE TABLE 'consulte_horaires' (
'idmembre' INT( 6 ) NOT NULL ,
'idhoraires' INT( 6 ) NOT NULL ,
PRIMARY KEY ( 'idmembre' , 'idhoraires' ) ,
FOREIGN KEY ( 'idmembre' ) REFERENCES 'membre' ( 'idmembre' ) ,
FOREIGN KEY ( 'idhoraires' ) REFERENCES 'horaires' ( 'idhoraires' )
) TYPE = InnoDB
Merci d'avance.
j'aurais aimé savoir à quoi servent les termes "Index" dans la table 'consulte_horaires':
CREATE TABLE 'consulte_horaires' (
'idmembre' INT( 6 ) NOT NULL ,
'idhoraires' INT( 6 ) NOT NULL ,
PRIMARY KEY ( 'idmembre' , 'idhoraires' ) ,
INDEX ( 'idmembre' ) ,
FOREIGN KEY ( 'idmembre' ) REFERENCES 'membre' ( 'idmembre' ) ,
INDEX ( 'idhoraires' ) ,
FOREIGN KEY ( 'idhoraires' ) REFERENCES 'horaires' ( 'idhoraires' )
) TYPE = InnoDB
Peut-on créer la table sans les "Index"? Comme ci-dessous
CREATE TABLE 'consulte_horaires' (
'idmembre' INT( 6 ) NOT NULL ,
'idhoraires' INT( 6 ) NOT NULL ,
PRIMARY KEY ( 'idmembre' , 'idhoraires' ) ,
FOREIGN KEY ( 'idmembre' ) REFERENCES 'membre' ( 'idmembre' ) ,
FOREIGN KEY ( 'idhoraires' ) REFERENCES 'horaires' ( 'idhoraires' )
) TYPE = InnoDB
Merci d'avance.
14 mai 2008 à 14:31
j fait :
require("connexion.php");
$req="CREATE TABLE `consulte`(
ben vous connaissez la suite..;)type=innodb;
comment faire !!! Merci d'avance
14 mai 2008 à 15:09
<?php
$db=mysql_connect("localhost", "root", "");
mysql_select_db("projet",$db);
mysql_query("CREATE TABLE `consulter` (
`id_client` INT( 50 ) NOT NULL ,
`code_roule` VARCHAR( 50) NOT NULL ,
INDEX ( `id_client` ) ,
FOREIGN KEY ( `id_client` ) REFERENCES `client` ( `id_client` ) ,
INDEX ( `code_roule` ) ,
FOREIGN KEY ( `code_roule` ) REFERENCES `roule` ( `code_roule` )
) TYPE = InnoDB");
?>