Rabu, 13 Juni 2012

Enhanced Entity Relations Diagram (EERD)


Enhanced Entity Relations Diagram (EERD)

Berawal dari tahun 1980-an dimana meningkatkannya kebutuhan akan aplikasi basis data untuk macam aplikasi yang juga meningkat. Konsep dasar dari Entity Relationship yang tidak dapat mencukupi untuk aplikasi-aplikasi baru yang lebih kompleks, sehingga memicu untuk adanya sebuah model yang berdasar kepada model sematik. Model semantic ini adalah pengembangan lebih lanjut dari model ER yang sudah ada, yang disebuh sebagai Enhanced Entity Relationship atau EER. Selanjutnya dari model ini diperkenalkan konsep utama yaitu spesialisasi/generalisasi dan bagaimana konsep ini digunakan dalam diagram EER dengan menggunakan UML. Kemudian akan dibahas juga konsep komposisi dan agregasi yang juga akan direpresentasikan dalam diagram dengan UML.

1. Spesialisasi/Generalisasi
Konsep dari spesialisasi/generalisasi dihubungkan dengan tipe entity khusus yang dikenal dengan superclass dan subclass, dan proses dari attribute inheritance.
  • Superclass dan subclass
Dari konsep ER pada umumnya hubungan entitas yang satu dengan yang lain mempunyai level atau hirarki yang sama, sementara pada konsep superclass dan subclass, dapat dilihat bias terdapat hirarki pada tipe entitinya.
Superlass adalah tipe entity yang didalamnya terdapat subgroup yang lebih unik didalam model data. Sedangkan subclass adalah subgroup yang unik didalam model data. Sebagai contoh, entitas yang terdapat pada entitas staff terdapat tipe entitas yang ada dibawahnya yaitu Manager, Sales Personel, dan Secretary. Itu ddapat disimpulkan bahwa entitas staff adalah superclass dan ketiga entitas dibawahnya adalah subclass
  • Superclass/subclass relationship
Setiap entitas dalam subclass juga termasuk kedalam superclass. Dengan kata lain entitas yang ada dalam subclass ada didalam superclass, tetapi memiliki peran/fungsi yang berbeda. Hubungan antar superclass dan subclass adalah satu ke satu (1:1). Dalam hal ini kita dapat menghindari pendefinisan staf yang berbeda dalam sebuah entitas yang mungkin mempunyai beberapa atribut yang berbeda. Misalkan didalam entitas staff terdapat atribut sales area dan car allowance, yang mana atribut tersebut hanya dipergunakan oleh staff dengan peran sales personnel, bila hal ini diimplementasikan dengan satu jenis entitas saja maka akan menghasilkan nilai null untuk atribut specific role. Sebenarnya untuk sales personnel, memiliki atribut yang sama dengan staff kebanyakan yaitu staffno, name, position, salary, tetapi atribut yang berbeda inilah yang nantinya akan bermasalah apabila dibuatkan hanya satu model entitas saja. Perhatikan gambar 1 yang memperlihatkan semua atribut dari staff tanpa melihat dari posisi. Kosekuensi yang harus diterima adalah ketika membuat strukturnya menjadi seperti ini adalah ketika atribut (staffno, name, position, salary) yang merupakan atribut wajib dari staff akan berisi, sedangkan atribut lain yang berkorespondensi dengan masing-masing posisi tidak selalu berisi.










     
Gambar 1 Relasi Allstaff dengan atribut dari berbagai subclass nya.

Terdapat dua hal yang menjadi alasan dari  superclassdan subclass dalam model ER. Yang pertama, menghindari pembuatan entitas yang sama untuk posisi yang berbeda, sehingga membuat ER diagram lebih mudah untuk dibaca dan dipahami. Yang kedua, lebih memudahkan arti semantiknya. Misalkan “Manager adalah bagian dari staff”  hal inilah yang membuat ER menjadi lebih berarti.
  • Attribute inheritance/Pewarisan Atribut
