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 untukAdmin
, satu untukTeacher
dan 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
User
data - 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
Student
danTeacher
tidak pernah diisi untukAdmins
dan sebaliknya - Validasi data seperti bidang wajib untuk kelas konkret seperti
Student
menjadi agak rumit karena tidak lagi sederhanaNot Null
kendala.
- 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
User
record memiliki tepat satuAdmin
,Teacher
atauStudent
merekam.
- 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.