Minggu, 06 Oktober 2019

BAB 16 DATABASE TERINTEGRASI


Database terintegrasi adalah konsep dimana merupakan penggabungan database atau penyatuan database yang dapat saling berhubungan satu sama lain. Pada saat melakukan integrasi database, data dalam sebuah sistem tidak boleh hilang. Integrasi database membutuhkan skema yang mengambil semua aplikasi klien ke dalam laporan. Skema yang dihasilkan akan lebih umum, lebih kompleks atau keduanya. Database biasanya dikendalikan oleh kelompok yang terpisah untuk aplikasi dan perubahan database yang lebih kompleks karena harus dinegosiasikan antara kelompok database dan berbagai aplikasi.
Keuntungan dari integrasi database adalah dengan berbagi data antara aplikasi tidak lagi memerlukan lapisan tambahan layanan integrasi pada aplikasi. Setiap perubahan data yang dibuat dalam satu aplikasi yang dibuat tersedia untuk semua aplikasi. Pada saat database melakukan integrasi, database-database yang disekitarnya dapat saling berhubungan dengan mudah sesuai dengan keperluannya masing-masing.
Contoh dari database terintegrasi adalah terdapat sebuah sistem informasi mahasiswa akademik pada sebuah Universitas yang dimana sistem informasi tersebut hanya merupakan sistem yang berkaitan dengan penilaian saja dan pada sistem informasi tersebut terdapat data-data mahasiswa yang kompleks. Pada suatu saat terdapat bagian kemahasiswaan yang mengurus beasiswa membuat sistem informasi beasiswa secara terpisah, dan bagian kemahasiswaan tersebut memerlukan data-data dari mahasiswa. Sehingga dapat dilakukan integrasi database untuk mendapatkan data-data mahasiswa tersebut dan tidak perlu menuliskan atau membuatkan data-data mahasiswa lagi.
             

BAB 15 TRANSAKSI



15.1 Merancang Transaksi dengan ERD

Gambar 15.1 Potongan ERD si_desa



15.2 Query untuk Transaksi
Transaksi menggunakan query-query yang telah diajarkan sebelumnya. Pada transaksi Anda dapat menggunakan DML, fungsi agregat, set operations, subquery bersarang, join, view, triggers, dan sebagainya.


BAB 14 RANKING


Ranking adalah merupakan advanced aggregation function yang digunakan untuk memberikan indeks bagi nilai-nilai yang telah diurutkan. Misal diminta untuk ditampilkan ranking dari buku berdasarkan stok terbanyak. 

Gambar 14. 1 Contoh penggunaan ranking


BAB 13 RECURSIVE QUERIES

Recursive adalah proses pemanggilan dirinya sendiri (fungsi atau prosedur). Fungsi maupun prosedur yang memanggil dirinya disebut fungsi atau prosedur rekursif. Fungsi antuk suatu bagian program yang mengembalikan (menghasilkan) hanya satu nilai.

BAB 12 TRIGGERS


Trigger adalah code procedural yang secara otomatis tereksekusi sebagai respon terhadap event tertentu pada table atau view tertentu pada database.  Trigger biasanya digunakan untuk menjaga integrity dari informasi pada database. Misal pada desa akan terdata otomatis ketika penginputan dilakukan (pada kasus ini diasumsikan petugas yang menginputkan adalah Moeljoko dengan iddesa = 1).

Gambar 12.1 Contoh pembuatan trigger

 
Kita inputkan lagi data lainnya


BAB 11 FUNGSI DAN PROSEDUR



11.1 Fungsi

Fungsi (function) pada MySQL sama dengan bahasa pemrograman yang lain. Fungsi mengembalikan suatu nilai, yang berbeda dengan prosedur. Berikut contoh penggunaan fungsi.

Gambar 11. 1 Contoh penggunaan fungsi

11.2 Prosedur

Prosedur (procedure) mirip dengan fungsi, dimana yang membedakan adalah suatu prosedur tidak mengembalikan nilai. Berikut contoh dari prosedur.



BAB 10 ORDERING, GROUPING DAN HAVING



10.1 Ordering

Fungsi ordering digunakan untuk mengurtkan tampilan data berdasarkan atribut tertentu. Misal diminta untuk ditampilkan jeniskegiatan dan alamat kegiatan yang diurutkan berdasarkan jenis kegiatan.
 
Gambar 10. 1  Data kegiatan yang diurutkan berdasarkan jenis kegiatan
Secara default fungsi ordering mengurutkan data secara ascending, yaitu secara alfabetik dari A ke Z, atau secara angka dari yang terkecil ke terbesar. Pengurutan juga bisa dilakukan secara descending. Misalkan diminta untuk menampilkan data kegiatan dan alamat kegiatannya diurutkan berdasarkan jenis kegiatan.



 
Gambar 10. 2 Data kegiatan  yang diurutkan berdasarkan jeniskegiatan  secara descending