Seperti yang telah disebutkan sebelumnya, bahwa setiap superclass dapat dibagi menjai sub class. Disini, atribut dari superclass akan menjadi atribut juga dari subclass yang ada dibawahnya. Ada pewarisan atribut dari superclass ke subclass. Misalkan, superclass staff dengan atribut (staffno, name, position dan salary ) juga akan menjadi atribut bagi member subclass, seperti manager, secretary, Sales Personnel. Sementara itu atribut – atribut yang sifatnya spesifik hanya ada pada subclass-subclass nya. Sebuah entitas beserta subclass-subclas nya disebut dengan hirarki tipe. Terdapat tiga jenis hirarki. Yang pertama adalah hirarki spesialisasi contoh Manager adalah spesialisasi dari Staff. Kemudian terdapat hirarki generalisasi, contoh staff adalah generalisasi dari Manager. Dan hirarki IS-A contoh Manager IS-A anggota dari Staff. Sebuah subclass dengan banyak superclass dinamakan shared subclass. Sebagai konsekuensinya setiap atribut didalam superclass merupakan pewarisan dari atribut Shared subclass. Proses seperti ini dinamakan sebagai multiple inheritance. 
  • Proses Spesialisasi
Spesialisasi adalah proses yang memaksimalkan perbedaan antara anggota entitas dengan cara mengidentifikasikan perbedaan karakteristik masing-masing anggota.
  • Proses Generalisasi
Generalisasi adalah proses yang meminimasi perbedaan antara entitas dengan cara mencari kesamaan –kesamaan yang ada.
Gambar 2 Spesialisasi/ Generalisasi entitas Staff berdasarkan job roles
Gambar 3 Spesialisasi/ Generalisasi entitas Staff berdasarkan job roles dan contract of employee





















  • Constraint dalam spesialisasi dan generalisasi
Terdapat dua constraint dalam spesialisasi dan generalisasi, yaitu participation constraint dan disjoint constraint.

Participation Constraint
Participation constraint menentukan apakah setiap anggota dari superclass harus berpartisipasi dalam setiap member dari subclass. Dalam participation constraint bisa jadi mandatory atau optional.
Mandatoryà setiap member dari superclass juga merupakan member dari subclass. Sebagai contoh, dari gambar 3 contract of employment specialization/generalization adalah mandatory, berarti setiap member dari staff harus memiliki contract of employment.
Optionalà setiap member dari superclass tidak harus menjadi member dari subclass. Contoh, dari gambar 3 memperlihatkan bahwa setiap staf tidak harus menjadi manager, sales personnel atau secretaries.

Disjoint Constraint
Disjoint constraint menentukan hubungan antar setiap member dari subclass dan menunjukkan apakah mungkin sebuah superclass merupakan anggota dari 1 atau lebih subclass. Disjoint constraint ini hanya digunakan apabila superclass memiliki lebih dari satu subclass. Dalam Disjoint Participation, terdapat dua constraint, yaitu Or dan And.
Orà jika subclassnya disjoint maka membernya hanya menjadi member dari satu subclass, contoh: seorang staf hanya bisa jadi full time atau part-time saja.
Andà jika subclassnya non-disjoint maka entitasnya dapat menjadi member dari satu atau lebih subclass. Contoh: entitas staf menjadi bagian dari member Manager, Sales Personnel dan Secretary.

 
                                         Gambar 4 Superclass staff dan subclassnya

            Dari gambar 4 diketahui bahwa participation constraintnya adalah optional, artinya ada staff, supervisor atau manajer, sedangkan or berarti seorang staf bisa menjadi supervisor atau manager.


Dari gambar 5 untuk participation constraintnya mandatory, menyatakan bahwa atribut dari owner harus merupakan atribut dari private owner dan business owner. Disjoint participationnya adalah or berarti seorang hanya dapat menjadi private owner atau business owner.


 









Gambar 5 superclass owner dan subclassnya private owner dan bsiness owner.

