Je lijkt gewoon een beetje begeleiding te willen. Dus ik zal proberen het kort te houden.
$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;";
Je hebt alleen nodig ID-nummers wanneer identiteit moeilijk vast te stellen is. Als je met mensen te maken hebt, is identiteit moeilijk vast te stellen. Er zijn veel mensen die "John Smith" heten.
Maar je hebt te maken met twee dingen die al zijn vastgesteld. (En geïdentificeerd met id-nummers, van alle dingen.)
Cascading verwijderen is logisch. Het is relatief zeldzaam om updates op ID-nummers trapsgewijs te laten verlopen; ze worden verondersteld nooit te veranderen. (De belangrijkste reden waarom Oracle DBA's erop staan dat primaire sleutels altijd moeten ID-nummers zijn, en dat ze nooit verandering is omdat Oracle niet kan cascade-updates.) Als, later, sommige ID-nummers nodig om welke reden dan ook te wijzigen, kunt u de tabel wijzigen zodat deze IN UPDATE CASCADE bevat.
$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;";
Let op de extra unieke beperking op group_title. Je wilt zoiets (hieronder) niet toestaan in je database.
group_id group_title
--
1 First group
2 First group
3 First group
...
9384 First group
U wilt dat soort wijzigingen door al uw tabellen voeren. (Behalve misschien uw tafel met klanten.)