Tuesday, October 23, 2018

Sistem Basis Data – Entity Relationship Diagram (ERD)

Bahasan Sistem Basis Data kali ini tentang Entity Relationship Diagram (ERD) salah satu bentuk pemodelan basis data yang sering digunakan dalam pengembangan sistem informasi. Bahasan meliputi: Pengertian ERD, Notasi ERD, Metode ERD, Tahap ERD, Kardinalitas, dan Contoh kasus ERD

Pengertian ERD

Dalam rekayasa perangkat lunak, sebuah Entity-Relationship Model (ERM) merupakan abstrak dan konseptual representasi data. Entity-Relationship adalah salah satu metode pemodelan basis data yang digunakan untuk menghasilkan skema konseptual untuk jenis/model data semantik sistem. Dimana sistem  seringkali memiliki basis data relasional, dan ketentuannya bersifat top-down. Diagram untuk menggambarkan model Entitiy-Relationship ini disebut Entitiy-Relationship diagramER diagram, atau ERD.

Notasi ERD

Ada sejumlah konvensi mengenai Notasi  ERD. Notasi klasik sering digunakan untuk model konseptual. Berbagai notasi lain juga digunakan untuk menggambarkan secara logis dan fisik dari suatu basis data, salah satunya adalah IDEF1X.
Model ERD
Model ERD
Notasi-notasi simbolik yang digunakan dalam Entity Relationship Diagram adalah sebagai berikut :
  • Entitas, Adalah segala sesuatu yang dapat digambarkan oleh data. Entitas juga dapat diartikan sebagai individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu yang lain (Fathansyah, 1999). Ada dua macam entitas yaitu entitas kuat dan entitas lemah. Entitas kuat merupakan entitas yang tidak memiliki ketergantungan dengan entitas lainnya. Contohnya entitas anggota. Sedangkan entitas lemah merupakan entitas yang kemunculannya tergantung pada keberadaaan entitas lain dalam suatu relasi.
  • Atribut, Atribut merupakan pendeskripsian karakteristik dari entitas. Atribut digambarkan dalam bentuk lingkaran atau elips. Atribut yang menjadi kunci entitas atau key diberi garis bawah.
  • Relasi atau Hubungan, Relasi menunjukkan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda.
  • Penghubung antara himpunan relasi dengan himpunan entitas dan himpunan entitas dengan atribut dinyatakan dalam bentuk garis.
Contoh ERD
Contoh ERD

Derajat relasi atau kardinalitas

Menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas yang lain. Macam-macam kardinalitas adalah:
  • Satu ke satu (one to one), Setiap anggota entitas A hanya boleh berhubungan dengan satu anggota entitas B, begitu pula sebaliknya.
  • Satu ke banyak (one to many), Setiap anggota entitas A dapat berhubungan dengan lebih dari satu anggota entitas B tetapi tidak sebaliknya.
  • Banyak ke banyak (many to many), Setiap entitas A dapat berhubungan dengan banyak entitas himpunan entitas B dan demikian pula sebaliknya.

Tahap ERD

Tahap pertama pada desain sistem informasi menggunakan model ER adalah menggambarkan kebutuhan informasi atau jenis informasi yang akan disimpan dalam database. Teknik pemodelan data dapat digunakan untuk menggambarkan setiap ontologi (yaitu gambaran dan klasifikasi dari istilah yang digunakan dan hubungan anatar informasi) untuk wilayah tertentu.
Tahap berikutnya disebut  desain logis, dimana data dipetakan ke model data yang logis, seperti model relasional.  Model data yang loguis ini kemudian dipetakan menjadi model fisik , sehingga kadang-kadang, Tahap kedua ini disebut sebagai “desain fisik”.
Secara umum metodologi ERD sebagai berikut:
Metodologi ERD
Metodologi ERD

Contoh Kasus:

