Bonjour,

J'ai un gros doute sur la conception lors des "CREATE TABLE"

Exemple concret , on va considérer une table "clients" avec le PRIMARY KEY + UNIQUE KEY + key + index ou l'on stock des numéros de clients de manière unique :

cas 1 sans id :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE IF NOT EXISTS client ( 
  num_client int(11) NOT NULL ,
  type_client varchar(25) NOT NULL ,
  fk_departement_client varchar(5) NOT NULL 
  date_insertion datetime NOT NULL, 
  PRIMARY KEY (num_client),
  UNIQUE KEY (num_client),
  key (num_client,departement_client),
  index (num_client,departement_client),
  CONSTRAINT departement_fk  FOREIGN KEY (fk_departement_client) REFERENCES departement (departement_client)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;

cas 2 avec id :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 CREATE TABLE IF NOT EXISTS client (
  id_ligne int(11) auto_increment , 
  num_client int(11) NOT NULL ,
  type_client varchar(25) NOT NULL ,
  fk_departement_client varchar(5) NOT NULL 
  date_insertion datetime NOT NULL, 
  PRIMARY KEY (id_ligne),
  UNIQUE KEY (num_client),
  key (num_client,departement_client),
  index (id_ligne,num_client,departement_client),
  CONSTRAINT departement_fk  FOREIGN KEY (fk_departement_client) REFERENCES departement (departement_client)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;

Merci de m'aiguiller et de dire ce qui cloche avec " PRIMARY KEY + UNIQUE KEY + key + index "