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

Kelas Abstrak dari UML ke diagram ER. Mungkin ? Bagaimana?

Pada dasarnya ada tiga pilihan untuk menerjemahkan generalisasi ke dalam model database

1. Satu meja per kelas beton

Buat tabel Admin , Teacher dan Student . Masing-masing tabel ini berisi kolom untuk semua atribut dan relasi User

  • Pro
    • Semua bidang dari subkelas konkret berada di tabel yang sama, jadi tidak perlu bergabung untuk mendapatkan semua data Siswa
    • Batasan validasi data yang mudah (seperti bidang wajib untuk Student )
  • Kon
    • Semua bidang User diduplikasi di setiap tabel subclass
    • Kunci asing untuk User harus dipecah menjadi tiga bidang FK. Satu untuk Admin , satu untuk Teacher dan satu untuk Student .

2. Di atas meja untuk keseluruhan set generalisasi

Dalam hal ini Anda hanya memiliki satu tabel, panggil User yang berisi semua bidang User + semua bidang dari semua sub-kelas User

  • Pro
    • Semua bidang berada di tabel yang sama, jadi tidak perlu bergabung untuk mendapatkan semua User data
    • Tidak ada pemisahan FK menjadi User
  • Kon
    • Ada banyak bidang yang tidak pernah digunakan. Semua bidang khusus untuk Student dan Teacher tidak pernah diisi untuk Admins dan sebaliknya
    • Validasi data seperti bidang wajib untuk kelas konkret seperti Student menjadi agak rumit karena tidak lagi sederhana Not Null kendala.

3. Satu meja per kelas beton, dan satu untuk kelas super

Dalam hal ini Anda membuat tabel untuk setiap sub-kelas konkret dan Anda membuat tabel untuk kelas User . Setiap tabel sub-kelas konkret memiliki FK wajib untuk User

  • Pro
    • Skema yang paling dinormalisasi:Tidak ada bidang berulang untuk atribut pengguna, dan tidak ada bidang yang tidak digunakan.
    • Tidak ada pemisahan FK menjadi User
    • Batasan validasi data yang mudah (seperti bidang wajib untuk Student )
  • Kon
    • Anda harus membuat kueri dua tabel jika ingin semua data Student
    • Aturan validasi yang rumit untuk memastikan setiap User record memiliki tepat satu Admin , Teacher atau Student merekam.

Manakah dari pilihan ini yang Anda pilih tergantung pada beberapa hal seperti jumlah subclass, jumlah atribut baik di subclass atau superclass, jumlah FK ke superclass, dan mungkin beberapa hal lain yang tidak saya lakukan. pikirkan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bangun klausa WHERE dinamis di mySQL

  2. Mengunggah database mysql besar di AWS RDS menggunakan dempul - 'Server MySQL telah hilang'

  3. Kesalahan umum MySQL:"Mendapat kesalahan saat membaca paket komunikasi"

  4. MySQLdb.cursor.execute tidak dapat menjalankan banyak kueri

  5. Kata sandi tidak diverifikasi menggunakan fungsi password_verify