Sebuah perusahaan mempunyai beberapa bagian. Masing-masing bagian mempunyai pengawas dan setidaknya satu pegawai. Pegawai ditugaskan paling tidak di satu bagian (dapat pula dibeberapa bagian). Paling tidak satu pegawai mendapat tugas di satu proyek. Tetapi seorang pegawai dapat libur dan tidak dapat tugas di proyek.

Menentukan entitas

Entitasnya : pengawas, bagian, pegawai, proyek

Menentukan relasi dengan matrik relasi

Menentukan Relasi
Menentukan Relasi

Gambar ERD sementara

Hubungkan entitas sesuai dengan matrik relasi yang dibuat
ERD Sementara
ERD Sementara

Mengisi kardinalitas

Dari gambaran permasalahan dapat diketahui bahwa:
  • masing-masing bagian hanya punya satu pengawas
  • seorang pengawas bertugas di satu bagian
  • masing-masing bagian ada minimal satu pegawai
  • masing-masing pegawai bekerja paling tidak di satu bagian
  • masing-masing proyek dikerjakan paling tidak oleh satu pegawai
Mengisi kardinalitas
Mengisi kardinalitas
Menentukan kunci utama
Kunci utamanya: Nomor Pengawas, Nama Bagian, Nomor Pegawai, Nomor Proyek
Menentukan Kunci Utama
Menentukan Kunci Utama

Menggambar ERD berdasarkan kunci

Ada dua relasi many to many pada ERD sementara, yaitu antara bagian dengan pegawai, pegawai dengan proyek, oleh sebab itu kita buat entitas baru yaitu bagian -pegawai dan pegawai-proyek Kunci utama dari entitas baru adalah kunci utama dari entitas lain yang akan menjadi kunci tamu di entitas yang baru.
Menggambar ERD berdasarkan kunci
Menggambar ERD berdasarkan kunci

Menentukan atribut

Atribut yang diperlukan adalah: nama bagian, nama proyek, nama pegawai, nama pengawas, nomor proyek, nomor pegawai, nomor pengawas

Memetakan atribut

  • Bagian : Nama bagian
  • Proyek: Nama proyek
  • Pegawai:Nama pegawai
  • Pengawas: Nama pengawas
  • Proyek-Pegawai : Nomor proyek, Nomor pegawai
  • Pengawas: Nomor pengawas

Menggambar ERD dengan atribut

Menggambar ERD dengan atribut
Menggambar ERD dengan atribut

Memeriksa Hasil

Periksa apakah masih terdapat redundasi. ERD akhir: untuk pemodelan data pada sistem.

Thursday, October 18, 2018

Deadlock

Jadi deadlock itu apa yaa?? gimana cara pencegahannya dan mendeteksinyaa!!
disini saya coba menjelaskan tentang apa sih deadlock itu !!

Pengertian Deadlock

Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi Deadlock ialah suatu kondisi dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set yang sedang menunggu.

Cara Menghindari Deadlock

Deadlock bisa dihindari jika mempunyai informasi mengenai proses yang tersedia serta serta sumber daya yang akan dibutuhkannya. Untuk setiap sumber daya yang dibutuhkan suatu sistem akan mengawasi ketersediaan sumber daya yang dibutuhkan, yang berarti sistem akan masuk kedalam status yang tidak aman, atau dapat dikatakan hasil dari status tersebut akan mengakibatkan terjadinya deadlock atau disebut juga hang. Sebuah sistem hanya akan menjamin permintaan dalam keadaan status aman, dalam permintaan suatu sistem untuk mengetahui bahwa status yang dijalankannya itu aman atau tidak adalah dengan mengetahui setiap tipe dari setiap proses dan banyaknya sumber daya yang ada, tersedia, dan yang dibutuhkan. Algorithm yang digunakan untuk menghindari deadlock salah satunya adalah Banker’s Algoritm, yang digunakan untuk mengetahui batas sumber daya yang dibutuhkan oleh suatu proses. Bagaimanapun, untuk kebanyakan sistem tidaklah mungkin untuk dapat diketahui apa yang dibutuhkan oleh proses, ini berarti bahwa menghindari deadlock atau hang hampir tidaklah mungkin.


