Zdá se, že chcete jen malý návod. Pokusím se tedy být stručný.
$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;";
Pouze potřebujete identifikační čísla, když je těžké určit identitu. Když jednáte s lidmi, identita se těžko hledá. Existuje spousta lidí se jménem "John Smith".
Ale vy máte co do činění se dvěma věcmi, které již byly identifikovány. (A identifikovaný s identifikačními čísly, ze všech věcí.)
Kaskádové mazání dává smysl. Je poměrně vzácné kaskádovat aktualizace identifikačních čísel; předpokládá se, že se nikdy nezmění. (Hlavní důvod, proč správci databází Oracle trvají na tom, že primární klíče musí vždy být ID čísla a že nesmí nikdy změna je způsobena tím, že Oracle nemůže kaskádové aktualizace.) Pokud později nějaká identifikační čísla potřebujete změnit z jakéhokoli důvodu, můžete změnit tabulku tak, aby zahrnovala 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;";
Všimněte si dalšího jedinečného omezení u group_title. Nic takového (níže) ve své databázi nechcete povolit.
group_id group_title
--
1 First group
2 First group
3 First group
...
9384 First group
Tyto změny budete chtít provést ve všech svých tabulkách. (Snad kromě vaší tabulky zákazníků.)