10.2 Grouping

Grouping artinya pengelompokkan, digunakan untuk mengelompokkan data berdasarkan atribut tertentu. Sebagai contoh Anda diminta untuk menampilkan banyaknya buku dan total stok dari buku untuk setiap penerbit. Query yang dapat digunakan adalah:

Gambar 10. 3 Menampilkan idkegiatan dengan menggunakan grouping
10.3 Having
Having digunakan untuk menggantikan WHERE dan biasanya digunakan ketika harus dipasangkan dengan fungsi agregat.

Gambar 10. 4 Menampilkan data pengarang dengan menggunakan having

BAB 9 VIEW



9.1       Definisi View

Tujuan dari pembuatan view adalah untuk kenyamanan (mempermudah penulisan query), untuk keamanan (menyembunyikan beberapa kolom yang bersifat rahasia), atau dalam beberapa kasus bisa digunakan untuk mempercepat proses menampilkan data (terutama jika kita akan menjalankan query tersebut secara berulang). 
Misal ingin dibuat dua buah tampilan. Tampilan pertama yaitu menampilkan daftar kegiatan tampilan satunya menampilkan daftar pemberitahuan. Untuk tampilan pertama querynya cukup mudah:

Gambar 9. 1 Data kegiatan
Sedangkan untuk menampilkan tampilan yang kedua, kita perlu melakuan subquery bersarang dengan memanfaatkan query pada tampilan pertama:
Gambar 9. 2 Data kegiatan
Query yang digunakan untuk menampilkan tampilan kedua adalah query yang cukup panjang. Jika diinginkan tampilan yang lain yang levelnya bahkan lebih tinggi daripada tampilan kedua tersebut, tentunya akan menjadi sangat rumit sekali.
Disinilah view dapat digunakan untuk membantu seorang programmer.

9.2       Membangun View

Disini akan dibagi menjadi dua sub bab lagi, yaitu view untuk data kegiatan dan pemberitahuan.

9.3       Menghapus View

Untuk menghapus view dapat menggunakan perintah DROP. Sebelum dihapus, view dapat dilihat pada list tabel:
Jika dilakukan penghapusan, maka daftar view pun akan hilang.

BAB 8 JOIN


 

8.1     Natural Join
Jika diperhatikan, penulisan query menggunakan SELECT untuk menampilkan data yang berrelasi menggunakan klausa WHERE memerlukan banyak energi. Query yang dituliskan panjang sehingga kemungkinan kesalahan dalam penulisan query pun semakin besar. Sebagai contoh perhatikan query berikut yang menggunakan klausa WHERE:
Gambar 8. 1 Menampilkan data desa dan kegiatan menggunakan klausa WHERE

Sekarang Anda dapat membuat tampilan yang sama dengan query yang lebih singkat, yaitu menggunakan NATURAL JOIN. Seperti yang ditunjukkan pada gambar berikut:
Gambar 8. 2 Menampilkan data kegiatan dan desa menggunakan NATURAL JOIN
Anda tidak perlu lagi menyamakan FK dengan PK nya, karena NATURAL JOIN memastikan atribut yang bernama sama pasti berhubungan. Sehingga Anda dapat menghemat waktu dan energi dengan menggunakan NATURAL JOIN. Walaupun demikian, ada paling tidak dua kondisi yang harus diperhatikan jika Anda memutuskan menggunakan NATURAL JOIN:
1.      Pastikan untuk atribut-atribut yang berhubungan/berrelasi memiliki nama yang sama.
2.      Pastikan untuk atribut-atribut yang tidak saling berhubungan/berrelasi tidak memiliki nama yang sama.
Untuk membuktikan kondisi tersebut, di sini akan diberikan tambahan tabel yaitu tabel petugas. Dimana tabel petugas berrelasi dengan tabel lainnya dalam hal pengelolaan sehingga database memiliki tabel yang mencatat history pengelolaan data. Lebih jelasnya digambarkan pada ERD berikut:
Gambar 8. 3 ERD yang menampilkan tabel histori pada database si_desa
Perhatikan pada tabel admin PK nya berubah menjadi idadmin (silakan diubah dengan menggunakan ALTER). Selain itu terdapat juga tambahan entitas yang lain, Berikut akan ditunjukkan pembuatan tabel ADMIN         