Cara Pencegahan Deadlock

Deadlock atau disebut juga hang dapat dihindari dengan cara melihat penyebab dari terjadinya deadlock itu sendiri seperti yang telah dipaparkan diatas yaitu : 1. Menghilangkan Mutual exclusion, yang berarti bahwa tidak ada proses yang bisa mendapatkan sumber daya secara exclusive. 2. Hold and wait condition bisa dihilangkan dengan cara meminta sumber daya yang dibutuhkan proses sebelum proses eksekusi dijalankan. Akan tetapi dengan cara seperti ini kurang begitu efisien dalam penggunaan dari sumber daya, jalan lain yang dapat ditempuh adalah dengan cara kemampuan suatu proses untuk melepaskan sumber dayanya sebelum permintaan sumber daya yang dibutuhkan. 3. No preemption condition (Lockout) mungkin saja sulit bahkan tidak mungkin untuk dijalankan ketika proses memakai sumber daya yang ada yang memakan waktu. Bagaimanapun ketidakmampuan untuk menghilangkan preemption bisa dilakukan dengan cara priority algorithm seperti lock-freeand wait-free algorithms serta optimistic concurrency control. 4. The circular wait condition, menghilangkan interupsi ketika proses dijalankan, dan menggunakan hierarchy untuk menentukan pembagian tugas dari sumber daya.


Metode Pendeteksian Deadlock

deadlock akan terjadi, jika dan hanya jika grafik tunggu memiliki siklus di dalamnya.Untuk mendeteksi deadlock, sistem harus memiliki grafik tunggu dan menjalankan algoritma deteksi deadlock secara periodik. Hal yang harus diperhatikan adalah seberapa sering algoritma deteksi harus dipanggil. Hal ini tergantung dari dua faktor: 1. Frekuensi terjadinya deadlock pada umumnya 2. Jumlah proses yang akan terpengaruh ketika deadlock terjadi.
Mengatasi Deadlock dan Dining Philosophers Page 3
Bila deadlock terjadi maka algoritma deteksi harus sering dipanggil. Resource yang dialokasikan ke proses-proses yang mengalami deadlock tidak akan digunakan sampai kondisi deadlock diatasi. Bila deadlock tidak segera diatasi maka jumlah proses yang terlibat dalam deadlock akan semakin bertambah. Salah satu ciri terjadinya deadlock adalah ketika beberapa proses mengajukan permohonan untuk resource, tetapi permohonan ini tidak dapat dipenuhi dengan segera. Sistem dapat saja memanggil algoritma deteksi setiap kali permohonan untuk resource tidak dapat diperoleh dengan segera. Namun,semakin sering algoritma deteksi dipanggil, maka waktu overhead yang dibutuhkan untuk komputasi menjadi semakin besar.

Contoh pada Kehidupan Sehari-Hari

Ada berbagai contoh deadlock dalam kehidupan sehari hari semisal ada dua orang bernama Roddhi dan Riddho. Riddho menelfon Roddhi tetapi Roddhi tidak menjawab panggilan. Beberapa detik kemudian, melihat panggilan yang tidak terjawab, Roddhi menelfon Riddho. Pada saat yang sama, Roddhi mencoba lagi dan menelfon Riddho. Keduanya mendapatkan pesan bahwa "orang yang Anda coba hubungi sedang sibuk, silakan coba nanti". Roddhi menyadari bahwa Riddho telah melihat panggilan yang terlewat karena dia menelepon kembali. Jadi dia menunggu Riddho menelepon lagi. Sementara itu Riddho, berpikir bahwa Roddhi mungkin sibuk dengan panggilan lain, menunggu, berharap bahwa dia akan menelepon kembali ketika dia melihat panggilan yang tidak terjawab.
Jadi mereka berdua menunggu berharap satu sama lain akan menelepon balik.
Begitulah contoh singkat deadlock dalam kehidupan sehari hari.