Bonjour,

j'ai un p'tit souci pour la création d'une base de données avec contraintes d'intégrités.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
PERSONNE                                 ETABLISSEMENT                                GROUPE
   id     -(0,n)---(appartient)---(0,n)-    id         -(0,1)---(appartient)---(1,n)-  id
   nom                                      nom                                        nom
 adresse                                  adresse
 telephone                              telephone
   fax                                      fax
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE TABLE `t_groupe` (
  `id_groupe` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  `nom` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`id_groupe`),
  UNIQUE KEY (`nom`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
INSERT INTO `t_groupe` (`id_groupe`, `nom`) VALUES
(1, "BLABLA");
 
CREATE TABLE `t_etablissement` (
  `id_etablissement` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  `nom` VARCHAR(100) NOT NULL,
  `adresse` VARCHAR(255) NOT NULL,
  `tel` VARCHAR(10) NOT NULL,
  `id_groupe` SMALLINT(5) UNSIGNED,
  PRIMARY KEY (`id_etablissement`),
  KEY (`nom`),
  FOREIGN KEY (`id_groupe`) REFERENCES `t_groupe` (`id_groupe`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
INSERT INTO `t_etablissement` (`id_etablissement`, `id_groupe`, `nom`, `adresse`, `tel`) VALUES
(1, NULL, "AZERTY", "31, rue Diderot", "0102030405");
Dans ce SI, il est donc possible d'avoir des établissements sans groupe. Mais alors comment gérer la FOREIGN KEY T_etablissement.id_groupe ? J'ai essayé avec NULL mais cela semble être bloquant...
Alors comment faire ?

Merci d'avance