2. Aggregasi

Agregasi menggambarkan hubungan ‘memiliki’ atau ‘bagian dari’ antar tipe entitasnya, dimana yang satu menunjukkan seluruh dan yang lain menunjukkan sebagian. Memperlihatkan hubungan antar entitas dari tingkat hirarki yang sama. Kadang pada saat kita akan mendefinisikan suatu entitas yang mengidentifikasi entitas yang besar yang terdiri dari entitas yang lebih kecil. Jenis hubungan seperti ini disebut agregasi (Booch et al, 1998)
Gambar 6
Contoh agregasi
 







3. Komposisi
      Bentuk khusus dari agregasi yang merepresentasikan asosiasi antar entitas, dimana terdapat kepemilikan yang kuat antar ‘seluruh’ dan ‘sebagian’.


 






Gambar 7 contoh komposisi


Sebagai kesimpulan bahwa EERD ini merupakan konsep yang dikembangkan dari konsep ER sebelumnya dengan mengunakan konsep UML.





KALKULUS RELASIONAL


KALKULUS RELASIONAL

Bahasa query memungkinkan manipulasi dan pemanggilan data dari suatu basisdata. Terdapat 2 macam bentuk bahasa query”
1.             Aljabar Relasional
Aljabar relasional adalah sebuah bahasa query prosedural yang terdiri dari sekumpulan operasi dimana masukkannya adalah satu atau dua relasi dan keluarannya adalah sebuah relasi baru sebagai hasil dari operasi tersebut. Lebih bersifat operasional, sangat berguna untuk merepresentasikan eksekusi perencanaan.
Operasi aljabar terdiri dari himpunan operator level tinggi yang dioperasikan pada suatu relasi. Setiap operator menggunakan satu atau dua relasi sebagai input dan menghasilkan relasi baru sebagai output
Operasi Dalam Aljabar Relasional
n  Operasi-operasi dasar dalam aljabar relasional adalah :
o   operasi selection  (σ)
o   operasi projection (π)
o   operasi  cartesian (x)
o   operasi union (U)
o    opersi set – difference (-)
o    operasi rename (ρ)
n  Operasi turunan dalam aljabar relasional adalah :
o   Operasi set –interface
o   Operasi natural join
o   Operasi theta join
o   Operasi devision
Operasi-operasi select, project dan rename disebut operasi unary, karena operasi-operasi tersebut hanya memerlukan satu relasi. Tiga operasi lainnya memerlukan sepasang relasi, disebut operasi binary.
Ø  operasi selection  (σ)
Operasi select berfungsi untuk menyeleksi tuple-tuple yang memenuhi predikat yang diberikan dari sebuah tabel relasi. Operasi select menyeleksi tuple-tuple yang memenuhi predikat yang diberikan. Digunakan symbol sigma (σ) untuk menunjukkan operasi select. Predikat muncul sebagai subcript dari σ. Argumen relasi diberikan dalam kurung yang mengikuti σ.
Contoh penggunaan operasi select :
     σ nama_cabang= cabang5(ms_cabang)

Ø  operasi projection (π)
Operasi project berfungsi untuk memilih nilai atribut-atribut tertentu saja dari sebuah tabel relasi. Operasi project disimbolkan dengan symbol phi (π). Nama-nama atribut yang diinginkan tampil ditulis sebagai subcript π.
Contoh penggunaan operasi project :
      Π kode_kota,kode_propinsi(ms_kota)

Ø  operasi  cartesian (x)
Operasi cartesian product berfungsi untuk mengkombinasikan informasi yang ada dalam 2 tabel relasi atau lebih  dan menghasilkan sebuah tabel relasi yang baru. Contoh operasi cartesian
Πx c k p ( Ms_ cabang x Ms_kota x Ms_propinsi)) tabel relasi baru
Ø  operasi union ()
A B adalah relasi dengan heading (atribut) yang sama untuk setiap A dan B, dimana terdiri dari himpunan semua tuples yang terdapat pada A atau B atau kedua-duanya. Operasi union berfungsi untuk mendapatkan gabungan nilai atribut dari sebuah tabel relasi dengan nilai atribut dari tabel relasi lainnya.