Gambar 8. 4 Pembuatan tabel admin
Sedangkan untuk tabel lainnya hanya akan dicontohkan pembuatan tabel kelola_pengarang saja. Silakan tabel lainnya juga dibuat dengan cara yang sama.
Gambar 8. 5 Pembuatan tabel penduduk
Kemudian isikan tabel admin dan tabel penduduk yang telah dibuat tadi dengan data sebagai berikut (tabel lainnya silakan diisi sendiri):
Perhatikan bahwa tabel admin dan tabel penduduk  memiliki atribut yang bernama sama, Akan tetapi jika kita gunakan natural join untuk menampilkan id desa dan id desa  pada tabel penduduk
Himpunan kosong dihasilkan dari natural join karena tidak memperhatikan kondisi dan syarat untuk natural join. Hal ini diakibatkan karena pada tabel admin memiliki atribut nama Untuk mengatasi permasalahan ini, dapat digunakan klausa where
Selain dengan klausa where, dapat juga digunakan left join, right join dan inner join untuk memecahkan permasalah di atas, yang dijabarkan pada sub bab beikutnya.

8.2     Left Join dan Right Join
Left Join akan menampilkan semua record dari tabel sebelah kiri, dan record dari tabel sebelah kanan yang cocok. Hasilnya akan NULL untuk bagian kanan jika tidak ada kecocokan. Misal diminta untuk ditampilkan tabel adminyang menampilkan juga no HP admin yang mencatat. Query yang tepat jika menggunakan left join adalah sebagai berikut:
Akan tetapi jika posisi kedua tabel yang berhubungan diubah, maka tampilan datanya pun akan memiliki arti yang lain.
Right join adalah join yang serupa dengan left join, hanya saja posisi tabel yang kanan akan ditampilkan semua record nya. Sedangkan tabel yang kiri hanya record yang bersesuaian saja.

8.3     Inner Join
Versi aman dari left join maupun right join adalah inner join. Inner join tidak mementingkan posisi tabel pada query dan fungsinya sama dengan klausa where.

BAB 7 SUBQUERY BERSARANG



7.1     SELECT

Berdasarkan kasus yang sudah ada, ada beberapa permasalahan yang mungkin saja agak rumit jika diselesaikan dengan query SQL dasar. Misal Anda diminta untuk menampilkan data pengarang, yang pada tahun 2017 bukunya diterbitkan oleh Erlangga dan pada tahun 2016 bukunya diterbitkan oleh Andi.
Untuk menyelesaikan ini Anda dapat menggunakan subquery bersarang:

Gambar 7. 1 Query bersarang untuk kasus SELECT
DISTINCT digunakan untuk jika dalam suatu tampilan data terdapat baris yang duplikat (lebih dari satu baris dengan isi yang sama), maka hanya ditampilkan satu baris data saja. 

7.2     INSERT

Jika Anda diminta untuk memasukkan data baru, dimana memiliki detail sebagai berikut:
Iddesa             : null
Namadesa        : Ranggang
Idkegiatan       : null
Idpemberitahuan : 11
Maka Anda dapat menggunakan query bersarang berikut untuk tabel desa:

Gambar 7. 2 Query bersarang untuk menginputkan data desa

Sementara untuk tabel kegiatan akan menjadi lebih rumit, karena kita tidak tahu informasi idkegiatan. Sedangkan PK dari desa mengharuskan format kode memuat iddesa dan idkegiatan. Hal tersebut bukan masalah, Anda dapat memasukkan kode dummy terlebih dahulu, yang kemudian Anda bisa update nantinya. Misal:
Gambar 7. 3 Query bersarang untuk menginputkan data kegiatan

Selanjutnya Anda tinggal menuliskan perintah UPDATE: 

7.3     UPDATE

Perhatikan tampilan data buku dan penerbit berikut:

 
Misalkan ada kesalahan pada data di atas. Id kegiatan Maka query bersarang yang bisa Anda gunakan adalah:

Gambar 7. 4 Query bersarang untuk kasus UPDATE

7.4     DELETE

Sama seperti kasus sebelumnya, jika diminta untuk menghapus data desa yang  kegiatan, maka query yang dapat digunakan adalah sebagai berikut:

Gambar 7. 5 Query bersarang untuk kasus DELETE
Jika data desa ada yang dihapus, lalu bagaimana dengan tabel kegiatam?
Karena sebelumnya membangun tabel desa menggunakan ON DELETE CASCADE, maka seharusnya data pada tabel tersebut akan otomatis ikut hilang. Mari kita buktikan, tampilkan data pada tabel desa menggunakan select * from desa;

BAB 6 MULTIPLE RELATIONS


Pada pertemuan sebelumnya, telah dibangun dan diisi tabel pendudk dan tabel penduduk_lama. Pada pertemuan kali ini, kedua tabel tersebut akan dihapus terlebih dahulu karena kedua tabel tersebut tidak dibangun atas dasar database relasional:

Kemudian kita akan rancang database relasional sederhana untuk kasus sistem informasi, seperti yang digambarkan pada ERD berikut:

Gambar 6. 1 sederhana untuk database perpustakaan

