Anda tampaknya hanya ingin sedikit bimbingan. Jadi saya akan coba singkat.
$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;";
Anda hanya membutuhkan nomor id ketika identitas sulit untuk dipaku. Ketika Anda berurusan dengan orang, identitas sulit untuk dikukuhkan. Ada banyak orang bernama "John Smith".
Tetapi Anda berurusan dengan dua hal yang telah diidentifikasi. (Dan diidentifikasi dengan nomor id, dari semua hal.)
Penghapusan berjenjang masuk akal. Relatif jarang terjadi pembaruan kaskade pada nomor id; mereka dianggap tidak pernah berubah. (Alasan utama Oracle DBA bersikeras bahwa kunci utama harus selalu menjadi nomor ID, dan itu tidak boleh perubahan karena Oracle tidak bisa pembaruan kaskade.) Jika, nanti, beberapa nomor id perlu untuk mengubah untuk alasan apa pun, Anda dapat mengubah tabel untuk menyertakan 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;";
Perhatikan batasan unik tambahan pada group_title. Anda tidak ingin mengizinkan hal seperti ini (di bawah) dalam database Anda.
group_id group_title
--
1 First group
2 First group
3 First group
...
9384 First group
Anda akan ingin membawa perubahan semacam itu melalui semua tabel Anda. (Kecuali, mungkin, meja pelanggan Anda.)