Contoh penggunaan operasi union :
Π Nama_cabang(ms_cabang) Π      Nama_cabang(MS_cabanga)

Ø  opersi set – difference (-)
Operasi set difference berfungsi untuk mendapatkan nilai yang ada dalam sebuah tabel relasi, tapi tidak ada dalam tabel relasi lainnya. A MINUS B adalah relasi dengan heading (atribut) yang sama untuk setiap A dan B, dimana terdiri dari himpunan semua tuples yang terdapat pada A, tetapi tidak terdapat pada B.




Contoh operasi set-difference :
Π Nama_cabang(ms_cabang) –Nama_cabang(ms_cabanga)

Ø  operasi rename (ρ)
Dalam operasi himpunan Cross – Product, bisa menimbulkan terjadinya Konflik Penamaan, karena Cross – Product bisa menghasilkan suatu relasi dari 2 relasi dengan skema yang sama, sehingga skema hasil akan muncul field dengan nama yang sama. Operator Renaming (r) digunakan untuk menghindari terjadinya Konflik Penamaan tersebut.


2.             Kalkulus Relasional
     Dalam kalkulus relasional tidak ada penjabaran bagaimana mengevaluasi querinya, hanya menspesifikkan apa yang harus ditampilakan bukan bagaimana menampilkan. Memungkinkan user menggambarkan apa yang mereka inginkan, tidak pada pada bagaimana cara melakukan komputasi terhadap apa yang mereka inginkan tersebut. (tidak bersifat operasional, tapi bersifat deklaratif). Memahami aljabar dan kalkulus relasional adalah kunci memahami SQL.
         Ciri-ciri relasi kalkulus :
        First order calculus menggunakan simbol-simbol predikat dan simbol-simbol fungsi. Untuk kaitannya dengan basis data : simbol fungsi tidak diperlukan dan predikat diinterprestasikan sebagai relasi.
        Formula pada first order calculus dapat dibedakan ke dalam dua kelas :
       Open formula (free variable)
Didefinisikan sebagai himpunan tuples elemen dari kondisi secara keseluruhan, yang dapat menghasilkan formula “TRUE”.
       Closed formula atau sentences yang memiliki variable terbatas
Karena kalkulus dipergunakan sebagai bahasa query dan basis data bertujuan untuk instant maupun relasi lainnya, maka closed formulas tidak diperhatikan.
Kalkulus relasional terbagi menjadi 2:
1.        Kalkulus relasional berdasarkan tupel
Dalam kalkulus relasional tupel digunakan variabel dari tupelnya .variabel dari suatu tupel adalah daerah yang terdefinisi sebagai nama dari suatu relasi.
Contoh : manampilkan nama_propinsi pada kode_propinsi  ‘pp2’
{t|t Є ms_propinsi t(kode_propinsi)=‘pp2’}
Dalam SQL
SELECT nama_propinsi
FROM ms_propinsi
WHERE kode_propinsi = 'pp2‘
2.        Kalkulus relasional berdasarkan domain
Simbol yang muncul pada formula terdiri dari : konstan (elemen-elemen domain D), variabel (elemen-elemen dari himpunan berhingga V yang dihubungkan dengan domain D), nama relasi (tabel) dan atribut (berdasarkan skema basis data), operator perbandingan (=, ≠, >, >=, <, <=), penghubung logika (Λ ( dan / konjugsi),  (V atau/disjungsi), ⌐ (not/negasi), ada/beberapa(  ), dan semua (  )).
Contoh Kalkulus domain;
Mencari data mengenai nama_cabang pada tabel ms_cabang.
{<kk,nk,kp>|<kk,nk,kp> Є ms_cabang }
Dalam SQL:
SELECT nama_cabang
FROM ms_cabang