Du vil tilsyneladende bare have lidt vejledning. Så jeg vil prøve at gøre det kort.
$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;";
Du bruger kun id-numre, når identiteten er svær at fastlægge. Når du har med mennesker at gøre, er identitet svær at fastgøre. Der er masser af mennesker, der hedder "John Smith".
Men du har at gøre med to ting, der allerede er blevet identificeret. (Og identificeret med id-numre, af alle ting.)
Cascading sletninger giver mening. Det er relativt sjældent at kaskade opdateringer om id-numre; de formodes aldrig at ændre sig. (Hovedårsagen til, at Oracle DBA'er insisterer på, at primærnøgler altid skal være ID-numre, og at de aldrig må ændringen skyldes, at Oracle ikke kan cascade-opdateringer.) Hvis der senere behov for nogle id-numre for at ændre uanset årsagen, kan du ændre tabellen til at inkludere 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;";
Bemærk den yderligere unikke begrænsning på group_title. Du ønsker ikke at tillade noget lignende (nedenfor) i din database.
group_id group_title
--
1 First group
2 First group
3 First group
...
9384 First group
Du vil gerne føre den slags ændringer gennem alle dine borde. (Måske undtagen din tabel over kunder.)