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

Mengidentifikasi vs Non-Mengidentifikasi Hubungan (Lagi!!!)

Anda terlalu memikirkan hubungan antara opsionalitas dan identitas. Sampai semuanya menjadi lebih alami bagi Anda, yang terbaik adalah menganggapnya sebagai sama sekali tidak berhubungan .

Tentang opsionalitas, penting untuk diingat bahwa opsionalitas itu terarah. Untuk menggunakan contoh employee_equipment :Tentu, karyawan tidak membutuhkan peralatan. Hubungan satu-ke-banyak dari employee ke employee_equipment adalah opsional. Pada saat yang sama, melihatnya dari perspektif yang berlawanan, hubungan itu wajib. Anda tidak dapat memiliki catatan di employee_equipment kecuali ada employee untuk mengasosiasikannya.

Identitas tidak ada hubungannya dengan opsionalitas, kecuali secara kebetulan hubungan mengidentifikasi adalah wajib dari anak ke orang tua. Apakah itu juga wajib dari orang tua kepada anak tidak ada di sini atau di sana sejauh menyangkut identitas.

Apa yang membuat suatu hubungan mengidentifikasi adalah bahwa Anda harus tahu orang tua apa yang Anda bicarakan (dan juga beberapa hal lain) untuk mengetahui anak apa yang Anda bicarakan. Artinya, kunci utama anak harus menyertakan kunci asing ke orang tua.

Tabel persimpangan murni (mis. employee_equipment ) adalah contoh yang baik untuk ini. Kunci utama dari persimpangan murni adalah kombinasi dari kunci asing ke kedua tabel induk. Perhatikan bahwa beberapa orang mungkin juga menambahkan kunci pengganti ke jenis tabel ini. Tidak masalah dari perspektif identitas jika ada beberapa kunci kandidat. Yang penting dalam menentukan identitas adalah apakah kunci asing merupakan bagian dari kunci kandidat, apakah kunci kandidat itu adalah kunci utama atau bukan.

Contoh bagus lainnya adalah sesuatu seperti katalog metadata database, di mana sebuah kolom diidentifikasi oleh tabel tempatnya berada, seperti halnya tabel diidentifikasi oleh skemanya, dan seterusnya. Mengetahui bahwa sebuah kolom disebut NAME tidak memberi tahu Anda kolom mana itu. Mengetahui bahwa itu adalah NAME kolom di CUSTOMER tabel membantu. (Anda juga harus mengetahui skema mana CUSTOMER ada di dalam, dan seterusnya).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. membuat slug judul halaman unik php

  2. Normalisasikan Semua Karakter UTF8 ke dalam format paling standar

  3. SQL Query Gabung di CodeIgniter

  4. Apa cara terbaik untuk melakukan pencadangan tambahan di MySQL?

  5. Kolasi Case Sensitive di MySQL