PK sur deux champs en char

PK sur deux champs en char - SQL/NoSQL - Programmation

Marsh Posté le 31-03-2009 à 12:11:26    

Bonjour a tous,

 

j'ai une petite base de donnée a faire donc voila,

 

j'ai une table client
avec comme champ NomClient,PrenomClient,AdresseClient

 

et une primary key syr les champs Nomclient et Prenom Client ...

 

Donc je lance un :

 
Code :
  1. CREATE TABLE Client(
  2.                             Nomclientchar( 32 ) ,
  3.                             PrenomClientchar( 32 ) ,
  4.                             AdresseClientchar( 128 )
  5.                             )
  6.                             PRIMARY KEY (
  7.                                                 NomClient, 
  8.                                                 PrenomClient
  9.                                                );
 

Et il me sort un erreur :

Code :
  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Primary key (NomClient,PrenomClient)' at line 5
 

Du cotés de la primary key, apparemment il n'accepte pas 2 clés primaire en char ...

 

Une aide serait la bienvenue

 

Je precise qu'on me demande de faire comme ça ...

 

Merci

Message cité 1 fois
Message édité par hypnos trinity le 31-03-2009 à 12:16:02
Reply

Marsh Posté le 31-03-2009 à 12:11:26   

Reply

Marsh Posté le 31-03-2009 à 13:38:02    

hypnos trinity a écrit :

j'ai une table client
avec comme champ NomClient,PrenomClient,AdresseClient
et une primary key syr les champs Nomclient et Prenom Client ...
[...]
Je precise qu'on me demande de faire comme ça ...
Merci


Mauvais analyste, changer analyste.  :fou:  
 
Quelques arguments pour ne pas faire comme on te demande :
0. Ca viole à peu près toutes les lois sur les SGBD-R
1. Le jour où la cliente Mlle machin se marie, bon courage pour faire la mise à jour de la base  :D  
2. Jean Dupont (Marseille) et Jean Dupont (Lille) ne pourront jamais être clients en même temps ?
3. Ca va t'obliger à conserver Nom+Prénom dans les autres tables (là où tu as besoin d'une clé etrangère sur le client)
4. (il y en a encore pas mal, je te laisse chercher)
 
Sinon, tu devrais créer ta table avec (par exemple) phpMySql, ça t'aiderait un peu...

Code :
  1. CREATE TABLE Client(
  2.                            Nomclientchar( 32 ) , /* Il ne manque pas un espace ? */
  3.                            PrenomClientchar( 32 ) ,
  4.                            AdresseClientchar( 128 )
  5.                            )
  6.                            PRIMARY KEY (
  7.                                                NomClient,  
  8.                                                PrenomClient
  9.                                               );

Reply

Marsh Posté le 31-03-2009 à 14:24:35    

macgawel a écrit :


Mauvais analyste, changer analyste.  :fou:  
 
Quelques arguments pour ne pas faire comme on te demande :
0. Ca viole à peu près toutes les lois sur les SGBD-R
1. Le jour où la cliente Mlle machin se marie, bon courage pour faire la mise à jour de la base  :D  
2. Jean Dupont (Marseille) et Jean Dupont (Lille) ne pourront jamais être clients en même temps ?
3. Ca va t'obliger à conserver Nom+Prénom dans les autres tables (là où tu as besoin d'une clé etrangère sur le client)
4. (il y en a encore pas mal, je te laisse chercher)


+10000 !  
Une PK sur un auto incrément, il n'y a que ça de vrai !
Et même sans utiliser d'auto incrément, nom + prenom, c'est vraiment nulle comme PK.
 

macgawel a écrit :


Sinon, tu devrais créer ta table avec (par exemple) phpMySql, ça t'aiderait un peu...

Code :
  1. CREATE TABLE Client(
  2.                            Nomclientchar( 32 ) , /* Il ne manque pas un espace ? */
  3.                            PrenomClientchar( 32 ) ,
  4.                            AdresseClientchar( 128 )
  5.                            )
  6.                            PRIMARY KEY (
  7.                                                NomClient,  
  8.                                                PrenomClient
  9.                                               );



+1


Message édité par kao98 le 31-03-2009 à 14:25:03

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 01-04-2009 à 05:45:44    

Je le sais bien mais bon je n'y peux rien ...
 
On m'y oblige
 
c'est bon ça marche, mon erreur se situait dans l'oublie d'une virgule et la fermeture d'une parenthese trop tot avant la primary key
 
Voila le code qui marche :
 

Code :
  1. CREATE TABLE Client (
  2. NomClient varchar(32),
  3. PrenomClient varchar(32),
  4. AdresseClient varchar (64),
  5. Primary Key (NomClient,PrenomClient ));


 
Merci a vous :D


Message édité par hypnos trinity le 01-04-2009 à 06:18:26
Reply

Marsh Posté le 01-04-2009 à 07:22:33    

Explique à ceux qui t'y oblige que c'est la pire idée qui soit ! Donne leur les arguments de macgawel !


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 01-04-2009 à 17:28:12    

et dire qu'ils nous apprennent ça en cours :(
c'est dans mon bouquin de SQL ...
m'enfin vous inquietez pas je ne fais pas comme ça pour mes propres BDD ;)
 
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed