Изглежда, че искате само малко напътствие. Така че ще се опитам да бъда кратък.
$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;";
Само нуждаете се идентификационни номера, когато е трудно да се установи самоличност. Когато си имаш работа с хора, идентичността е трудно да се определи. Има много хора на име "Джон Смит".
Но вие се занимавате с две неща, които вече са идентифицирани. (И идентифицирани с идентификационни номера на всички неща.)
Каскадното изтриване има смисъл. Сравнително рядко е каскадните актуализации на идентификационните номера; предполага се, че никога не се променят. (Основната причина, поради която администраторите на база данни на Oracle настояват, че първичните ключове трябва винаги да бъдат идентификационни номера и че те не трябва никога промяната е, защото Oracle не може каскадни актуализации.) Ако по-късно някои идентификационни номера необходими за да промените по каквато и да е причина, можете да промените таблицата, за да включите 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;";
Обърнете внимание на допълнителното уникално ограничение за group_title. Не искате да разрешавате нещо подобно (по-долу) във вашата база данни.
group_id group_title
--
1 First group
2 First group
3 First group
...
9384 First group
Ще искате да пренесете тези видове промени във всичките си таблици. (С изключение може би на вашата маса с клиенти.)