Mysql
 sql >> Base de données >  >> RDS >> Mysql

Cascade INNODB lors de la suppression et de la mise à jour

Vous semblez vouloir juste un peu de conseils. Je vais donc essayer d'être bref.

$sql = "CREATE TABLE customerGroups (
   customer_id int(11) NOT NULL,
   group_id int(11) NOT NULL,
   PRIMARY KEY (customer_id, group_id),
   CONSTRAINT customers_customergroups_fk
     FOREIGN KEY (customer_id)
     REFERENCES customers (customer_id) 
     ON DELETE CASCADE,
   CONSTRAINT groups_customergroups_fk
     FOREIGN KEY (group_id)
     REFERENCES groups (group_id) 
     ON DELETE CASCADE
)ENGINE = INNODB;";

Vous avez seulement besoin numéros d'identification lorsque l'identité est difficile à cerner. Lorsque vous traitez avec des gens, l'identité est difficile à cerner. Il y a beaucoup de gens qui s'appellent "John Smith".

Mais vous avez affaire à deux choses qui ont déjà été identifiées. (Et identifié avec des numéros d'identification, de toutes choses.)

Les suppressions en cascade ont du sens. Il est relativement rare de mettre à jour en cascade les numéros d'identification ; ils sont supposés ne jamais changer. (La principale raison pour laquelle les administrateurs de bases de données Oracle insistent sur le fait que les clés primaires doivent toujours être des numéros d'identification, et qu'ils ne doivent jamais changement est parce qu'Oracle ne peut pas mises à jour en cascade.) Si, plus tard, certains numéros d'identification nécessitent pour changer pour quelque raison que ce soit, vous pouvez modifier le tableau pour inclure ON UPDATE CASCADE.

$sql = "CREATE TABLE groups
(
group_id int(11) NOT NULL AUTO_INCREMENT,
group_title varchar(50) NOT NULL UNIQUE,
group_desc varchar(140),
PRIMARY KEY (group_id)
)ENGINE = INNODB;";

Notez la contrainte unique supplémentaire sur group_title. Vous ne voulez rien autoriser de ce genre (ci-dessous) dans votre base de données.

group_id  group_title
--
1         First group
2         First group
3         First group
...
9384      First group

Vous voudrez effectuer ces types de modifications dans toutes vos tables. (Sauf, peut-être, votre table de clients.)