Du verkar bara vilja ha lite vägledning. Så jag ska försöka fatta mig 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 behöver bara id-nummer när identitet är svår att spika. När du har att göra med människor är identiteten svår att sätta fast. Det finns massor av människor som heter "John Smith".
Men du har att göra med två saker som redan har identifierats. (Och identifierad med id-nummer, av alla saker.)
Kaskadraderingar är vettigt. Det är relativt sällsynt att överlappa uppdateringar av ID-nummer; de antas aldrig förändras. (Den främsta anledningen till att Oracle DBA:er insisterar på att primärnycklar alltid måste vara ID-nummer, och att de aldrig förändring beror på att Oracle inte kan kaskaduppdateringar.) Om några id-nummer senare behöver för att ändra av någon anledning kan du ändra tabellen så att den inkluderar PÅ UPPDATERING 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;";
Notera den ytterligare unika begränsningen på group_title. Du vill inte tillåta något liknande (nedan) i din databas.
group_id group_title
--
1 First group
2 First group
3 First group
...
9384 First group
Du kommer att vilja bära den typen av förändringar genom alla dina tabeller. (Förutom kanske din kundtabell.)