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
Userdiduplikasi di setiap tabel subclass - Kunci asing untuk
Userharus dipecah menjadi tiga bidang FK. Satu untukAdmin, satu untukTeacherdan satu untukStudent.
- Semua bidang
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
Userdata - Tidak ada pemisahan FK menjadi
User
- Semua bidang berada di tabel yang sama, jadi tidak perlu bergabung untuk mendapatkan semua
- Kon
- Ada banyak bidang yang tidak pernah digunakan. Semua bidang khusus untuk
StudentdanTeachertidak pernah diisi untukAdminsdan sebaliknya - Validasi data seperti bidang wajib untuk kelas konkret seperti
Studentmenjadi agak rumit karena tidak lagi sederhanaNot Nullkendala.
- Ada banyak bidang yang tidak pernah digunakan. Semua bidang khusus untuk
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
Userrecord memiliki tepat satuAdmin,TeacheratauStudentmerekam.
- Anda harus membuat kueri dua tabel jika ingin semua data
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.