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

Bagaimana cara menguji tabel yang ditautkan dengan kunci asing?

Seperti yang disebutkan dalam komentar, Anda harus meletakkan tabel apa pun dengan batasan FK ke tabel lain, pertama, lalu Anda dapat melepaskan tabel yang ditautkan.

Contoh:

User
  id: 1
  name: Mike

Address 
  id: 1
  user_id: 1 (FK constraint to User.id table.column)
  address_1: 555 Main Street

Penyiapan ini adalah hubungan 1:1 (selengkapnya tentang normalisasi data ), di mana satu baris pengguna dapat mereferensikan satu baris alamat, dan karena baris alamat bergantung pada keberadaan baris pengguna, jika Anda mencoba untuk menghapus baris pengguna, Anda akan melihat kesalahan yang Anda sebutkan.

Tetapi jika Anda menjatuhkan tabel Alamat terlebih dahulu, semuanya berfungsi seperti yang diharapkan karena tabel Pengguna tidak FK ke tabel lain.

Memastikan integritas referensial dalam skema Anda memastikan Anda tidak berakhir dengan baris yatim piatu, yang akan meresap ke seluruh aplikasi berbasis data Anda.

Anda juga dapat mengeluarkan perintah berikut:

SET foreign_key_checks = 0;
# Do Stuff
SET foreign_key_checks = 1;

Tetapi saya sangat menyarankan untuk tidak melakukannya, karena Anda dapat merusak integritas referensial data Anda, dan berakhir dengan kekacauan yang nyata. Saya telah melihat seseorang melakukan ini di lingkungan perusahaan dan mereka membutuhkan waktu berminggu-minggu untuk membersihkannya. Namun, jika Anda melakukan ini SANGAT untuk tujuan pengujian; seperti menulis tes unit, atau hanya belajar, dan Anda tidak ingin menjatuhkan tabel setiap saat, Anda dapat melakukan ini:

# Because we remove the foreign key check, we can truncate in any order
SET foreign_key_checks = 0;
TRUNCATE TABLE user;
TRUNCATE TABLE address;
SET foreign_key_checks = 1;

Desain skema yang tepat menggunakan batasan kunci asing sejalan dengan membangun fondasi yang baik untuk aplikasi berbasis data apa pun. Perlu waktu untuk memahami kapan harus menggunakan, dan bagaimana membuat batasan kunci asing, tetapi seiring waktu Anda akan mulai mengerti. Cara yang baik untuk memulai adalah mengunduh proyek sumber terbuka seperti magento , wordpress , atau vbulletin dan lihat skema mereka. Anda bahkan dapat mengintrospeksi skema ini menggunakan MySQL workbench dan lihat Diagram Hubungan-Entitas mereka (ERD), yang akan mendemonstrasikan link antar tabel secara visual.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Codeigniter tidak mengizinkan saya memperbarui entri, karena beberapa bidang harus unik

  2. mysql untuk python 2. 7 mengatakan Python v2.7 tidak ditemukan

  3. Memilih nilai yang berbeda dari beberapa kolom tabel dengan hitungannya

  4. Mengunduh data ke file csv dari MySQL menggunakan PHP

  5. Kapan stempel waktu (otomatis) diperbarui?