Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kaskade INNODB saat dihapus dan diperbarui

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.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Data harus diganti sesuai tabel pencarian

  2. Bagaimana cara menghitung semua baris saat menggunakan SELECT dengan LIMIT dalam kueri MySQL?

  3. Mengapa cfloop saya berhenti setelah memasukkan id pertama?

  4. Memahami Ukuran Penyimpanan untuk Tipe Data MySQL TEXT

  5. Django AWS RDS MySQL Error:(2026, 'Kesalahan koneksi SSL:error:00000001:lib(0):func(0):reason(1)')