Sembra che tu voglia solo una piccola guida. Quindi cercherò di essere breve.
$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;";
Hai solo necessità numeri di identificazione quando l'identità è difficile da definire. Quando hai a che fare con le persone, l'identità è difficile da definire. Ci sono molte persone che si chiamano "John Smith".
Ma hai a che fare con due cose che sono già state identificate. (E identificato con numeri ID, di tutte le cose.)
Le eliminazioni a cascata hanno senso. È relativamente raro aggiornare a cascata i numeri ID; si presume che non cambino mai. (Il motivo principale per cui i DBA Oracle insistono sul fatto che le chiavi primarie devono sempre essere numeri ID e che non devono mai il cambiamento è dovuto al fatto che Oracle non può aggiornamenti a cascata.) Se, in seguito, alcuni numeri ID necessari per modificare per qualsiasi motivo, puoi modificare la tabella per includere 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;";
Nota il vincolo univoco aggiuntivo su group_title. Non vuoi consentire nulla di simile (sotto) nel tuo database.
group_id group_title
--
1 First group
2 First group
3 First group
...
9384 First group
Ti consigliamo di portare questo tipo di modifiche in tutte le tue tabelle. (Tranne, forse, il tuo tavolo di clienti.)