Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1494 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  PK sur deux champs en char

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PK sur deux champs en char

n°1867837
hypnos tri​nity
Posté le 31-03-2009 à 12:11:26  profilanswer
 

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
mood
Publicité
Posté le 31-03-2009 à 12:11:26  profilanswer
 

n°1867859
macgawel
Posté le 31-03-2009 à 13:38:02  profilanswer
 

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.                                               );

n°1867873
kao98
...
Posté le 31-03-2009 à 14:24:35  profilanswer
 

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
n°1868049
hypnos tri​nity
Posté le 01-04-2009 à 05:45:44  profilanswer
 

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
n°1868052
kao98
...
Posté le 01-04-2009 à 07:22:33  profilanswer
 

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
n°1868415
hypnos tri​nity
Posté le 01-04-2009 à 17:28:12  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  PK sur deux champs en char

 

Sujets relatifs
[SQL] Bdd avec LEFT JOIN, tri sur deux champsrecherche multi champs ( x champs) + nom entête de champ
Affichage des champs d'une table [RESOLU]Champs pas renseigné
[MySQL 5] Champs pleins après UPDATE [Linker error] undefined reference to `RngStream::RngStream(char con
vérifier les champs d'un formulaireValeur à un champs de plusieurs lignes
Padding d'un champs inputVerifier champs par class
Plus de sujets relatifs à : PK sur deux champs en char


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR