Back to IF2240 Basis Data
Topic
Questions/Cues
- Apa itu Specialization?
- Apa itu Generalization?
- Bagaimana notasi untuk Specialization/Generalization?
- Apa saja batasan pada Generalization?
- Apa itu Aggregation?
- Kapan Aggregation digunakan?
- Bagaimana notasi untuk Aggregation?
Specialization (Spesialisasi)
- Definisi: Sebuah proses desain top-down di mana kita mengidentifikasi sub-grup di dalam sebuah entity set yang memiliki atribut atau relasi yang unik, yang tidak dimiliki oleh semua anggota entity set tersebut.
- Contoh: Dalam entity set
person, kita bisa mengidentifikasi sub-grupstudent(yang memiliki atributtot_cred) daninstructor(yang memiliki atributsalary).- Konsep: Sub-grup ini disebut juga subclass, dan entity set utamanya adalah superclass. Subclass mewarisi semua atribut dan relasi dari superclass-nya (disebut attribute inheritance).
- Dapat didefinisikan Spesialisasi yang berbeda untuk sebuah entitas.
Generalization (Generalisasi)
- Definisi: Sebuah proses desain bottom-up yang merupakan kebalikan dari spesialisasi. Kita mengidentifikasi beberapa entity set yang memiliki fitur-fitur yang sama, lalu menggabungkan fitur-fitur tersebut ke dalam satu entity set level yang lebih tinggi (superclass).
- Contoh: Entitas
cardantrucksama-sama memiliki atributvehicle_iddanlicense_plate. Kita bisa menggeneralisasi keduanya menjadi superclassvehicle.Notasi dan Batasan
Notasi Grafis: Specialization/Generalization direpresentasikan dengan sebuah segitiga berlabel “ISA” yang menunjuk dari subclass ke superclass.
Ilustrasi ASCII (Generalization):
+-----------+ | person | <---- Superclass +-----------+ ^ | /-----\ | ISA | \-----/ / \ / \ +----------+ +------------+ | student | | instructor | <---- Subclasses +----------+ +------------+Batasan pada Generalization:
- User-defined vs. Condition-defined:
- User-defined: Keanggotaan dalam sebuah sub-grup ditentukan secara otomatis oleh sebuah kondisi atau nilai atribut di entitas induk (superclass).
- Condition-defined: Tidak ada kondisi otomatis. Pengguna sistem (misalnya, operator data entry) yang secara manual menentukan keanggotaan sebuah entitas.
- Disjoint vs. Overlapping:
- Disjoint: Sebuah entitas hanya bisa menjadi anggota dari satu subclass. Ditandai dengan menuliskan “Disjoint” pada ISA yang bersesuaian.
- Overlapping: Sebuah entitas bisa menjadi anggota dari beberapa subclass secara bersamaan (misalnya, seseorang bisa menjadi mahasiswa sekaligus instruktur)(Default).
- Total vs. Partial:
- Total: Setiap entitas di superclass harus termasuk dalam salah satu subclass.
- Partial: Sebuah entitas di superclass boleh tidak termasuk dalam subclass manapun.
Aggregation (Agregasi)
Definisi: Sebuah abstraksi di mana himpunan relasi (relationship sets) diperlakukan seolah-olah sebagai entity sets level yang lebih tinggi.
Tujuan: Untuk memodelkan situasi di mana kita perlu membuat sebuah relasi ke sebuah relasi lain. ER model secara dasar tidak mengizinkan ini, sehingga kita perlu “mengagregasi” relasi target menjadi sebuah objek semu.
Contoh Kasus: Misalkan ada mahasiswa (
student) yang mengerjakan proyek (project), dimodelkan dengan relasiproj_guide. Kemudian, seorang dosen (instructor) perlu memberikan evaluasi (eval_for) terhadap pengerjaan proyek tersebut. Relasieval_forini bukan kestudentatauprojectsecara terpisah, melainkan ke keseluruhan relasiproj_guideitu sendiri.Notasi Grafis: Relasi yang akan diagregasi (beserta entitas-entitasnya) dimasukkan ke dalam sebuah kotak besar.
Ilustrasi ASCII:
+------------------------------------------------------+ | | | +---------+ +------------+ +---------+ | | | student |-------< proj_guide >-------| project | | <--- Aggregation | +---------+ +------------+ +---------+ | | | +------------------------------------------------------+ | | +<----------+ | eval_for | +---------->+ | | +------------+ | instructor | +------------+Studi Kasus: Hirarki Universitas
Permasalahan:
“Di sebuah universitas, ada person yang bisa menjadi employee atau student. Seorang employee selanjutnya bisa menjadi instructor atau staff. Tunjukkan pemodelan hirarki ini.”
Analisis:
Ini adalah contoh Specialization/Generalization bertingkat. person adalah superclass utama. employee dan student adalah subclass dari person. Kemudian, employee sendiri menjadi superclass untuk instructor dan staff.
Diagram ASCII Solusi:
+---------+ | person | +---------+ ^ | /-----\ | ISA | \-----/ / \ +----------+ +---------+ | employee | | student | +----------+ +---------+ ^ | /-----\ | ISA | \-----/ / \ +------------+ +-------+ | instructor | | staff | +------------+ +-------+
Model ER dapat diperluas untuk menangani skenario yang lebih kompleks. Specialization (top-down) dan Generalization (bottom-up) digunakan untuk memodelkan hubungan superclass-subclass (hirarki ‘ISA’), lengkap dengan batasan seperti disjoint/overlapping dan total/partial. Di sisi lain, Aggregation digunakan untuk memperlakukan sebuah relasi sebagai satu unit entitas, yang memungkinkan kita untuk membuat relasi baru yang menunjuk ke relasi yang sudah ada tersebut.
Additional Information (Optional)
Perbandingan dengan UML
Konsep Specialization dan Generalization dalam ERD sangat mirip dengan konsep pewarisan (inheritance) dalam diagram kelas UML (Unified Modeling Language). Keduanya menggunakan notasi panah yang menunjuk dari kelas/entitas anak ke kelas/entitas induk untuk menunjukkan hubungan ‘ISA’. UML juga memiliki mekanisme untuk merepresentasikan agregasi dan komposisi, meskipun notasinya sedikit berbeda. Bagi mereka yang sudah terbiasa dengan pemodelan berorientasi objek, konsep-konsep ini akan terasa sangat familiar.

