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

Bisakah kunci asing bertindak sebagai kunci utama?

Tentu saja. Ini adalah teknik umum yang dikenal sebagai pengetikan super tabel. Seperti dalam contoh Anda, idenya adalah bahwa satu tabel berisi superset entitas dan memiliki atribut umum yang menjelaskan entitas umum, dan tabel lain berisi subset entitas tersebut dengan atribut tertentu. Ini tidak berbeda dengan hierarki kelas sederhana dalam desain berorientasi objek.

Untuk pertanyaan kedua Anda, satu tabel dapat memiliki dua kolom yang merupakan kunci asing terpisah ke tabel lain yang sama. Saat database membuat kueri, database tersebut akan bergabung dengan tabel lain tersebut dua kali. Untuk mengilustrasikan dalam kueri SQL (tidak yakin tentang sintaks MySQL, saya sudah lama tidak menggunakannya, jadi ini adalah sintaks MS SQL secara khusus), Anda akan memberikan tabel itu dua alias berbeda saat memilih data. Sesuatu seperti ini:

SELECT
    student_accounts.name AS student_name,
    counselor_accounts.name AS counselor_name
FROM
    student_rec
    INNER JOIN user_accounts AS student_accounts
      ON student_rec.student_number = student_accounts.user_id
    INNER JOIN user_accounts AS counselor_accounts
      ON student_rec.guidance_counselor_id = counselor_accounts.user_id

Ini pada dasarnya membutuhkan student_rec tabel dan menggabungkannya dengan user_accounts tabel dua kali, sekali pada setiap kolom, dan memberikan dua alias berbeda saat menggabungkannya untuk membedakannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah permata dm_mysql_adapter Datamapper didukung di windows?

  2. MySQL:Perbarui/masukkan/hapus kueri yang sangat lambat tergantung pada langkah akhir kueri

  3. Kode Kesalahan:1005. Tidak dapat membuat tabel '...' (errno:150)

  4. Membuat ukuran tertentu

  5. KIRI JOIN pesanan dan batas