6.1     DDL untuk Multiple Relations
Perhatikan pada Gambar 6.1, entitas desa dan entitas penduduk memiliki atribut foreign key (FK) di dalamnya. Anda bisa membuat tabel  kegiatan dan pemberitahuan terlebih dahulu.

 
Gambar 6. 2 Pembangunan tabel kegiatan kasus multiple relations

 
Gambar 6. 3 Pembangunan tabel pemberitahuan kasus multiple relations

Selanjutnya dibangunlah tabel-tabel yang terdapat foreign key di dalamnya. Pertama akan dibangun tabel desa. Di dalam tabel tersebut terdapat foreign key idkegiatan yang mana referensinya adalah idkegiatan  pada tabel kegiatan. Berikut query yang digunakan:

Gambar 6. 4 Pembangunan tabel desa kasus multiple relation
CONSTRAINT berarti menambahkan batasan berupa Foreign Key yang pada Gambar 6.4 diberikan nama foreign key nya. Nama foreign key haruslah unique, sehingga jika ada pemakaian dua foreign key atau lebih, maka berikanlah nama yang berbeda. Setelah CONSTRAINT diberikan kemudian diikuti dengan FOREIGN KEY yang menunjukkan atribut mana pada tabel tersebut yang menjadi FK. REFERENCES adalah merujuk pada Primary Key atau atribut yang menjadi referensi dari FK yang dibuat, dengan format REFERENCES nama_tabel(nama_atribut_referensi). ON UPDATE CASCADE berarti jika nilai atribut referensi berubah (diupdate), maka perubahan tersebut terjadi pula pada semua atribut FK nya. ON DELETE CASCADE berarti jika data dengan nilai atribut referensi dihapus, maka demikian pula dengan data yang memiliki atribut FK nya. Selain CASCADE, dapat juga menggunakan RESTRICT dan SET NULL. Tentunya dengan kasus dan kepentingan yang berbeda.

6.2     DML untuk Multiple Relation
Untuk menginputkan data pada tabel yang memiliki atribut Foreign Key, harus dipastikan terlebih dahulu apakah pada tabel masternya sudah terisi atau belum. Dipastikan juga apakah nilai FK yang akan dimasukkan sudah ada pada tabel master atau belum. Misal, tabel kegiatan masih kosong. Sekarang kita akan mengisikan tabel desa dimana terdapat FK idkegiatan. Kita akan isikan idkegiatan dengan nilai 1:

Gambar 6. 5 Peringatan kesalahan diberikan karena batasan FK
Seperti terlihat pada gambar di atas, akan keluar pesan kesalahan akibat nilai idkegiatan yang dimasukkan pada tabel desa tidak ada pada tabel kegiatan (tabel master). 
Lain halnya jika Anda menginputkan nilai NULL untuk idkegiatan, walaupun pada tabel kegiatan belum memiliki data, tidak menjadi masalah.

Gambar 6. 6 Penginputan dengan FK bernilai NULL
Langkah yang tepat adalah dengan mengisikan terlebih dahulu tabel masternya. Di sini akan dinputkan data-data untuk tabel pemberitahuan:

Gambar 6. 7 Penginputan tabel pemberitahuan
Pada Gambar 6.7 nilai idpenerbit adalah NULL. Nilai tersebut dapat diubah dengan nilai referensi (Primary Key) pada tabel penerbit.
Gambar 6. 8 Mengupdate nilai FK pada tabel buku


Gambar 6. 9 Penginputan tabel desa


Gambar 6. 10 Penginputan tabel kegiatan
6.3     SELECT dengan Klausa Where
Jika melihat tampilan tabel desa dan tabel cukup tidak user friendly karena pengguna hanya mendapatkan informasi nomor ID untuk penerbit dan pengarang buku. Hal itu terjadi karena untuk menampilkan data pada tabel desa dan kegiatan menggunakan bahasa SQL standar. Agar dapat menampilkan id desa di setiap kegiatan, kita bisa menghubungkan antara idkegiatan pada tabel desa (sebagai FK) dengan idkegiatan pada tabel kegiatan (sebagai PK). Tapi sebelumnya harus ditentukan terlebih dahulu atribut apa saja yang ingin ditampilkan. Misalkan kita ingin menampilkan atribut iddesa, namadesa maka query yang dapat digunakan adalah sebagai berikut:

Gambar 6. 11 Menampilkan data id desa

FROM diikuti oleh dua tabel. Hal ini dikarenakan yang ingin ditampilkan kepada pengguna adalah atribut-atribut yang berasal dari dua tabel tersebut. Sementara WHERE diikuti dengan menyamakan atribut FK dan PK, yaitu iddesa pada tabel desa dan idkegiatan pada tabel kegiatan. Nama tabel disebutkan agar tidak terjadi ambiguitas dari sistem, karena kedua atribut yang disamakan nilainya memiliki nama yang sama.


TUGAS BESAR PPEMROGRAMAN VISUAL