Salut,
Script pour Firebird (mais ça ne doit pas être très différent sous mySQL...) :
/* Création table des régions */
CREATE TABLE REGIONS (
ID_REGION INTEGER NOT NULL,
NOM_REGION VARCHAR(50) NOT NULL
);
/* Création clé primaire sur REGION */
ALTER TABLE REGIONS
ADD PRIMARY KEY(ID_REGION);
/* Création table des villes */
CREATE TABLE VILLES (
ID_VILLE INTEGER NOT NULL,
NOM_VILLE VARCHAR(50) NOT NULL,
FK_ID_REGION INTEGER NOT NULL
);
/* Création clé primaire sur VILLES */
ALTER TABLE VILLES
ADD PRIMARY KEY(ID_VILLE);
/* Création clé étrangère VILLES-REGIONS */
ALTER TABLE VILLES
ADD FOREIGN KEY(FK_ID_REGION)
REFERENCES REGIONS(ID_REGION)
ON DELETE CASCADE; /* Tu peux aussi ajouter ON UPDATE CASCADE si tu veux que la clé étrangère soit mise à jour lors de l'update de la clé de REGIONS */
/* Création de la table des communes */
CREATE TABLE COMMUNES(
ID_COMM INTEGER NOT NULL,
NOM_COMM VARCHAR(50) NOT NULL,
FK_ID_VILLE INTEGER NOT NULL
);
/* Création clé primaire sur COMMUNES */
ALTER TABLE COMMUNES
ADD PRIMARY KEY(ID_COMM);
/* Création clé étrangère COMMUNES-VILLES */
ALTER TABLE COMMUNES
ADD FOREIGN KEY(FK_ID_VILLE)
REFERENCES VILLES(ID_VILLE)
ON DELETE CASCADE;
Si derrière ça, tu exécute la requête :
DELETE FROM REGIONS
WHERE ID_REGION = [N° de la région à supprimer];
Les villes rattachées à cette région, et les communes rattachées à ces villes seront également supprimées...
Simon