Implementasi Pemrograman Visual
Implementasi Pemrograman Visual
T
YP
YAYASAN PRIMA AGUS TEKNIK
IMPLEMENTASI
PEMROGRAMAN
Visual VB.NET
Indra Ava Dianta, S.Kom., M.T
IMPLEMENTASI
PEMROGRAMAN
Visual VB.NET
PENERBIT :
YAYASAN PRIMA AGUS TEKNIK
JL. Majapahit No. 605 Semarang
Telp. (024) 6723456. Fax. 024-6710144
Email : [email protected]
IMPLEMENTASI PEMROGRAMAN Visual VB.NET
978-623-5734-99-6 (PDF)
, S.Ds., M.Kom.
Universitas STEKOM
Puji syukur penulis panjatkan kepada Allah SWT atas selesainya buku “Implementasi
Pemrograman Visual VB.NET” ini. Inti dari pemrograman adalah tentang menciptakan
algoritma yang efisien yang memecahkan masalah komputasi yang terdefinisi dengan baik.
Desain algoritma membutuhkan pemecahan masalah dan keterampilan matematika.
Seringkali solusi untuk suatu masalah adalah kombinasi dari metode terkenal dan wawasan
baru. Matematika berperan penting dalam pemrograman kompetitif. Sebenarnya, tidak ada
batasan yang jelas antara desain algoritma dan matematika. Buku ini telah ditulis sehingga
tidak banyak latar belakang matematika yang dibutuhkan. Lampiran buku mengulas
beberapa konsep matematika yang digunakan di seluruh buku, seperti himpunan, logika,
dan fungsi, dan lampiran dapat digunakan sebagai referensi saat membaca buku.
Penulis
DAFTAR ISI
2
Tentu saja, buku algoritme umum juga merupakan bacaan yang bagus untuk programmer yang
kompetitif. Yang paling komprehensif adalah Pengantar Algoritma yang ditulis oleh Cormen, Leiserson,
Rivest, dan Stein, juga disebut CLRS. Buku ini adalah sumber yang bagus jika Anda ingin memeriksa semua
detail tentang algoritma dan bagaimana membuktikan dengan sungguh-sungguh bahwa itu benar. Desain
Algoritma Kleinberg dan Tardos berfokus pada teknik desain algoritma, dan secara menyeluruh
membahas metode membagi dan menaklukkan, algoritma serakah, pemrograman dinamis, dan algoritma
aliran maksimum. Algorithm Design Manual dari Skiena adalah buku yang lebih praktis yang mencakup
katalog besar masalah komputasi dan menjelaskan cara menyelesaikannya. Algoritma Rekursi sering
memberikan cara yang elegan untuk mengimplementasikan suatu algoritma. Pada bagian ini, kita
membahas algoritma rekursif yang secara sistematis melalui kandidat solusi untuk suatu masalah.
Pertama, kita fokus pada pembangkitan himpunan bagian dan permutasi dan kemudian membahas teknik
backtracking yang lebih umum. Algoritma backtracking dimulai dengan solusi kosong dan memperluas
solusi langkah demi langkah. Pencarian secara rekursif melewati semua cara yang berbeda bagaimana
solusi dapat dibangun. Sebagai contoh, perhatikan masalah menghitung jumlah ratu yang dapat
ditempatkan pada papan catur nxn sehingga tidak ada dua ratu yang saling menyerang. Masalah dapat
diselesaikan dengan menggunakan backtracking dengan menempatkan ratu di papan baris demi baris.
Lebih tepatnya, tepat satu ratu akan ditempatkan di setiap baris sehingga tidak ada ratu yang menyerang
salah satu ratu yang ditempatkan sebelumnya. Sebuah solusi telah ditemukan ketika semua n ratu telah
ditempatkan di papan tulis.
Efisiensi algoritme memainkan peran sentral dalam pemrograman. Dalam bab ini, kita mempelajari
alat yang mempermudah merancang algoritme yang efisien. Bab ini akan memperkenalkan konsep
kompleksitas waktu, yang memungkinkan untuk memperkirakan waktu berjalan dari algoritma tanpa
menerapkannya. Kompleksitas waktu dari suatu algoritma menunjukkan seberapa cepat waktu
berjalannya meningkat ketika ukuran input bertambah. Bagianselanjutnya menyajikan dua contoh
masalah yang dapat diselesaikan dengan banyak cara. Dalam kedua masalah tersebut, kita dapat dengan
mudah merancang solusi brute force yang lambat, tetapi ternyata kita juga dapat membuat algoritme
yang jauh lebih efisien. Kompleksitas waktu dari perkiraan algoritma menunjukkan banyak waktu yang
akan digunakan oleh algoritma untuk input yang diberikan. Dengan menghitung kompleksitas waktu, kita
sering dapat mengetahui apakah algoritma tersebut cukup cepat untuk menyelesaikan suatu masalah—
tanpa mengimplementasikannya. Kompleksitas waktu dilambangkan dengan O (···) di mana tiga titik
mewakili beberapa fungsi. Biasanya, variabel n menunjukkan ukuran input. Misalnya, jika inputnya adalah
array angka, n akan menjadi ukuran array, dan jika inputnya adalah string, n akan menjadi panjang string.
Kompleksitas waktu dari perkiraan algoritma menunjukkan banyak waktu yang akan digunakan oleh
3
algoritma untuk input yang diberikan. Dengan menghitung kompleksitas waktu, kita sering dapat
mengetahui apakah algoritma tersebut cukup cepat untuk menyelesaikan suatu masalah—tanpa
mengimplementasikannya. Kompleksitas waktu dilambangkan dengan O (···) di mana tiga titik mewakili
beberapa fungsi. Biasanya, variabel n menunjukkan ukuran input. Misalnya, jika inputnya adalah array
angka, n akan menjadi ukuran array, dan jika inputnya adalah string, n akan menjadi panjang string.
Terkadang kompleksitas waktu tergantung pada beberapa faktor, dan rumus kompleksitas waktu
mengandung beberapa variabel. Misalnya, kompleksitas waktu dari kode berikut adalah O(nm).
Kompleksitas waktu dari fungsi rekursif tergantung pada berapa kali fungsi dipanggil dan kompleksitas
waktu dari satu panggilan. Kompleksitas waktu total adalah produk dari nilai-nilai ini. Sebagai contoh,
perhatikan fungsi berikut:
Pemanggilan f(n) menyebabkan n pemanggilan fungsi, dan kompleksitas waktu setiap pemanggilan
adalah O(1), sehingga total kompleksitas waktu adalah O(n). Daftar berikut berisi kompleksitas waktu
umum dari algoritma:
O (1) Waktu berjalan dari algoritma waktu-konstan tidak bergantung pada ukuran input.
Algoritma waktu-konstan yang khas adalah formula langsung yang menghitung jawabannya.
O (log n) Sebuah algoritma logaritmik sering membagi dua ukuran input pada setiap langkah.
Waktu berjalan dari algoritma tersebut adalah logaritma, karena log2 n sama dengan berapa
kali n harus dibagi 2 untuk mendapatkan 1. Perhatikan bahwa basis logaritma tidak
ditampilkan dalam kompleksitas waktu.
O(√n) Algoritma akar kuadrat lebih lambat dari O(log n) tetapi lebih cepat dari O(n) Sifat
khusus akar kuadrat adalah bahwa n =n/√n, s pada elemen dapat dibagi menjadi O(√n) blok
elemen O(√n).
4
O(n) Algoritme linier melewati input beberapa kali secara konstan. Ini seringkali merupakan
kompleksitas waktu terbaik, karena biasanya diperlukan untuk mengakses setiap elemen
input setidaknya sekali sebelum melaporkan jawabannya.
O(n log n) Kompleksitas waktu ini sering menunjukkan bahwa algoritma mengurutkan input,
karena kompleksitas waktu dari algoritma pengurutan yang efisien adalah O(n log n).
Kemungkinan lain adalah bahwa algoritma menggunakan struktur data di mana setiap
operasi membutuhkan waktu O(log n).
O(n2) Sebuah algoritma kuadrat sering berisi dua loop bersarang. Dimungkinkan untuk
melewati semua pasangan elemen input dalam waktu O(n2).
O(n3) Sebuah algoritma kubik sering berisi tiga loop bersarang. Dimungkinkan untuk
melewati semua triplet elemen input dalam waktu O(n3).
O(2n) Kompleksitas waktu ini sering menunjukkan bahwa algoritme iterasi melalui semua
himpunan bagian dari elemen input. Misalnya, himpunan bagian dari {1, 2, 3} adalah ∅, {1},
{2}, {3}, {1, 2}, {1, 3},{2, 3}, dan {1, 2, 3}.
O (n!) Kompleksitas waktu ini sering menunjukkan bahwa algoritme iterasi melalui semua
permutasi elemen input. Misalnya, permutasi {1, 2, 3} adalah (1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3,
1), (3, 1 , 2), dan (3, 2, 1).
Suatu algoritma disebut polinomial jika kompleksitas waktunya paling banyak O(nk) di mana k
adalah konstanta. Semua kompleksitas waktu di atas kecuali O(2n) dan O(n!) adalah polinomial. Dalam
praktiknya, konstanta biasanya kecil, dan oleh karena itu kompleksitas waktu polinomial secara kasar
berarti bahwa algoritma dapat memproses input yang besar . Kebanyakan algoritma dalam buku ini
adalah polinomial. Namun, ada banyak masalah penting yang algoritma polinomialnya tidak diketahui,
yaitu, tidak ada yang tahu bagaimana menyelesaikannya secara efisien. Masalah NP- hard adalah
kumpulan masalah penting, yang tidak diketahui algoritma polinomialnya.
5
BAB 2
PENGANTAR PEMROGRAMAN DATABASE
2.1 DATA WAREHOUSE
Data warehouse yaitu data yang dikumpulkan dan dirancang guna mendukung manajemen
dalam proses sebuah keputusan di eksekusi. Ini adalah kumpulan suatu data yang memiliki orientasi
pada subjek, terintegrasi tiap bagian, memiliki waktu yang bervariasi , tidak dapat didata, yang
digunakanuntuk mendukung proses pengambilan keputusan manajemen dan intelijen bisnis. Ini berisi
berbagai macam data yang menyajikan gambaran yang koheren tentang kondisi bisnis pada satu titik
waktu. Ini adalah jenis database unik yang berfokus pada intelijen bisnis, data eksternal, dan data
varian waktu. Pergudangan data adalah proses, di mana organisasi mengekstrak makna dan
pengambilan keputusan informasi dari aset informasi mereka melalui penggunaan Data warehouse.
Data Dictionay adalah sistem manajemen Database mini yang mengelola metadata. Ini adalah
gudang informasi tentang database yang mendokumentasikan elemen data dari database. Sistem
manajemen database pada bagian integral diartikan sebagai kamus data dan menyimpan metadata
atau informasi tentang database, nama atribut dan definisi untuk setiap tabel dalam database. Kamus
data biasanya merupakan bagian dari katalog sistem yang dihasilkan untuk setiap database. Sistem
kamus data yang berguna biasanya menyimpan dan mengelola jenis informasi berikut:
Deskripsi skema database.
Informasi rinci tentang desain database fisik, seperti struktur penyimpanan, jalurakses
dan ukuran file dan catatan.
Deskripsi tingkat tinggi dari transaksi & aplikasi database dan hubungan penggunadengan
terjemahan.
Hubungan antara transaksi database dan item data yang direferensikan oleh mereka. Ini
berguna dalam menentukan transaksi mana yang terpengaruh ketika definisi data tertentu
diubah.
Catatan
Catatan adalah kumpulan bidang atau item data yang terkait secara logis, dengan setiap bidang
memproses sejumlah byte dan memiliki tipe data tetap. Sebuah record terdiri dari nilai-nilai untuk
6
setiap field. Pengelompokan item data dapat dicapai melalui cara yang berbeda untuk membentuk
catatan yang berbeda untuk tujuan yang berbeda. Catatan ini diambil atau diperbarui menggunakan
program.
2.3 FILE
File merupakan kumpulan dari urutan record yang saling terhubung. Dalam banyak kasus,
semua record dalam sebuah file memiliki tipe record yang sama (setiap record memiliki format yang
sama). Jika setiap record dalam file memiliki ukuran yang sama persis dalam byte, file tersebut
dikatakan terdiri dari record dengan panjang tetap. Jika record yang berbeda dalam file memiliki
ukuran yang berbeda, file tersebut dikatakan dibuat dari recorddengan panjang variabel.
2.4 DATABASE
Database diartikan data yang dikumpulkan mempunyai keterkaitan secara logis kemudian data
tersebut di simpan secara bersama dan di rancang sebagai pemenuhan kebutuhan suatu organisasi
maupun suatu informasi. Database lebih lanjut dapat dijabarkan di bawah ini:
Adalah data yang dikumpulkan dan memiliki keterkaitan data kemudian di simpan secara
bersama dengan menghilangkan data yang kembar/redudanci yang dianggap berbahaya.
Database melayani banyak aplikasi di mana setiap pengguna memiliki pandangannya
sendiri tentang data. Data ini dilindungi dari akses yang tidak sah oleh mekanisme keamanan
dan akses bersamaan ke data disediakan dengan mekanisme pemulihan.
menyimpan data independen dari program dan perubahan dalam struktur penyimpanan
data atau strategi akses tidak memerlukan perubahan dalam mengakses program atau
kueri.
Sebuah database terdiri dari empat komponen berikut seperti yang ditunjukkan pada gambar.
Data item
Hubungan
Kendala
Skema
7
Gambar 2.1 Database Fisik
Sistem Manajemen Database merupakan data yang dikumpulkan dan mempunyai keterkaitan
yang digunakan untuk masuk/mengakses data yang diinginkan.
Aplikasi pada Sistem Databased
Perbankan
Maskapai penerbangan
Universitas
Kereta Api
Keuangan
Penjualan
Telekomunikasi
Sistem penggajian
Manufaktur
Sebuah DBMS melakukan beberapa fungsi penting yang menjamin integritas dan konsistensi data
dalam database.
1. Data Storage Management/Manajemen Penyimpanan Data: DBMS menciptakan struktur
kompleks yang diperlukan untuk penyimpanan data dalam database fisik. Ini menyediakan
mekanisme untuk pengelolaan penyimpanan permanen data.
8
2. Manajemen Transaksi: Transaksi adalah serangkaian operasi Database, yang dilakukan oleh
program aplikasi, yang mengakses atau mengubah isi Database. Oleh karena itu, DBMS
harus menyediakan mekanisme untuk memastikan bahwa semua pembaruan yang terkait
dengan transaksi tertentu dilakukan atau tidak ada satu punyang dibuat.
3. Layanan Integritas: database yang memiliki tingkat integritas tinggi mengacu pada
fakta/kevalidan/kebenaran dan konsistensi suatu data yang disimpan dan sangat penting
dalam sistem database berorientasi transaksi. Oleh karena itu, DBMS harus menyediakan
untuk memastikan bahwa baik data dalamdatabase dan perubahan data mengikuti aturan
tertentu. Ini meminimalkan redundansi data dan memaksimalkan konsistensi data.
Hubungan data yang disimpan dalam kamus data digunakan untuk menegakkan integritas
data. Berbagai jenis mekanisme dan batasan integritas dapat didukung untuk membantu
memastikan bahwa nilai data dalam database valid, bahwa operasi yang dilakukan pada
nilai tersebut valid dan database tetap dalam keadaan konsisten.
4. Manajemen Pencadangan dan Pemulihan: DBMS menyediakan mekanisme untuk berbagai
jenis kegagalan. Ini mencegah hilangnya data. Mekanisme pemulihan DBMS, memastikan
bahwa database dikembalikan ke keadaan yang konsisten setelah transaksi gagal atau
dibatalkan karena sistem crash, kegagalan media, kesalahan perangkat keras atau perangkat
lunak, kegagalan daya, dan sebagainya.
5. Concurrency Control Services: Karena DBMS mendukung berbagi data di antara banyak
pengguna, mereka harus menyediakan mekanisme untuk mengelola akses bersamaan ke
database. DBMS memastikan bahwa database disimpan dalam keadaan yang konsisten dan
integritas data dipertahankan. Ini memastikan bahwa database diperbarui dengan benar
ketika banyak pengguna memperbarui database secara bersamaan.
6. Data Manipulation Management/Manajemen Manipulasi Data: DBMS melengkapi
pengguna dengan kemampuan untuk mengambil, memperbarui dan menghapus data yang
ada dalam database atau untuk menambahkan data baru ke database. Ini termasuk
komponen prosesor DML untuk menangani bahasa manipulasi data (DML).
7. Data Dictionary/Manajemen Katalog Sistem: DBMS mempunyai kamus yang didalamnya
terdapat data atau fungsi katalog sistem di mana deskripsi item data disimpan dan dapat
diakses oleh pengguna. Katalog sistem atau kamus data adalah Database sistem, yang
merupakan tempat penyimpanan informasi yang menjelaskan data dalam Database. Ini
adalah data tentang data atau metadata. Misalnya, DBMS akan berkonsultasi dengan
katalog sistem untuk memverifikasi bahwa tabel yang diminta ada dan pengguna yang
9
mengeluarkan permintaan memiliki hak akses yang diperlukan.
8. Otorisasi/Manajemen Keamanan : DBMS melindungi database terhadap akses yang tidak
sah, baik disengaja atau tidak disengaja. Ini melengkapi mekanisme untuk memastikan
bahwa hanya pengguna yang berwenang yang dapat mengakses database. Ini menciptakan
sistem keamanan yang memberlakukan keamanan pengguna dan privasi data dalam
database. Aturan keamanan menentukan pengguna mana yang dapat mengakses database,
item data mana yang dapat diakses setiap pengguna, dan operasi data mana (menambah,
menghapus, dan memodifikasi)yang dapat dilakukan pengguna.
9. Utility Services/Layanan Utilitas: DBMS menyediakan satu set layanan utilitas yang
digunakan oleh DBA dan perancang Database untuk membuat, mengimplementasikan,
memantau, dan memelihara Database. Layanan utilitas ini membantu DBA untuk mengelola
database secara efektif.
10. Akses Database dan Antarmuka Pemrograman Aplikasi: Semua DBMS menyediakan
antarmuka untuk memungkinkan aplikasi menggunakan layanan DBMS. Mereka
menyediakan akses data melalui bahasa kueri terstruktur (SQL). Bahasa query DBMS berisi
dua komponen:
a. Bahasa definisi data/data definition language (DDL)
b. Bahasa manipulasi data/data manipulation language (DML)
mendefinisikan struktur di mana data disimpan dan DML memungkinkan pengguna akhir untuk
mengekstrak data dari database. DBMS juga menyediakan akses data ke pemrogram aplikasi melalui
bahasa prosedural seperti C, C++, Java dan lain-lain.
11. Data Independence Services/Layanan Independensi Data: DBMS harus mendukung
independensi program dari struktur database yang sebenarnya.
12. Data Definition Services/Layanan Definisi Data: DBMS menerima definisi data seperti
skema eksternal, skema konseptual, skema internal, dan semua pemetaan terkait dalam
bentuk sumber. Ini mengubahnya ke bentuk objek yang sesuai menggunakan komponen
prosesor DDL untuk masing-masing dari berbagai bahasa definisi data (DDL).
Database versus Sistem File
File adalah urutan record.
Semua record dalam sebuah file memiliki tipe record yang sama.
Sistem pemrosesan file didukung oleh sistem operasi konvensional. Sistem menyimpan
10
catatan permanen dalam berbagai file, dan memerlukan program aplikasi yang berbeda
untuk mengekstrak catatan dari file yang sesuai dan menambahkan catatan ke file yang
sesuai.
Kelebihan dari Sistem Pemrosesan File
Meskipun sistem pemrosesan file sekarang sebagian besar sudah usang, berikut adalah keuntungan
dari sistem pemrosesan file.
Ini memberikan perspektif sejarah yang berguna tentang cara menangani data.
12. Kesulitan dalam mengakses data: Lingkungan pemrosesan file konvensional tidak
memungkinkan data yang dibutuhkan diambil dengan cara yang nyaman dan efisienseperti
DBMS. Sistem pengambilan data yang lebih baik harus dikembangkan untuk penggunaan
umum.
12
13. Anomali akses serentak : Untuk meningkatkan kinerja sistem secara keseluruhan dan
memperoleh waktu respons yang lebih cepat, banyak sistem memungkinkan banyak
pengguna untuk memperbarui data secara bersamaan. Dalam lingkungan seperti itu,
interaksi pembaruan bersamaan dapat menghasilkan data yang tidak konsisten.
Kelebihan DBMS
1. Mengontrol redundansi data: Redundansi data, menyimpan data yang sama beberapa kali
menyebabkan beberapa masalah. Pertama, ruang penyimpanan terbuang ketika data yang
sama disimpan berulang kali. Kedua, file yang mewakili data yang sama mungkin menjadi
tidak konsisten. Ini mungkin terjadi karena pembaruan diterapkan ke beberapa file tetapi
tidak untuk yang lain. Sebagian besar DBMS menyediakan fasilitas untuk mengontrol
redundansi data menggunakan konsep normalisasi dan kunci.
2. Membatasi akses yang tidak sah: Ketika beberapa pengguna mengakses database, oleh
karena itu beberapa pengguna tidak akan diizinkan untuk mengakses (!. Semua informasi
dalam database. DBMS harus menyediakan subsistem keamanan dan otorisasi, yang
ditentukan oleh Data Base Administor (DBA). DBMS kemudian harus memberlakukan
pembatasan ini secara otomatis.Misalnya, data Perbankan sering dianggap rahasia, dan
karenanya hanya orang yang berwenang yang diizinkan untukmengakses data tersebut.
3. Menyediakan backup dan Recovery : Sebuah DBMS harus menyediakan fasilitas untuk
recovery dari hardware atau software. Subsistem pencadangan dan pemulihan DBMS
bertanggung jawab atas pemulihan. Misalnya, jika sistem komputer gagal di tengah
program pembaruan yang kompleks, subsistem pemulihan bertanggung jawab dan
memastikan bahwa database dipulihkan ke keadaan sebelum program mulai dijalankan.
Alternatifnya, subsistem pemulihan memastikan bahwa program dilanjutkan dari titik di
mana ia terganggu sehingga efek penuhnya dicatat dalam database.
4. Menyediakan Beberapa Antarmuka :Pengguna Karena banyak jenis pengguna dengan
berbagai tingkat pengetahuan teknis menggunakan database, DBMS harus menyediakan
berbagai antarmuka pengguna. Ini termasuk bahasa kueri untuk pengguna biasa.
Antarmuka bahasa pemrograman untuk pemrogram aplikasi, formulir dan kode perintah
untuk pengguna parameter dan antarmuka pengguna grafis untuk pengguna yang berdiri
sendiri.
5. Inforcing Integritas kendala : Integritas data berarti bahwa data yang terkandung dalam
database akurat dan konsisten. Integritas berarti batasan, yaitu aturan konsistensi yang
tidak boleh dilanggar oleh sistem Database. Sebagian besar aplikasi database memiliki
13
batasan integritas tertentu yang harus dimiliki untuk data. SebuahDBMS harus menyediakan
kemampuan untuk mendefinisikan dan menegakkan kendala ini. Jenis batasan integritas
paling sederhana yang menentukan tipe data untuk setiap item data.
6. Akses data yang efisien: DBMS menggunakan berbagai teknik canggih untuk menyimpan
dan mengambil data secara efisien. Fitur ini sangat penting jika data disimpan di perangkat
penyimpanan eksternal.
7. Peningkatan berbagi data: Karena, sistem Database adalah penyimpanan data terpusat
milik seluruh organisasi, sistem Database dapat dibagikan oleh semua pengguna yang
berwenang. Program aplikasi yang ada dapat berbagi data dalam database. Selanjutnya,
program aplikasi baru dapat dikembangkan pada data yang ada di database untuk berbagi
data yang sama dan hanya menambahkan data yang saat ini tidak disimpan. Oleh karena
itu, lebih banyak pengguna dan aplikasi dapat berbagi lebih banyak data.
8. Peningkatan keamanan: Keamanan Database adalah perlindungan Database dari
pengguna yang tidak berwenang. Database administrator (DBA) memastikan bahwa
prosedur akses yang tepat diikuti, termasuk skema otentikasi yang tepat untuk akses ke
DBMS dan pemeriksaan tambahan sebelum mengizinkan akses ke data sensitif. DBA dapat
menentukan nama pengguna dan kata sandi untuk mengidentifikasi orang yang berwenang
menggunakan database.
9. Konsistensi data yang ditingkatkan: Jika redundansi dihapus atau dikendalikan,
kemungkinan data yang tidak konsisten juga dihapus dan dikendalikan. Dalam sistem
database, inkonsistensi seperti itu dihindari sampai batas tertentu dengan membuat mereka
tahu ke DBMS. DBMS memastikan bahwa setiap perubahan yang dibuat ke salah satu dari
dua entri dalam database secara otomatis diterapkan ke yang lain juga. Proses ini dikenal
sebagai menyebarkan pembaruan.
10. Kemandirian data program: Dalam lingkungan Database, memungkinkan perubahan pada
satu tingkat Database tanpa mempengaruhi tingkat lainnya. Perubahan ini diserap oleh
pemetaan antar level dengan pendekatan database, metedata disimpandi lokasi sentral yang
disebut repository. Properti sistem data ini memungkinkan data organisasi berubah tanpa
mengubah program aplikasi yang memproses data.
11. Peningkatan kualitas data: Sistem database menyediakan sejumlah alat dan proses untuk
meningkatkan kualitas data.
14
12. Menyediakan penyimpanan persisten untuk objek program dan struktur data: Database
dapat digunakan untuk menyediakan penyimpanan persisten untuk objek program dan
struktur data. Ini adalah salah satu alasan utama untuk sistem database berorientasi objek.
Penyimpanan persisten dari objek program dan struktur data merupakan fungsi penting
dari sistem database.
13. Mewakili hubungan yang kompleks antara data: Sebuah database dapat mencakup
berbagai jenis data yang saling terkait dalam banyak cara. Sebuah DBMS harus memiliki
kemampuan untuk mewakili berbagai hubungan yang kompleks antara data serta untuk
mengambil dan memperbarui data dengan mudah dan efisien.
14. Mengizinkan inferensi dan tindakan menggunakan aturan: Beberapa sistem database
menyediakan kemampuan untuk mendefinisikan aturan duduksi untuk menyimpulkan
informasi baru dari fakta database yang disimpan. Sistem seperti ini disebut sistem
Database deduktif. Fungsionalitas yang lebih kuat disediakan oleh sistem database aktif,
yang menyediakan aturan aktif yang dapat secara otomatis memulai tindakan ketika
peristiwa dan kondisi tertentu terjadi.
15. Ketersediaan informasi terkini untuk semua pengguna: DBMS membuat database tersedia
untuk semua pengguna. Segera setelah pembaruan satu pengguna diterapkan ke database,
semua pengguna lain dapat segera melihat pembaruan ini. Ketersediaan informasi terkini
ini sangat penting untuk banyak aplikasi pemrosesan transaksi, seperti sistem reservasi,
database perbankan, dan dimungkinkan oleh subsistem kontrol konkurensi dan pemulihan
DBMS.
16. Fleksibilitas: Mungkin perlu untuk mengubah struktur database sebagai perubahan
persyaratan. DBMS modern memungkinkan jenis perubahan evolusioner tertentu pada
struktur database tanpa mempengaruhi data yang disimpan dan programaplikasi yang ada.
17. Peningkatan konkurensi: DBMS mengelola akses database konkuren dan mencegah
masalah hilangnya informasi atau hilangnya integritas.
18. Keseimbangan persyaratan yang saling bertentangan : DBA menyelesaikan persyaratan
yang saling bertentangan dari berbagai pengguna dan aplikasi. DBA dapat menyusun sistem
untuk menyediakan layanan keseluruhan yang terbaik bagi organisasi. DBA dapat memilih
struktur file dan metode akses terbaik untuk mendapatkan kinerja optimal untuk operasi
respons-kritis, sementara mengizinkan aplikasi yang kurang penting untuk terus
menggunakan database.
15
Kekurangan DBMS
4. Kebutuhan tenaga kerja baru dan khusus : Karena perubahan yang cepat dalam teknologi
database dan kebutuhan bisnis organisasi, kebutuhan organisasi untuk mempekerjakan,
melatih kembali tenaganya secara teratur untuk merancang dan mengimplementasikan
database, menyediakan layanan administrasi database dan mengelola staf orang baru. Oleh
karena itu, organisasi perlu mempertahankan tenaga terampil khusus.
5. Peningkatan kompleksitas: DBMS multi-pengguna menjadi perangkat lunak yang sangat
kompleks karena fungsionalitas yang diharapkan darinya. Menjadi penting bagi perancang
Database, pengembang, administrator Database, dan pengguna akhir untuk memahami
fungsionalitas ini secara maksimal.
6. Masalah yang terkait dengan sentralisasi: Sentralisasi berarti bahwa data dapat diakses
dari satu sumber yang disebut database.
7. Ukuran DBMS yang besar: Kompleksitas yang besar dan fungsionalitas yang luas membuat
DBMS menjadi perangkat lunak yang sangat besar. Ini menempati banyak gigabyte ruang
disk penyimpanan dan membutuhkan sejumlah besar memori utama untuk berjalan secara
efisien.
16
2.6 ABSTRAKSI DATA
1. Level Fisik: Level fisik dari abstraksi data menggambarkan bagaimana datasebenarnya
disimpan.
2. Level Logis : Level logis dari abstraksi data menggambarkan data "apa" yang disimpandalam
database dan hubungan apa yang ada di antara data tersebut.
Jadi tingkat logis menggambarkan seluruh database.
Administrator Database, yang harus memutuskan informasi apa yang akan disimpandalam Database,
menggunakan tingkat abstraksi logis.
3. Level tampilan: Level tampilan abstraksi data hanya menjelaskan sebagian darikeseluruhan
database. Tingkat tampilan abstraksi menyederhanakan interaksi mereka dengan sistem.
Sistem dapat menyediakan banyak tampilan untuk databaseyang sama.
View of Data: Sebuah sistem database adalah kumpulan file terintegrasi dan satu set program yang
memungkinkan pengguna untuk mengakses dan memodifikasi file-file ini.
Instances: Kumpulan informasi yang disimpan dalam database pada saat tertentu disebut
instance dari database.
Skema: Desain keseluruhan database disebut skema database. Artinya, deskripsi database disebut
skema database yang ditentukan selama desain database dan diharapkan tidak sering berubah.
Skema database dapat dipartisi sesuai dengan tingkatabstraksi.
a. Skema Fisik atau Internal: Skema fisik, menjelaskan struktur penyimpanan fisik database.
Tingkat internal berkaitan dengan kegiatan berikut:
1. Alokasi ruang penyimpanan untuk data dan penyimpanan.
17
2. Rekam deskripsi untuk penyimpanan dengan ukuran yang disimpan untuk itemdata.
3. Penempatan Rekam.
Skema ini menggunakan model data fisik dan menjelaskan detail lengkappenyimpanan data dan
jalur akses untuk database.
b. Skema konseptual atau logis: Skema logis menggambarkan struktur seluruh database
untuk komunitas pengguna. Skema konseptual menggambarkan entitas, tipe data,
hubungan, operasi pengguna, dan batasan serta menyembunyikan detail struktur
penyimpanan fisik.
18
Gambar 2.4 Skema Database
4. Informasi keamanan
Kemampuan untuk mengubah skema pada satu tingkat sistem Database tanpa
harus mengubah skema pada tingkat berikutnya yang lebih tinggi disebut
"Independensi Data". Ada dua jenis independensi data:
1. Independensi Data Fisik: Independensi data fisik adalah kemampuan
untuk mengubah skema internal tanpa harus mengubah skema
konseptual. Contoh : Dengan membuat struktur akses tambahan untuk
19
meningkatkan kinerja pengambilan atau pembaruan.
2. Logical Data Independence : Logical Data Independence adalah
kemampuan untuk mengubah skema konseptual tanpa harus mengubah
program aplikasi (skema eksternal). Contoh : Kita dapat mengubah skema
konseptual untuk memperluas database dengan menambahkan tipe
record atau item data. ATAU untuk mengurangi database dengan
menghapus item data.
Model Entity-Relationship (E-R)
Model data E-R didasarkan pada persepsi dunia nyata yang terdiri dari kumpulan
objek dasar yang disebut entitas dan hubungan di antara objek-objek tersebut.
Keseluruhan struktur logika database dapat direpresentasikan secara grafis dengan
diagram ER. DiagramE-R dibangun dari komponen-komponen berikut.
1. Rectangle: yang mewakili himpunan entitas
20
Kelebihan
Kekurangan
1. Tidak ada standar industri untuk notasi: Tidak ada notasi standar
industri untukmengembangkan diagram ER.
2. Populer untuk desain tingkat tinggi: Model data ER adalah desain
database tingkattinggi.
Model Relasional
Model relasional menggunakan kumpulan tabel untuk mewakili data dan hubungan di
antara data tersebut. Tabel adalah kumpulan baris dan kolom. Setiap kolom memiliki
nama yang unik. Setiap baris dalam tabel mewakili kumpulan nilai data terkait. Dalam
model relasional, baris disebut tuple, header kolom disebut atribut dan tabel disebut
relasi.
Kelebihan Model Relasional
1. Kesederhanaan: Model data relasional bahkan lebih sederhana dari model
hierarkis dan jaringan. Ini membebaskan desainer dari detail penyimpanan
data fisik yang sebenarnya, sehingga memungkinkan mereka untuk
berkonsentrasi pada tampilan logis dari database.
2. Independensi struktural : Model data relasional tidak bergantung pada sistem
akses data navigasi. Perubahan struktur database tidak mempengaruhi akses
data.
3. Kemudahan desain, implementasi, pemeliharaan, dan penggunaan.
4. Kemampuan kueri yang fleksibel dan kuat.
21
Kekurangan
1. Overhead perangkat keras: Model data relasional membutuhkan perangkat
keras komputasi dan perangkat penyimpanan data yang lebih kuat untuk
melakukan tugas yang ditetapkan RDBMS.
2. Mudah untuk merancang kemampuan yang mengarah ke desain yang buruk.
Model Data Berorientasi Objek
Model data berorientasi objek IS didasarkan pada paradigma bahasa
pemrograman berorientasi objek. Paradigma berorientasi objek didasarkan pada
Enkapsulasi data dan kode yang terkait dengan suatu objek menjadi satu
kesatuan, pewarisan dan identitas objek.
Contoh:
Kelas karyawan
{
nama string; alamat string; int gaji;
int gaji tahunan ( );
};
Kekurangan
1. Tidak ada definisi yang tepat: Sulit untuk memberikan definisi yang tepat
tentang apa yang terdapat pada DBMS berorientasi objek.
22
2. Sulit untuk dipertahankan : Definisi objek perlu diubah secara berkala dan
migrasi database yang ada agar sesuai dengan definisi objek baru dengan
perubahan kebutuhan informasi organisasi.
3. Tidak cocok untuk semua aplikasi: Model data berorientasi objek digunakan jika
ada kebutuhan untuk mengelola hubungan kompleks di antara objek data.
4. Overhead perangkat keras: Model data relasional membutuhkan perangkat
keras komputasi dan penyimpanan data yang lebih kuat.
Model Hirarki
Model hierarki menyediakan dua konsep penataan data utama.
• Catatan
• Hubungan orang tua-anak.
Catatan : Catatan adalah kumpulan nilai bidang yang memberikan informasi
tentang entitas atau instance hubungan. Relasi Parent-child : Tipe relasi parent-
child adalah relasi 1 : N antara dua tipe record.
• Tipe record pada sisi 1 disebut tipe parent reecprd dan tipe record pada sisi N
disebut tipe record anak tipe PCR
• Instance tipe PCR terdiri dari satu record dari tipe record induk dan sejumlah
record (nol atau lebih) dari tipe record anak.
23
3. Keamanan data: Ini adalah model database pertama yang menawarkan
keamanan data yang disediakan dan diterapkan oleh DBMS.
4. Integritas data: Dalam hubungan induk/anak, selalu ada tautan antara segmen
induk dan segmen turunannya di bawahnya.
5. Efficiency: Model ini sangat efisien ketika database berisi volume data yang
besar dalam hubungan one-lo-many (1:m) dan ketika pengguna
membutuhkan sejumlah besar transaksi.
Independensi data: DBMS menciptakan lingkungan di mana independensi data dapat
dipertahankan.
Kekurangan
1. Kompleksitas implementasi: Meskipun Database hierarkis secara konseptual
sederhana, mudah dirancang dan tidak ada masalah ketergantungan data,
namun cukup rumit untuk diterapkan.
2. Batasan implementasi : Banyak dari hubungan umum tidak mengkonfirmasi
format hubungan satu-ke-banyak yang diperlukan oleh model Database
hierarkis.
3. Tidak fleksibel: Database hierarkis tidak memiliki fleksibilitas. Perubahan
dalam relasi atau segmen baru sering kali menghasilkan tugas manajemen
sistem yang sangat kompleks.
4. Kurangnya independensi struktural.
5. Kompleksitas pemrograman aplikasi.
24
Gambar 2.6 Model Data Jaringan
25
• Penggunaan pointer mengarah ke struktur yang kompleks, yang membuat
pemetaan data terkait menjadi sangat sulit.
26
terpusat dapat mendukung banyak pengguna, tetapi DBMS dan database itu sendiri
berada sepenuhnya di satu situs komputer.
Sistem Database Terdistribusi ini dikelola oleh berbagai perangkat lunak DBMS yang
berbeda yang berjalan pada berbagai mesin komputasi yang berbeda yang didukung
oleh berbagai sistem operasi yang berbeda. Mesin-mesin ini didistribusikan secara
geografis dan dihubungkan bersama oleh berbagai jaringan komunikasi. Dalam sistem
27
database terdistribusi, satu aplikasi dapat beroperasi pada data yang didistribusikan
secara geografis pada mesin yang berbeda. Jadi, dalam sistem Database terdistribusi,
data mungkin didistribusikan pada komputer yang berbeda sedemikian rupa sehingga
data untuk satu bagian disimpan di satu komputer dan data untuk bagian lain disimpan
di komputer lain. Setiap mesin dapat memiliki data dan aplikasinya sendiri. Namun,
pengguna di satu komputer dapat mengakses data yang disimpan di serveral komputer
lain. Oleh karena itu, setiap mesin akan bertindak sebagai server untuk beberapa
pengguna dan klien untuk yang lain. Detil lebih lanjut tentang sistem database
terdistribusi diberikan di Unit-So.
28
Sistem Database Paralel
Arsitektur sistem database paralel terdiri dari beberapa CPU dan disk penyimpanan
data secara paralel. Oleh karena itu, mereka meningkatkan kecepatan pemrosesan dan
input/output. Sistem Database paralel digunakan dalam aplikasi yang harus menanyakan
Database yang sangat besar atau yang harus memproses transaksi dalam jumlah yang
sangat besar per detik.
Beberapa arsitektur yang berbeda dapat digunakan untuk sistem database paralel,
yaitu sebagai berikut:
• Memori Bersama : Semua prosesor berbagi memori yang sama.
• Disk penyimpanan data bersama : Semua prosesor berbagi satu set disk yang
sama. Sistem disk bersama kadang-kadang disebut cluster.
• Sumber Daya Independen : Prosesor tidak berbagi memori atau disk umum.
• Hirarki : Model ini adalah hibrida dari tiga arsitektur sebelumnya.
Gambar menggambarkan arsitektur yang berbeda dari sistem database paralel. Dalam
disk penyimpanan data bersama, semua prosesor berbagi disk (atau kumpulan disk)
yang sama, seperti yang ditunjukkan pada Gambar. (a). Dalam arsitektur memori
bersama, semua prosesor berbagi memori yang sama, seperti yang ditunjukkan pada
Gambar. (b). Dalam arsitektur sumber daya independen, prosesor tidak berbagi memori
umum maupun disk umum. Mereka memiliki sumber daya independen mereka sendiri
seperti yang ditunjukkan pada Gambar. (c). Arsitektur hierarkis adalah hibrida dari ketiga
arsitektur sebelumnya, seperti yang ditunjukkan pada Gambar. (d)
29
Gambar 2.10 Database Paralel Independen
30
• Teknik ini digunakan untuk mempercepat proses transaksi pada sistem data-
server.
• Dalam sistem database paralel, throughput (yaitu, jumlah tugas yang dapat
diselesaikan dalam interval waktu tertentu) dan waktu respons (yaitu, jumlah
waktu yang diperlukan untuk menyelesaikan satu tugas dari waktu diajukan)
sangat tinggi.
Kekurangan Sistem Database Paralel
• Dalam sistem database paralel, ada biaya startup yang terkait dengan memulai
satu proses dan waktu startup dapat menutupi waktu pemrosesan yang
sebenarnya, mempengaruhi percepatan secara merugikan.
• Karena proses yang dijalankan dalam sistem paralel sering mengakses sumber
daya bersama, perlambatan dapat terjadi akibat interferensi dari setiap proses
baru karena proses tersebut bersaing dengan proses yang ada untuk sumber
daya yang dimiliki bersama, seperti disk penyimpanan data bersama, bus sistem,
dan sebagainya.
31
Gambar 2.12 Model Database Client Server
32
2.10 PEMAHAMAN BAHASA DATABASE
Bahasa definisi data digunakan untuk menentukan skema database. misalnya,
Contoh DOL adalah membuat, mengubah, dan menjatuhkan tabel. Seperti Buat tabel
siswa :
(Nomor guling (10), Nama char (15), Jenis kelamin char (2), Alamat varchar (15));
Eksekusi pernyataan DOL di atas membuat tabel siswa. Ini memperbarui satu set tabel
khusus yang disebut 'Kamus Data'. Kamus data berisi meta data artinya data tentang
data. Skema (desain) sebuah tabel adalah contoh dari meta data.
Contoh :
• CREATE : Untuk membuat objek dalam database.
• ALTER: Mengubah struktur database.
• DROP: Menghapus objek dari data.
• TRUNCATE: Hapus semua catatan dari tabel, termasuk semua ruang yang
dialokasikan untuk catatan dihapus
• COMMENT: Menambahkan komentar ke kamus data.
33
data apa yang dibutuhkan tanpa menentukan cara mendapatkan data tersebut.
misalnya, SQL
Contoh: Contoh DML (NDML)
• Pilih Gulungan, Nama, Alamat dari Siswa Dimana Gulungan = 3;
• Pilih * dari siswa: Misalnya,
• INSERT: Menyisipkan data ke dalam tabel
• UPDATE: Memperbarui data yang ada dalam tabel
• DELETE: Menghapus semua record dari tabel, ruang untuk record tetap ada.
• LOCK TABLE: Kontrol konkurensi.
Antarmuka yang mudah digunakan yang disediakan oleh DBMS dapat mencakup hal- hal
berikut:
• Antarmuka Berbasis Menu untuk Penjelajahan: Mereka sering digunakan
dalam antarmuka penjelajahan, yang memungkinkan pengguna untuk
melihat isi database dengan cara yang eksploratif dan tidak terstruktur.
34
• Antarmuka Berbasis Formulir: Antarmuka berbasis formulir menampilkan
formulir untuk setiap pengguna.
• Antarmuka Pengguna Grafis: Antarmuka grafis menampilkan skema kepada
pengguna dalam bentuk diagram.
• Antarmuka Bahasa Alami: Ini memiliki "skema" sendiri yang mirip dengan
skema konseptual Database.
• Antarmuka untuk DBA
• Antarmuka untuk Pengguna
36
banyak tekanan daripada nilai. Pemantauan sangat penting untuk mengakses
status database dan menyesuaikannya.
9. Implementasi dan Desain Database: Tugas penting DBA adalah merancang
Database untuk kinerja, skalabilitas, fleksibilitas, dan keandalan yang
maksimal. Sebuah database yang dirancang dan diimplementasikan dengan
baik membenarkan investasi database. DBA bertanggung jawab untuk
menginstal DBMS baru dan memutakhirkan DBMS yang ada. DBA harus fasih
dengan masalah instalasi dan peningkatan, yaitu masalah, persyaratan, dll.
10. Kontrol migrasi program, perubahan Database, referensi perubahan Database,
dan perubahan menu melalui siklus hidup pengembangan.
11. Membuat dan memelihara semua database: yang diperlukan untuk
pengembangan, pengujian, dan penggunaan produksi.
12. DBA memberlakukan dan memelihara batasan untuk memastikan integritas
database.
Keterampilan DBA
DBA harus memiliki keterampilan berikut:
1. Pengetahuan yang baik tentang sistem operasi.
2. Pengetahuan yang baik tentang desain Database fisik.
3. Kemampuan untuk melakukan baik database dan juga pemantauan kinerja
sistem operasi dan penyesuaian yang diperlukan.
4. Mampu memberikan arahan database strategis bagi organisasi.
5. Pengetahuan yang sangat baik tentang cadangan Database dan skenario
pemulihan.
6. Keterampilan yang baik dalam semua alat database.
7. Pengetahuan yang baik tentang manajemen keamanan Database.
8. Pengetahuan yang baik tentang bagaimana database memperoleh dan
mengelola sumber daya.
9. Pengetahuan yang baik tentang aplikasi di situs Anda.
10. Pengalaman dan pengetahuan dalam memigrasikan kode, perubahan
Database, data, dan menu melalui berbagai tahap siklus hidup
pengembangan.
37
11. Pengetahuan yang baik tentang cara database menegakkan integritas data.
12. Pengetahuan yang baik tentang penyetelan kinerja Database dan kode
program.
13. DBA harus memiliki keterampilan komunikasi yang baik dengan manajemen,
tim pengembangan, vendor, administrator sistem, dan penyedia layanan
terkait lainnya.
User Database
Ada empat jenis pengguna sistem Database yang berbeda.
1. Pengguna Pemula : Pengguna pemula adalah pengguna tidak canggih yang
berinteraksi dengan sistem dengan menjalankan salah satu program aplikasi
yang telah ditulis sebelumnya. misalnya, Teller Bank yang perlu mentransfer
Rp. 500 dari rekening A ke rekening B menjalankan program yang disebut
transfer. Program ini meminta teller untuk jumlah uang yang akan ditransfer.
Seorang pengguna ATM termasuk dalam kategori ini.
2. Pemrogram Aplikasi : Pemrogram aplikasi adalah profesional komputer yang
menulis program aplikasi. Pemrogram aplikasi dapat memilih dari banyak alat
untuk mengembangkan antarmuka pengguna. Contoh: Alat Rapid Application
Development (RAD) adalah alat yang memungkinkan pemrogram aplikasi
untuk membuat formulir dan laporan tanpa menulis program.
3. Pengguna Canggih : Pengguna canggih berinteraksi dengan sistem tanpa
menulis program. Sebagai gantinya, mereka membentuk permintaan mereka
dalam bahasa kueri database. Mereka mengirimkan setiap kueri tersebut ke
prosesor kueri, yang fungsinya untuk memecah pernyataan DML menjadi
instruksi yang dipahami oleh manajer penyimpanan. Analis yang mengirimkan
kueri untuk mengeksplorasi data dalam database termasuk dalam kategori ini.
(4) Pengguna khusus: Pengguna khusus adalah pengguna canggih yang
menulis aplikasi database khusus yang tidak sesuai dengan kerangka
pemrosesan data tradisional.
38
STRUKTUR DATABASE
Sistem Database dibagi menjadi modul-modul yang menangani masing-masing tanggung
jawab sistem secara keseluruhan. Beberapa fungsi sistem database mungkin disediakan
oleh sistem operasi komputer. Komponen fungsional dari sistem database dapat dibagi
menjadi:
• Manajer penyimpanan
• Pemroses kueri
Manajer Penyimpanan
Manajer penyimpanan adalah modul program yang menyediakan antarmuka antara
data tingkat rendah yang disimpan dalam database dan program aplikasi dan kueri yang
dikirimkan ke sistem.
• Manajer penyimpanan bertanggung jawab atas interaksi dengan manajer
pengisian.
• Manajer penyimpanan penting karena Database membutuhkan ruang
penyimpanan yang besar.
Komponen berikut busur ini termasuk dalam manajer penyimpanan.
• Manajer Otorisasi dan Integritas: Ini menguji kepuasan batasan integritas dan
memeriksa otoritas pengguna untuk mengakses data.
• Manajer Transaksi: Ini memastikan bahwa database tetap dalam keadaan
konsisten meskipun ada kegagalan sistem dan eksekusi transaksi saat ini
tanpa konflik.
• File Manager: Ini mengelola alokasi ruang pada penyimpanan disk dan
struktur data yang digunakan untuk mewakili informasi yang disimpan pada
disk.
• Buffer Manager: Bertanggung jawab untuk mengambil data dari
penyimpanan disk ke memori utama dan memutuskan data apa yang akan
diambil di memori utama.
39
Gambar 2.13 Struktur Database Manajemen Sistem
Berikut ini adalah struktur data yang diperlukan sebagai bagian dari implementasi sistem
fisik.
1. File Data : Ini menyimpan database itu sendiri.
2. Kamus Data: Ini menyimpan metadata tentang struktur database, khususnya,
skema database.
3. Indeks: Ini menyediakan akses cepat ke item data yang memiliki nilai tertentu
4. Data Statistik : Ini menyimpan informasi statistik tentang data dalam
database
Pemroses Kueri Berikut adalah komponen-komponen berikut:
1. Kompilator DML: Ini menerjemahkan pernyataan DML ke dalam bahasa kueri
ke dalam instruksi tingkat rendah yang dipahami oleh mesin evaluasi kueri.
2. Precompiler DML Tertanam: Ini mengubah pernyataan DML yang disematkan
dalam program aplikasi ke panggilan prosedur normal dalam bahasa host.
40
3. Precompiler berinteraksi dengan compiler DML untuk menghasilkan kode
yang sesuai.
4. DDL Interpreter : Ini menafsirkan pernyataan DDL dan mencatat definisi
dalam kamus data.
5. Mesin Evaluasi Kueri: yang mengeksekusi instruksi tingkat rendah yang
dihasilkan oleh kompiler DML.
Jenis Atribut
Atribut Sederhana : Atribut yang tidak dapat dibagi menjadi sub bagian disebut
atribut sederhana. misalnya, nomor Roll adalah contoh atribut sederhana.
Atribut Komposit : Atribut yang dapat dibagi menjadi pendukung disebut atribut
komposit. misalnya, Tanggal Lahir adalah contoh atribut komposit, karena dapat dibagi
menjadi "Hari lahir", "Bulan lahir" dan "Tahun lahir". OR Name juga merupakan contoh
dari atribut komposit.
Atribut Bernilai Tunggal : Atribut yang dapat mengasumsikan satu dan hanya
satu nilai disebut "Atribut bernilai tunggal". Misalnya: ''Usia seseorang adalah
contoh Atribusi bernilai tunggal. Atribut Bernilai Banyak: Atribut yang dapat
mengasumsikan sekumpulan nilai disebut "Atribut Bernilai Banyak".
misalnya, Entitas Karyawan yang ditetapkan dengan atribut nomor telepon
adalah contoh atribut multinilai karena seorang karyawan mungkin memiliki
nol, satu atau banyak nomor telepon.
Atribut Null: Nilai nol digunakan ketika entitas tidak memiliki nilai untuk
atribut. misalnya, Atribut gelar perguruan tinggi hanya berlaku untuk orang
dengan gelar sarjana.
Derived Attributes : Nilai dari tipe atribut ini dapat diturunkan dari atribut
atau entitas lain yang terkait. misalnya, Dalam sistem penggajian, HRA dan PE
diturunkan dari atribut gaji.
Pemetaan Kardinalitas
Kardinalitas pemetaan atau rasio kardinalitas, menyatakan jumlah entitas yang
entitas lain dapat dikaitkan melalui hubungan st:1l: kardinalitas pemetaan paling
berguna dalam menggambarkan himpunan hubungan biner. Untuk himpunan relasi
42
biner R antara himpunan entitas A dan B, kardinalitas pemetaan harus salah satu dari
berikut ini :
43
Batasan partisipasi menentukan apakah keberadaan himpunan entitas bergantung pada
keterkaitannya dengan entitas lain
Batasan partisipasi:
1. Total
2. Sebagian
Total Participate : Partisipasi himpunan entitas E dalam himpunan relasi R dikatakan
total jika setiap entitas pada E berpartisipasi dalam setidaknya satu hubungan dalam
R. Contoh : Kita mengharapkan setiap entitas pinjaman berelasi dengan setidaknya satu
pelanggan melalui hubungan peminjam. Oleh karena itu, partisipasi pinjaman dalam
44
Gambar 2.15 Siklus Hidup Pengembangan Database
45
c. Kelayakan ekonomi: Dapatkah manfaat diidentifikasi? Apakah sistem yang
diinginkan akan menguntungkan dari segi biaya? Dapatkah biaya dan
manfaat diukur?
3. Definisi Persyaratan Ini melibatkan pendefinisian ruang lingkup database
yang mengidentifikasi manajemen dan persyaratan informasi area fungsional
dan menetapkan persyaratan perangkat keras/lunak. Persyaratan informasi
ditentukan dari tanggapan kuesioner, wawancara dengan manajer dan
pengguna klerikal serta laporan dan formulir yang saat ini digunakan.
4. Desain Konseptual adalah tahap desain konseptual menciptakan skema
konseptual untuk database. Spesifikasi dikembangkan ke titik di mana
implementasi dapat dimulai. Selama tahap ini, model tampilan pengguna
yang terperinci dibuat dan diintegrasikan ke dalam model data konseptual
yang merekam semua elemen data perusahaan untuk dipelihara dalam
database.
5. Implementasi yaitu Selama implementasi Database, DBMS dipilih dan
diperoleh. Kemudian model konseptual rinci diubah menjadi model
implementasi DBMS, kamus data dibangun, database terisi, program aplikasi
dikembangkan dan pengguna dilatih.
6. Evaluasi dan Pemeliharaan Database melibatkan mewawancarai pengguna
untuk menentukan apakah ada kebutuhan data yang tidak terpenuhi.
Perubahan dilakukan sesuai kebutuhan. Seiring waktu sistem dipertahankan
melalui pengenalan perangkat tambahan dan penambahan program baru
dan elemen data sebagai kebutuhan bisnis berubah dan berkembang.
46
Arsitektur Database Tiga Tingkat.
47
perangkat fisik mana yang akan berisi data, metode akses apa yang akan
digunakan untuk mengambil dan memperbarui data, dan tindakan apa
yang akan diambil untuk mempertahankan atau meningkatkan kinerja
database.
48
b. Program klien mengeksekusi logika aplikasi:
Dibatasi oleh kemampuan pemrosesan workstation klien
(memori, CPU).
Membutuhkan kode aplikasi untuk didistribusikan ke setiap
workstation klien.
SQL menyediakan bahasa standar untuk RDBMS. Ini
menciptakan titik pemisah logis antara klien dan server.
Oleh karena itu, fungsi kueri dan transaksi tetap berada di
sisi server. Dalam arsitektur seperti itu, server sering
disebut server kueri atau server transaksi, karena
menyediakan dua hal ini:
49
Kekurangan:
1. Aturan aplikasi yang kompleks sulit untuk diterapkan dalam database, server
membutuhkan lebih banyak kode untuk klien.
2. Aturan aplikasi yang kompleks sulit diterapkan di klien dan memiliki kinerja
yang buruk.
3. Perubahan logika bisnis tidak secara otomatis diberlakukan oleh server-
hanges memerlukan perangkat lunak sisi klien baru untuk didistribusikan dan
diinstal.
4. Tidak portabel untuk platform server database lainnya.
5. Performa yang tidak memadai untuk lingkungan volume sedang hingga tinggi,
karena server database diperlukan untuk menjalankan logika bisnis. Ini
memperlambat operasi database di server database.
50
Gambar 2.19 Arsitektur 3 tingkat
51
4. Logika server aplikasi portabel ke platform server database lain berdasarkan
perangkat lunak aplikasi.
5. Performa superior untuk lingkungan volume sedang hingga tinggi.
6. Teknologi enkripsi dan dekripsi membuatnya lebih aman untuk mentransfer
data sensitif dari server ke klien dalam bentuk terenkripsi, di mana ia akan
didekripsi.
7. Berbagai teknologi untuk kompresi data membantu dalam mentransfer
sejumlah besar data dari server ke klien.
Kekurangan :
1. Struktur lebih kompleks.
2. Lebih sulit untuk diatur dan dipelihara.
3. Masalah keamanan jaringan.
4. Pemisahan fisik server aplikasi yang mencakup fungsi logika bisnis dan server
Database yang berisi Database mungkin sedikit memengaruhi kinerja.
52
BAB 3
PEMOGRAMAN DINAMIS
Pemrograman Dinamis
Pemrograman dinamis adalah teknik desain algoritma yang dapat digunakan
untuk menemukan solusi optimal untuk masalah dan menghitung jumlah solusi. Bab ini
adalah pengantar pemrograman dinamis, dan teknik ini akan digunakan berkali-kali
nanti dalam buku ini ketika merancang algoritma. Bagian pertama membahas elemen
dasar pemrograman dinamis dalam konteks masalah penukaran koin. Dalam masalah ini
kita diberikan satu set nilai koin dan tugas kita adalah membuat sejumlah uang dengan
menggunakan koin sesedikit mungkin. Ada algoritma serakah sederhana untuk masalah
ini, tetapi seperti yang akan kita lihat, itu tidak selalu menghasilkan solusi yang optimal.
Namun, dengan menggunakan pemrograman dinamis, kita dapat membuat algoritma
yang efisien yang selalu menemukan solusi optimal. Bagian selanjutnyamenyajikan
pilihan masalah yang menunjukkan beberapa kemungkinan pemrograman dinamis. Soal-
soal tersebut meliputi menentukan barisan kenaikan terpanjang dalam suatu larik,
menemukan jalur optimal dalam kisi dua dimensi, dan menghasilkan semua jumlah
bobot yang mungkin dalam masalah knapsack.
53
kemudian satu koin bernilai 2, yang melengkapi penyelesaian. Ini terlihat seperti strategi
yang masuk akal, tetapi apakah selalu optimal?
Ternyata strategi ini tidak selalu berhasil. Misalnya, jika koin = {1,3,4} dan n = 6,
solusi optimal hanya memiliki dua koin (3+3 = 6) tetapi strategi serakah menghasilkan
solusi dengan tiga koin (4+1+1 = 6 ). Contoh tandingan sederhana ini menunjukkan
bahwa algoritma serakah tidak benar.7 Bagaimana kita bisa menyelesaikan masalah?
Tentu saja, kita dapat mencoba menemukan algoritma serakah lain, tetapi tidak ada
strategi jelas lain yang dapat kita pertimbangkan. Kemungkinan lain adalah membuat
algoritma brute force yang melewati semua cara yang mungkin untuk memilih koin.
Algoritma seperti itu pasti akan memberikan hasil yang benar, tetapi akan sangat lambat
pada input yang besar. Namun, dengan menggunakan pemrograman dinamis, kita dapat
membuat algoritma yang hampir mirip dengan algoritma brute force tetapi juga efisien.
Dengan demikian, kita berdua dapat yakin bahwa algoritme itu benar dan
menggunakannya untuk memproses input yang besar. Selanjutnya, kita dapat
menggunakan teknik yang sama untuk memecahkan sejumlah besar masalah lain.
3.1.1 Menemukan Solusi Optimal
Untuk menggunakan pemrograman dinamis, kita harus merumuskan masalah
secara rekursif sehingga solusi masalah dapat dihitung dari solusi ke sub masalah yang
lebih kecil. Dalam masalah koin, masalah rekursif alami adalah menghitung nilai suatu
fungsi. solve (x): berapa jumlah minimum koin yang diperlukan untuk membentuk
jumlah x? Jelas, nilai fungsi bergantung pada nilai koin. Misalnya, If coin = {1,3,4}, nilai
pertama dari fungsi tersebut adalah sebagai berikut:
solve(0) = 0
solve(1) = 1
solve(2) = 2
solve(3) = 1
solve(4) = 1
solve(5) = 2
solve(6) = 2
solve(7) = 2
solve(8) = 2
solve(9) = 3
solve(10) = 3
54
Misalnya, solve(10) = 3, karena paling sedikit diperlukan 3 koin untuk membentuk
jumlah 10. Solusi optimalnya adalah 3+3+4=10. Sifat esensial dari solve adalah bahwa
nilainya dapat dihitung secara rekursif dari nilai yang lebih kecil. Idenya adalah untuk
fokus pada koin pertama yang kita pilih untuk dijumlahkan. Sebagai contoh, dalam
skenario di atas, koin pertama dapat berupa 1, 3 atau 4. Jika pertama kita memilih koin
1, tugas yang tersisa adalah membentuk jumlah 9 menggunakan jumlah koin minimum,
yang merupakan submasalah dari koin asli. masalah. Tentu saja, hal yang sama berlaku
untuk koin 3 dan 4. Jadi, kita dapat menggunakan rumus rekursif berikut untuk
menghitung jumlah minimum koin:
solve(x) = min(solve(x −1)+1,
solve(x −3)+1,
solve(x −4)+1).
Kasus dasar dari rekursi adalah solve(0) = 0, karena tidak diperlukan koin untuk
membentuk jumlah kosong. Sebagai contoh,
solve(10) =solve(7)+1=solve(4)+2=solve(0)+3=3.
Sekarang kita siap untuk memberikan fungsi rekursif umum yang menghitung jumlah
minimum koin yang diperlukan untuk membentuk jumlah x:
∞ 𝑥<0
𝑠𝑜𝑙𝑣𝑒(𝑥) = { 0 𝑥=0
𝑚𝑖𝑛𝑐 ∈ 𝑐𝑜𝑖𝑛𝑠 𝑠𝑜𝑙𝑣𝑒(𝑥 − 𝑐) + 1 𝑥 > 0
Pertama, jika x < 0, nilainya tak berhingga, karena tidak mungkin membentuk
jumlah uang negatif. Kemudian, jika x =0,nilainya nol, karena uang logam diperlukan
untuk membentuk jumlah kosong. Akhirnya, jika x > 0, variabel c melewati semua
kemungkinan bagaimana memilih koin pertama dari jumlah tersebut. Setelah fungsi
rekursif yang memecahkan masalah telah ditemukan, kita dapat langsung
mengimplementasikan solusi dalam C++ (konstanta INF menunjukkan tak terhingga):
int solve(int x) {
if (x < 0)return INF; if (x == 0) return 0; int best = INF;
for (auto c : coins) {
best = min(best, solve(x-c)+1);
}
return best;
55
}
Namun, fungsi ini tidak efisien, karena mungkin ada banyak cara untuk membuat
jumlah dan fungsi memeriksa semuanya. Untungnya, ternyata ada cara sederhana untuk
membuat fungsi tersebut menjadi efisien.
Memoisasi
Ide kunci dalam pemrograman dinamis adalah memoisasi, yang berarti bahwa kita
menyimpan setiap nilai fungsi dalam array secara langsung setelah menghitungnya.
Kemudian, ketika nilai tersebut dibutuhkan lagi, nilai tersebut dapat diambil dari array
tanpa panggilan rekursif. Untuk melakukan ini, kami membuat array
bool ready[N];
int value[N];
di mana ready[x] menunjukkan apakah nilai solve(x) telah dihitung, dan jika ya, nilai[x]
berisi nilai ini. Konstanta N telah dipilih sehingga semua nilai yang dibutuhkan sesuai
dengan array. Setelah ini, fungsi tersebut dapat diimplementasikan secara efisien
sebagai berikut:
int solve(int x) {
if (x < 0)return INF;
if (x == 0) return 0;
if (ready[x]) return value[x];
int best = INF;
for (auto c : coins) {
best = min(best, solve(x-c)+1);
}
ready[x] = true; value[x] = best; return best;
}
Fungsi menangani kasus dasar x < 0 dan x = 0 seperti sebelumnya. Kemudian
memeriksa dari ready[x]jika solve(x) telah disimpan dalam nilai[x], dan jika ya, fungsi
langsung mengembalikannya. Jika tidak, fungsi menghitung nilai solve(x) secara rekursif
dan menyimpannya dalam nilai[x]. Fungsi ini bekerja dengan efisien, karena jawaban
untuk setiap parameter x dihitung secara rekursif hanya satu kali. Setelah nilai
penyelesaian (x) telah disimpan dalam nilai [x], fungsi tersebut dapat diambil secara
efisien setiap kali fungsi dipanggil kembali dengan parameter x. Kompleksitas waktu dari
56
algoritma adalah O(nk), di mana n adalah jumlah target dan k adalah jumlah koin.
Implementasi Berulang
Perhatikan bahwa kita juga dapat membangun nilai array secara iteratif menggunakan
loop sebagai berikut:
value[0] = 0;
for (int x = 1; x <= n; x++) {
value[x] = INF;
for (auto c : coins) {
if (x-c >= 0) {
value[x] = min(value[x], value[x-c]+1);
}
}
}
Faktanya, sebagian besar programmer kompetitif lebih menyukai implementasi ini,
karena lebih pendek dan memiliki faktor konstan yang lebih kecil. Mulai sekarang, kami
juga menggunakan implementasi berulang dalam contoh kami. Namun, seringkali lebih
mudah untuk memikirkan solusi pemrograman dinamis dalam hal fungsi rekursif.
Membangun Solusi
Kadang-kadang kita diminta untuk menemukan nilai solusi optimal dan memberikan
contoh bagaimana solusi tersebut dapat dibangun. Untuk membangun solusi optimal
dalam masalah koin, kita dapat mendeklarasikan array baru yang menunjukkan untuk
setiap jumlah uang koin pertama dalam solusi optimal:
int first[N];
Kemudian, kita dapat memodifikasi algoritma sebagai berikut:
value[0] = 0;
for (int x = 1; x <= n; x++) {
value[x] = INF;
for (auto c : coins) {
if (x-c >= 0 && value[x-c]+1 < value[x]) { value[x] = value[x-c]+1; first[x] = c;
}
}
}
57
Setelah ini, kode berikut mencetak koin yang muncul dalam solusi optimal untuk jumlah
n:
6.1.3 Menghitung Solusi
Sekarang mari kita pertimbangkan varian lain dari masalah koin di mana tugas kita
adalah menghitung jumlah total cara untuk menghasilkan jumlah x menggunakan koin.
Misalnya, jika coin={ 1,3,4}dan x =5, ada total 6 cara:
• 1+1+1+1+1
• 1+1+3
• 1+3+1
• 3+1+1
• 1+4
• 4+1
Sekali lagi, kita dapat menyelesaikan masalah secara rekursif. Biarkan Memecahkan(x)
menunjukkan jumlah cara kita dapat membentuk jumlah x. Misalnya, jika coin={ 1,3,4},
maka solve(5) =6 dan rumus rekursifnya adalah
solve(x) =solve(x −1)+ solve(x −3)+ solve(x −4).
Maka, fungsi rekursif umum adalah sebagai berikut:
0 𝑥<0
𝑠𝑜𝑙𝑣𝑒(𝑥) = {1 𝑥=0
∑ ∈ 𝑐 𝑜𝑖𝑛𝑠 𝑠𝑜𝑙𝑣𝑒(𝑥 − 𝑐) + 1 𝑥 > 0
Jika x < 0, nilainya nol, karena tidak ada solusi. Jika x = 0, nilainya satu, karena hanya ada
satu cara untuk membentuk jumlah kosong. Jika tidak, kita menghitung jumlah semua
nilai dari bentuk solve(x c) di mana c dalam koin. Kode berikut menyusun jumlah larik
sedemikian rupa sehingga count[x] sama dengan nilai solve(x) untuk 0≤ x n:
count[0] = 1;
for (int x = 1; x <= n; x++) {
for (auto c : coins) {
if (x-c >= 0) {
count[x] += count[x-c];
}
}
}
58
Seringkali jumlah solusi sangat besar sehingga tidak diperlukan untuk menghitung
jumlah pastinya tetapi cukup untuk memberikan jawaban modulo m dimana, misalnya,
m = 109 +7. Hal ini dapat dilakukan dengan mengubah kode sehingga semua
perhitungan dilakukan modulo m. Pada kode di atas, cukup tambahkan baris
count[x] %= m; setelah garis count[x] += count[x-c];
Gambar 3.1 Urutan kenaikan terpanjang dari larik ini adalah [2,5,7,8]
Gambar 3.2 Jalur optimal dari sudut kiri atas ke sudut kanan bawah
Gambar 3.3 Dua cara yang mungkin untuk mencapai persegi di jalan
60
3.2.2 Jalur dalam Grid
Masalah kita selanjutnya adalah menemukan jalur dari sudut kiri atas ke sudut
kanan bawah dari kisi nxn, dengan batasan bahwa kita hanya dapat bergerak ke bawah
dan ke kanan. Setiap kotak berisi bilangan bulat, dan jalurnya harus dibuat sedemikian
rupa sehingga jumlah nilai sepanjang jalur tersebut sebesar mungkin. Sebagai contoh,
Gambar 3.2 menunjukkan jalur optimal dalam kisi 5x5. Jumlah nilai pada lintasan adalah
67, dan ini adalah jumlah terbesar yang mungkin pada lintasan dari sudut kiri atas ke
sudut kanan bawah. Asumsikan bahwa baris dan kolom kisi diberi nomor dari 1 hingga n,
dan value[y][x]sama dengan nilai kuadrat (y,x). Misalkan sum(y,x) menunjukkan jumlah
maksimum pada lintasan dari sudut kiri atas ke persegi (y,x). Kemudian, sum(n,n)
memberi tahu kita jumlah maksimum dari sudut kiri atas ke sudut kanan bawah.
Misalnya, pada kisi di atas, jumlah(5,5) =67. Sekarang kita bisa menggunakan rumus
sum(y,x) =max(sum(y,x −1),sum(y−1,x))+value[y][x],
yang berdasarkan pengamatan bahwa lintasan yang berakhir pada bujur sangkar (y,x)
dapat berasal dari square (y,x −1) atau dari square(y−1,x) (Gambar 6.3). Jadi, kami
memilih arah yang memaksimalkan jumlah. Kami berasumsi bahwa sum(y,x) = 0 ify = 0
atau x =0, sehingga rumus rekursif juga berfungsi untuk kuadrat paling kiri dan paling
atas. Karena jumlah fungsi memiliki dua parameter, array pemrograman dinamis juga
memiliki dua dimensi. Misalnya, kita dapat menggunakan array
int sum[N][N];
dan hitung jumlahnya sebagai berikut:
for (int y = 1; y <= n; y++) {
for (int x = 1; x <= n; x++) {
sum[y][x] = max(sum[y][x-1],sum[y-1][x])+value[y][x];
}
}
Kompleksitas waktu dari algoritma adalah O(n2).
61
yang dapat dibangun dengan menggunakan bobot. Misalnya, Gambar 6.4 menunjukkan
jumlah yang mungkin untuk bobot [1,3,3,5]. Dalam hal ini, semua jumlah antara 0...12
dimungkinkan, kecuali 2 dan 10. Misalnya, jumlah 7 dimungkinkan karena kita dapat
memilih bobot[1,3,3]. Untuk memecahkan masalah, kami fokus pada submasalah di
mana kami hanya menggunakan k bobot pertama untuk membangun jumlah. Misalkan
possible(x,k) =benar jika kita dapat membuat jumlah x menggunakan k bobot pertama,
dan jika tidak, possible(x,k)=false. Nilai fungsi dapat dihitung secara rekursif
menggunakan rumus
possible(x,k) =possible(x −wk,k−1) or possible(x,k−1),
yang didasarkan pada fakta bahwa kita dapat menggunakan atau tidak menggunakan
bobot wk dalam penjumlahan. Jika kita menggunakan wk, tugas yang tersisa adalah
membentuk jumlah x−wk menggunakan bobot k−1 pertama, dan jika kita tidak
menggunakan wk, tugas yang tersisa adalah membentuk jumlah x menggunakan bobot
k−1 pertama. Kasus dasarnya adalah
possible(
x0)
𝑡𝑟𝑢𝑒 𝑥=0
={
𝑓𝑎𝑙𝑠𝑒 𝑥 ≠ 0
karena jika tidak ada bobot yang digunakan, kita hanya dapat membentuk
penjumlahan0. Akhirnya, possible(x,n) memberi tahu kita apakah kita dapat membuat
jumlah x menggunakan semua bobot.
62
Gambar 3.5 Memecahkan masalah knapsack untuk bobot [1,3,3,5]menggunakan
pemrograman dinamis
Gambar 3.5 menunjukkan semua nilai fungsi untuk bobot [1, 3, 3, 5] (simbol “ √”
menunjukkan nilai sebenarnya). Misalnya, baris k = 2 memberi tahu kita bahwa kita
dapat membuat sum[0,1,3,4] menggunakan bobot[1,3]. Biarkan m menunjukkan jumlah
total bobot. Solusi pemrograman dinamis waktu O(nm) berikut sesuai dengan fungsi
rekursif:
possible[0][0] = true;
for (int k = 1; k <= n; k++) {
for (int x = 0; x <= m; x++) {
if (x-w[k] >= 0) { possible[x][k] |=
possible[x-w[k]][k-1];
}
possible[x][k] |= possible[x][k-1];
}
}
Ternyata ada juga cara yang lebih ringkas untuk mengimplementasikan perhitungan
pemrograman dinamis, dengan hanya menggunakan array satu dimensi yang
memungkinkan[x] yang menunjukkan apakah kita dapat membuat subset dengan jumlah
x. Triknya adalah memperbarui array dari kanan ke kiri untuk setiap bobot baru:
possible[0] = true;
for (int k = 1; k <= n; k++) {
for (int x = m-w[k]; x >= 0; x--) { possible[x+w[k]] |= possible[x];
}
}
Perhatikan bahwa ide pemrograman dinamis umum yang disajikan di bagian ini juga
dapat digunakan dalam masalah knapsack lainnya, seperti dalam situasi di mana objek
memiliki bobot dan nilai dan kita harus menemukan subset nilai maksimum yang
bobotnya tidak melebihi batas yang diberikan.
63
3.2.4 Dari Permutasi ke Subset
Menggunakan pemrograman dinamis, seringkali dimungkinkan untuk mengubah sebuah
iterasi pada permutasi menjadi sebuah iterasi pada himpunan bagian. Manfaatnya
adalah bahwa n!, jumlah permutasi, jauh lebih besar dari 2n, jumlah himpunan bagian.
Sebagai contoh, jika n =20, n!≈2.4x1018 dan 2n ≈ 106. Jadi, untuk nilai n tertentu, kita
dapat melewati himpunan bagian secara efisien tetapi tidak melalui permutasi. Sebagai
contoh, perhatikan masalah berikut: Ada lift dengan berat maksimum x, dan n orang
yang ingin naik dari lantai dasar ke lantai atas. Orang-orang tersebut diberi nomor
0,1,...,n−1, dan berat orang i adalah weight[i]. Berapa jumlah minimum perjalanan yang
diperlukan untuk membawa semua orang ke lantai atas? Misalnya, misalkan x =12, n =5,
dan bobotnya adalah sebagai berikut:
• weight[0]=2
• weight[1]=3
• weight[2]=4
• weight[3]=5
• weight[4]=9
Dalam skenario ini, jumlah minimum perjalanan adalah dua. Salah satu solusi optimal
adalah sebagai berikut: pertama, orang 0, 2, dan 3 naik lift (berat total 11), dan
kemudian, orang 1 dan 4 naik lift (total berat 12). Soal dapat dengan mudah diselesaikan
dalam waktu O(n!n) dengan menguji semua kemungkinan permutasi dari n orang.
Namun, kita dapat menggunakan pemrograman dinamis untuk membuat algoritma
waktu O(2nn) yang lebih efisien. Idenya adalah untuk menghitung untuk setiap subset
orang dua nilai: jumlah minimum perjalanan yang dibutuhkan dan berat minimum orang
yang naik dalam kelompok terakhir. Biarkan rides(S) menunjukkan jumlah minimum
perjalanan untuk subset S, dan biarkan last(S) menunjukkan berat minimum perjalanan
terakhir dalam solusi di mana jumlah perjalanan minimum.
Misalnya, dalam skenario di atas
rides({3,4}) =2 and last({3,4}) =5,
karena cara optimal bagi orang 3 dan 4 untuk sampai ke lantai atas adalah mereka
mengambil dua jalan terpisah dan orang 4 pergi pertama, yang meminimalkan berat
perjalanan kedua. Tentu saja, tujuan akhir kita adalah menghitung nilai rides({0...n−1}).
Kita dapat menghitung nilai fungsi secara rekursif dan kemudian menerapkan
pemrograman dinamis. Untuk menghitung nilai subset S, kami menelusuri semua orang
64
yang termasuk dalam S dan secara optimal memilih orang terakhir p yang memasuki
elevator. Setiap pilihan seperti itu menghasilkan submasalah untuk sebagian kecil orang.
Jika terakhir(S\p)+ weight[p]≤x,kita dapat menambahkan p ke jalan terakhir. Jika tidak,
kita harus menyimpan wahana baru yang hanya berisi p. Cara mudah untuk
mengimplementasikan perhitungan pemrograman dinamis adalah dengan
menggunakan operasi bit. Pertama, kita mendeklarasikan sebuah array pair<int,int>
best[1<<N];
yang berisi untuk setiap subset S sepasang (naik(S),terakhir(S)). Untuk subset kosong,
tidak ada perjalanan yang diperlukan:
best[0] = {0,0};
Gambar 3.6 Salah satu cara untuk mengisi kisi 4×7 menggunakan ubin 1×2 dan 2×1
Kemudian, kita dapat mengisi array sebagai berikut:
for (int s = 1; s < (1<<n); s++) {
//initial value : n+1rides are needed best[s] = {n+1,0};
for (int p = 0; p < n; p++) {
if (s&(1<<p)) {
auto option = best[s^(1<<p)];
if (option.second+weight[p] <= x) {
//addp to a nexist in gride option.second += weight[p];
} else {
//reserve a new ride for p option.first++; option.second = weight[p];
}
best[s] = min(best[s], option);
}
}
}
65
Perhatikan bahwa loop di atas menjamin bahwa untuk setiap dua himpunan bagian S1
dan S2 sedemikian rupa sehingga S1 ⊂ S2, kita memproses S1 sebelum S2. Dengan
demikian, nilai pemrograman dinamis dihitung dalam urutan yang benar.
66
untuk mengetahui kolom mana dari baris sebelumnya yang berisi bujur sangkar atas
ubin vertikal. Dengan demikian, kita dapat merepresentasikan baris hanya dengan
menggunakan karakter ⊓ dan , Dimana merupakan kombinasi dari karakter 𝖬, ⊏ dan
⊐ . Menggunakan representasi ini, hanya ada 2m baris yang berbeda, dan kompleksitas
waktu adalah O(n22m). Sebagai catatan terakhir, ada juga rumus langsung untuk
menghitung jumlah ubin:
𝑛 [2]
𝑚[2]
𝖦 𝖦 4 𝑥 (𝑐𝑜𝑠2 𝜋𝑎
𝑛+1
+ 𝑐𝑜𝑠2 𝜋𝑏 )
𝑚+1
𝑎=1 𝑏=1
Rumus ini sangat efisien, karena menghitung jumlah ubin dalam waktu O(nm), tetapi
karena jawabannya adalah perkalian bilangan real, masalah saat menggunakan rumus
adalah bagaimana menyimpan hasil antara secara akurat.
Banyak masalah pemrograman dapat diselesaikan dengan mempertimbangkan
situasi sebagai graf dan menggunakan algoritma graf yang sesuai. Dalam bab ini, kita
akan mempelajari dasar-dasar grafik dan pilihan algoritma graf yang penting. Bagian
pertama membahas terminologi grafik dan struktur data yang dapat digunakan untuk
mewakili grafik dalam algoritma. Bagian selanjutnya memperkenalkan dua algoritma
traversal graf fundamental. Pencarian Depth First adalah cara sederhana untuk
mengunjungi semua node yang dapat dicapai dari node awal, dan pencarian Breadth
First mengunjungi node dalam urutan jarak yang meningkat dari node awal. Bagian
selanjutnya menyajikan algoritma untuk menemukan jalur terpendek dalam grafik
berbobot.
Algoritma Bellman-Ford adalah algoritma sederhana yang menemukan jalur
terpendek dari node awal ke semua node lainnya. Algoritma Dijkstra merupakan
algoritma yang lebih efisien yang mensyaratkan bahwa bobot genap tidak negatif.
Algoritma Floyd-Warshall menentukan jalur terpendek antara semua pasangan simpul
67
dari suatu graf. Bagian tengah mengeksplorasi sifat khusus dari grafik asiklik berarah.
Kita akan belajar bagaimana membangun semacam topologi dan bagaimana
menggunakan pemrograman dinamis untuk secara efisien memproses grafik tersebut.
Bagian selanjutnya berfokus pada grafik sukses di mana setiap node memiliki suksesor
unik. Kami akan membahas cara yang efisien untuk menemukan penerus node dan
algoritma Floyd untuk deteksi siklus. Bagian akhir menyajikan algoritma Kruskal dan Prim
untuk membangun pohon merentang minimum. Algoritma Kruskal didasarkan pada
struktur union-find yang efisien yang juga memiliki kegunaan lain dalam desain
algoritma.
68
• 1→4→5→2→3→6
• 1→4→5→2→6
Memproses Jalur Terpendek
Pemrograman dinamis juga dapat digunakan untuk menjawab pertanyaan tentang
jalur terpendek pada grafik umum (tidak harus asiklik). Yaitu, jika kita mengetahui jarak
minimum dari node awal ke node lain (misalnya, setelah menggunakan algoritma
Dijkstra), kita dapat dengan mudah membuat grafik jalur terpendek asiklik berarah yang
menunjukkan untuk setiap node cara yang mungkin untuk mencapai node menggunakan
jalur terpendek dari node awal.
69
{c1,c2,...,ck} Dalam skenario ini, kita dapat membuat grafik di mana setiap simpul sesuai
dengan jumlah uang, dan ujung-ujungnya menunjukkan bagaimana koin dapat dipilih.
Sebagai contoh, Gambar 3.9 menunjukkan grafik untuk koin {1,3,4} dan n = 6. Dengan
menggunakan representasi ini, jalur terpendek dari node 0 ke node n sesuai dengan
solusi dengan jumlah koin minimum, dan jumlah total jalur dari simpul 0 ke simpul n
sama dengan jumlah total solusi.
70
BAB 4
PENGENALAN PEMROGRAMAN VISUAL STUDIO
(VB.NET)
4.1 Pengantar
1. Perangkat lunak/software visual studio (VB.NET) merupakan software untuk
pemrograman.
2. Dalam pemrograman ada istilah “Bahasa pemrograman” yang merupakan
perintah yang ditujukan untuk komputer supaya mengeksekusi/melakukan
tugas dari perintah tersebut.
3. VB.Net mulai di kembangkan tahun 1991 oleh perusahaan/vendor microsoft.
4. VB.NET adalah pengembangan dati bahasan BASIC (Beginners All Purpose
Symbolic Intruction Code) yang merupakan bahasa awal dari VB.NET
5. Beginners All Purpose Symbolic Intruction Code dibuat oleh Professor John
Kemeny dan Thomas Kurtz dari Kampus Darmouth pada pertengahan tahun
1960-an (Deitel & Deitel, 1999)
6. Graphical User Interface (GUI) dibuat dengan berbagai cara yang disebut
sebagai VISUAL.
7. Kode baris tidak perlu dituliskan saat kita hendak melakukan instruksi
pemrograman.
8. Objek yang akan kita gunakan hanya perlu di “drag” lalu “drop”
9. Bahasa Visual Basic merupakan satu dari berbagai bahasa pemrograman
komputer yang sudah mendukung object (Pemrograman Berorientasi Objek
/Object Oriented Programming = OOP)
72
Platform Microsoft .NET terdiri dari lima komponen utama yang tersusun dalam
tiga lapisan (layer). Lapisan paling bawah adalah sistem operasi; lapisan kedua terdiri
dari tiga komponen; lapisan teratas adalah Visual Studio .NET.
73
.NET menyediakan strong typing, dimana setiap variabel wajib didefiniskan
scope dan tipe datanya. Demikian pula dengan fasilitas type safety yang sangat
bermanfaat untuk membantu dalam coding pemrograman, terutama fasilitas
intellisense yang membimbing pemrogram dalam menentukan property, method,
maupun function yang akan dipakai.
4. Cross Platform Possibility
.Net menyimpan dan mengirim data dalam bentuk XML yang merupakan
format data universal di internet. Dengan demikian integrasi data antar platform
lebih mudah dilakukan, selama platform tersebut mendukung XML. Manipulasi
format data dalam bentuk XML, .txt, maupun .rtf merupakan sesuatu yang
menantang para programmer untuk membuat aplikasi lintas platform.
5. Code Once, More Application
Interface pemrograman bersifat konsisten, dengan object model yang sama
pada setiap bahasa yang digunakan. Suatu object baik berbentuk class, library,
maupun web services dapat diakses dengan mudah oleh berbagai aplikasi
windows maupun web.
74
Setelah tampilan splash screen selanjutnya akan ditampilkan halaman Start Page Visual
Studio 2010 sebagai berikut:
Project merupakan kerangka dasar aplikasi yang menentukan jenis aplikasi yang
akan dibuat. Langkah-langkah pembuatan project adalah sebagai berikut:
1. Jalankan Visual Basic 2010
2. Pada bagian Start Page pilih New Project
3. Pada bagian New Project pilih bahasa Visual Basic, Project Types: Windows
dan Templates: Windows From Application
4. Klik OK
dll
3 Smart Smart Device Project
Device dll
77
4 Label Name Label3
Text Program Studi
5 Textboxt Name Txtnama
6 Combobox Name Cbjeniskelamin
Items Laki-laki Perempuan
DropDownList
DropDownStyle
S1 - Teknik Informatika S1 -
Sistem Informasi
D4 - Komputerisasi
Akuntansi
D3 - Komputerisasi
Akuntansi
D4 - Manajemen
Informatika
D4 - Sistem Komputer
DropDownStyle
DropDownList
78
Jalankan aplikasi dengan menekan tombol F5 atau melalui ikon Start Debugging di
toolbar, atau melalui menu Debug > Start Debugging
4.3.1.1 Variabel
Variabel adalah nama atau simbol yang digunakan untuk mewakili suatu
nilai.Suatu variabel mempunyai nama dan menyimpan tipe data yang merupakan jenis
data variabel.
Aturan penamaan variabel adalah sebagai berikut:
1. Harus dimulai dengan sebuah huruf
2. Tidak lebih dari 255 karakter
3. Tidak boleh sama dengan nama statement, fungsi, metode, objek, dan
sebagainya yang merupakan bahasa dari Visual BASIC.
4. Tidak boleh ada spasi, tanda titik(.), tanda seru(!), atau karakter @, &, $, dan
#.
Data
Byte 1 byte 0 sampai 255
Integer 2 byte -32.768 sampai 32.767
Long 4 byte -2.147.483.648 sampai 2.147.483.647
Single 4 byte -3,402823E38 sampai -1,401298E-45;
79
Double 8 byte -1.79769313486232E308 sampai -4,94065645841247E-
324;
4,94065645841247E-324 sampai
1.79769313486232E308
Currency 8 byte -922.337.203.685.477,5808 sampai
922.337.203.685.477,5807
2. Tipe Data String: digunakan untuk menyimpan data berbentuk
karakter.Panjang maksimal karakter yang dapat disimpan adalah 65.400
karakter. Penulisan data dengan tipe ini diawali dan diakhiri dengan tanda
petik dua (“).
Contoh:
Dim Nama As String Nama = “Dewi”
3. Tipe Data Logika (Boolean): melakukan pengetesan logika. Data dengan tipe
data ini hanya dapat bernilai benar (True) atau salah (False).
Contoh:
Dim Baru As Boolean Baru = True
4.3.1.2 Konstanta
Konstanta adalah suatu nilai konstan yang tidak berubah. Seperti halnya
variabel, konstanta dapat diberi nama dimana aturan penamaannya sama
dengan variabel.
Contoh:
Const A = 10
4.3.1.3 Operator
1. Operator Nilai Pemberi
Deklarasi pemberian nilai pada Visual BASIC = Bahasa BASIC yaitu menggunakan
operator sama dengan ( = ).
Contoh :
a = 24
nama = “Fery Updi”
80
2. Operator Aritmatika
Operator Operasi
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
\ Pembagian dengan hasil bilangan bulat
Mod Sisa pembagian (Modulus)
3. Operator Boolean
Operator Operasi
Not Negasi
And Logika and
Or Logika or
Xor Logika xor
4. Operator Pembanding
Operator Operasi
= Sama dengan
<> Tidak sama dengan
< Kurang dari
> Lebih dari
<= Kurang dari atau sama dengan
>= Lebih dari atau sama dengan
5. Derajat Operator
Operator Operasi
Not Tertinggi
* / \ mod and
+ - or xor
= <> <= >= Terendah
81
Latihan Praktikum
1. Buatlah Form baru dengan nama frmkalkulator
2. Buatlah sebuah kalkulator sederhana yang bisa melakukan operasi penambahan,
pengurangan, pembagian dan perkalian antara dua buah bilangan yang diinputkan
oleh user.
3. Desain form kalkulator sederhana ini kurang lebih sebagai berikut:
Text Hasil
5 Textboxt Name Txtangka1
6 Textboxt Name Txtangka2
7 Textboxt Name Txthasil
8 Button Name btjumlah
Text +
82
9 Button Name btkurang
Text -
10 Button Name btbagi
Text /
Text *
Jalankan aplikasi dengan menekan tombol F5 atau melalui ikon Start Debugging di
toolbar, atau melalui menu Debug > Start Debugging
83
Gambar 4.9 Hasil Latihan Praktikum
84
..
<Pernyataan_n>
End If
Contoh :
Ucapan = “Selamat”
End If
If <Kondisi> Then
<Pernyataan_Jika_Kondisi_Benar>
Else
<Pernyataan_Jika_Kondisi_Salah>
End If
Contoh:
85
d. If...Then dengan kondisi jamak.
If <Kondisi_1> Then
<Pernyataan>
ElseIf <Kondisi_2>
Then
<Pernyataan>
...
<Pernyataan>
Else
<Pernyataan>
End If
Contoh:
Mengulang”
End If
86
2. Statement Select ... Case
<Pernyataan_1>
Case <Nilai_2>
<Pernyataan_2>
Case Else
<Pernyataan_n>
End Select
Contoh:
Select Case
Nilai
Case “A”
Sintaks:
Keterangan = “Sangat Memuaskan”Case “B”
Keterangan = “Memuaskan”
Case “C”
Keterangan = “Cukup”
Case Else
Keterangan = “Kurang”
End Select
87
Latihan Praktikum
Buatlah sebuah form baru pada Visual BASIC .NET, desain tampilan form sehingga
didapat tampilan seperti berikut:
88
6 Label Name Label5
Text Diskon
7 Label Name Label6
Text Bonus
9 Textbox Name Txtnabar
10 Textbox Name Txtharga
11 Textbox Name Txtjumlah
12 Textbox Name Txttotalharga
13 Textbox Name Txtdiskon
14 Textbox Name Txttotalbayar
15 Textbox Name Txtbonus
16 Button Name Bthitung
Text Hitung
17 Button Name Btulang
Text Ulang
18 Button Name Btkeluar
Text Keluar
Pada program diatas perhitungan dilakukan dengan kriteria sebagai berikut:
Total Harga = Harga Satuan x Jumlah Barang Diskon dan Bonus, didapat dengan
ketentuan:
Total Harga Diskon Bonus
>=500rb 20% Tas Pinggang
200rb – 500rb 15% Payung
100rb – 200rb 10% Kaos
50rb – 100rb 5% Pena
<50rb 0 Tiidak Ada
Total Bayar = Total Harga – Diskon
89
Tuliskan kode berikut ini:
Jalankan aplikasi dengan menekan tombol F5 atau melalui ikon Start Debugging di
toolbar, atau melalui menu Debug > StartDebugging
90
Gambar 4.11 Hasil Program
91
Statemen ini digunakan untuk kondisi yang mempunyai nilai berurutan dan
variable yang mempunyai nilai numerik. Default untuk Step adalah 1, jadi
untuk perulangan dengan urutan menaik 1, nilai step tidak perlu ditulis.
Sedangkan untuk perulangan menurun (Ni lai awal > Nilai Akhir), nilai step
diawali dengan tanda minus(-).
Misalnya :
For i = 10 To 1 Step -1.
Contoh:
Untuk mencetak angka 1 sampai 10 secara berurutan pada objek ListBox dapat
dilakukan dengan memberi listing program sebagai berikut:
For i = 1 To 10
List1.Additem i
Next i
2. Do ... Loop
Statemen ini mengulang blok statemen bila kondisi benar atau sampai
kondisi menjadi benar. Bila tidak ada perintah keluar, proses perulangan (loop)
akan terus berlangsung. Statemen ini digunakan untuk kondisi yang
mempunyai nilai tidak pasti dan tidak berurutan.
Statemen ini memiliki dua buah bentuk logika:
a. Statemen Do...Loop...While
Statemen ini akan mengerjakan pernyataan dalam blok
statemen ketika kondisi bernilai benar, dan akan berhenti ketika kondisi
sudah bernilai salah.
Sintaks:
Do While <Kondisi> Do
<Pernyataan_1> <Pernyataan_1>
92
Contoh:Untuk mencetak angka 1 sampai 10 secara berurutan pada
ListBox dapat dilakukan dengan memberi listing program sebagai
berikut:
i=1
Do While i <= 10
List1.Additem i
i=i+1
Loop
b. Statement Do…Loop…Until
Statemen ini akan mengerjakan pernyataan dalam blok
statemen ketika kondisi bernilai salah, dan akan berhenti ketika kondisi
mencapai nilai benar.
Sintaks:
Do Until <Kondisi> Do
<Pernyataan_1> <Pernyataan_1>
i=1
Do
List1.Additem i
i=i+1
Loop Until i > 10
Latihan Praktikum
Buatlah sebuah form baru pada Visual BASIC .NET, desain tampilan form
sehingga didapat tampilan seperti pada gambar berikut :
93
Gambar 4.12 Desain Form Perulangan
Aturlah properti object sebagai berikut:
No Object Property Nilai
1 Form Name Frmpengulanganteks
Text Frmpengulanganteks
2 Label Name Label1
Text Proses
8 Button Name Bclear
Text Clear
9 Button Name Bkeluar
Text Keluar
94
Untuk penulisan koding sebagai berikut :
95
Latihan Praktikum perulangan 2
Teks Frmperulangan2
2 Listbox Name Listbox1
3 Button Name Bfor
Text Do … While
5 Button Name Buntil
Text Do … Until
6 Button Name Bkeluar
Text Keluar
96
Tuliskan Koding program sebagai berikut :
97
4.3.1.6 Array
Suatu array yang nilai dan ukurannya yang sudah ditentukan terlebih
dahulu, dan memiliki satu dimensi
Bentuk umum
Contoh
Suatu array yang fungsinya hampir sama dengan array satu dimensi
hanya saja pada array multi dimensi ini mewakili nilai table yang terdiri dari
informasi yang diatur dalam ba ris dan kolom. Untuk mendefenisikan elemen
table tertentu, kita harus menentukan dua indeks, pertama mengidentifikasi
elemen baris dan yang mengidentifikasi elemen kolom. Array multidimensi
memiliki lebih dari dua dimensi.
Bentuk umum
Contoh
Arr(0, 0) = "NIM"
Arr(0, 1) = "NAMA"
98
Arr(2, 0) = "Laki-laki" Arr(2, 1) = "Perempuan"
99
Contoh:
end sub
c. Pemanggilan procedure
HitungVal(textAwal.Text)
2. Function (Fungsi)
Fungsi mempunyai banyak kemiripan dengan sub procedure.
Bedanya, fungsi selalu mengembalikan nilai (return value)
Sintaks fungsi dituliskan sebagai berikut :
Keterangan :
Perbedaan antara fungsi dengan procedure hanyalah pada pengembalian
nilai saja (return value). Sebagai contoh :
100
Menggunakan argument berupa nilai (by value) dan reference (by reference)
Pengembalian nilai dapat dilakukan dengan menggunakan operator
assignment “=” pada fungsi atau biasanya dengan perintah return.
if cekData()=true then
HitungRef(textAwal.text)
else
messageBox.Show(“Data yang dimasukkan bukan
angka”, ”Kesalahan data”, MessageBoxButtons.OK,
MessageBoxIcons.Error)
endif
Pemanggilan Fungsi:
3. Modul (Module)
Modul merupakan bagian yang sengaja dipisahkan untuk memudahkan
pemrograman. Dalam module dapat dimasukkan procedure dan fungsi dan kemudian
digunakan oleh beberapa form.
a. Umumnya modul dideklarasikan secara public (public) agar dapat
digunakan di dalam kode dimanapun
b. Modul dapat diisi dengan main procedure yang akan dijala nkan pertama
kali saat program dimulai
c. Modul merupakan salah satu argumentasi code reuse yang bertujuan agar
program lebih efesien.
101
Module moduleName
Statement
End Module
Sintaks pembuatan module sebagai berikut :
Module Module
Public intResponce, RoleId, Msg As Integer
Public Username, Password, Nama As String
End Module
Contoh
Latihan Praktikum
Buatlah sebuah form baru pada Visual BASIC .NET, desain tampilan form sehingga
didapat tampilan seperti pada gambar
103
Bab 5
Implementasi Pemrograman-1
5.1 Normalisasi
a. Unnormalisasi
kode_produksi kode_barang_masuk kode_akun
tgl_produksi Faktur nama_akun
jumlahProduksi tgl_masuk kateg_perkiraan
satuan kode_supplier No_transaksi
JenisProduksi keterangan tgl_transaksi
deskripsi no_transaksi kode_akun_debit
104
b. Normalisasi 1NF
Tr_JU
PK No_transaksi
tgl_transaksi
kode_akun_debit
kode_akun_kredit
keterangan
saldo
input_user
tgl_input
105
c. Normalisasi 2NF
Tr_master_barangmasuk Tr_JU
Tr_plan_produksi
PK kode_barang_masuk PK No_transaksi
PK kode_produksi
Faktur tgl_transaksi
tgl_produksi tgl_masuk kode_akun_debit
jumlahProduksi kode_supplier kode_akun_kredit
satuan keterangan keterangan
JenisProduksi no_transaksi ** saldo
deskripsi input_user
hasil_produksi tgl_input
tgl_selesai_produksi Tr_detail_barangmasuk
input_petugas
tgl_input PK kode_bahan
kode_barang_masuk **
qty
tr_master_permintaan_bahan harga
PK kode_request
master_petugas
tgl_request
kode_produksi** Tr_hasil_produksi1 PK id_petugas
keterangan PK kode_produksi
input_petugas Nama_petugas
tgl_input kode_BJ Jabatan
qty_produksi Password
tgl_produksi user_entry
input_user tgl_entry
tr_detail_permintaan_bahan tgl_input
PK kode_seq
kode_request **
kode_bahan tbl_mst_penjualan
qty
PK no_penjualan
tgl_penjualan
tr_master_pengeluaran_bahan kode_customer
totalPenjualan
PK Kode_pengeluaran totalPembelian
id_petugas
tgl_pengeluaran tgl_input
kode_request** no_transaksi **
keterangan
input_petugas
tgl_input
tbl_dtl_penjualan
PK no_penjualan
tr_detail_pengeluaran_bahan
kode_produksi **
PK kode_pengeluaran qty_jual
hargasatuan
kode_seq **
kode_bahan **
qtyKeluar
106
d. Normalisasi 3NF
Tr_plan_produksi
Tr_master_barangmasuk Tr_JU
PK kode_produksi
PK kode_barang_masuk PK No_transaksi
tgl_produksi
jumlahProduksi Faktur tgl_transaksi
satuan tgl_masuk kode_akun_debit**
JenisProduksi kode_supplier ** kode_akun_kredit**
deskripsi keterangan keterangan
hasil_produksi no_transaksi ** saldo
tgl_selesai_produksi input_user
input_petugas tgl_input
tgl_input
Tr_detail_barangmasuk
PK kode_bahan
master_perkiraan
tr_master_permintaan_bahan kode_barang_masuk **
qty PK kode_akun
PK kode_request harga
kode_kategori
tgl_request nama_akun
kode_produksi** Tr_hasil_produksi1 kateg_perkiraan
keterangan
input_petugas PK kode_produksi
tgl_input
kode_BJ
qty_produksi
tgl_produksi
master_petugas
input_user
tr_detail_permintaan_bahan
tgl_input PK id_petugas
PK kode_seq
Nama_petugas
kode_request ** Jabatan
kode_bahan Password
qty tbl_mst_penjualan user_entry
tgl_entry
PK no_penjualan
tr_master_pengeluaran_bahan tgl_penjualan
kode_customer ** master_supplier
PK Kode_pengeluaran totalPenjualan PK Kode_supplier
totalPembelian
tgl_pengeluaran id_petugas Nama_supplier
kode_request** tgl_input Alamat
keterangan no_transaksi ** kota
input_petugas
Telp
tgl_input
input_petugas
tanggal_input
tbl_dtl_penjualan
tr_detail_pengeluaran_bahan PK no_penjualan
master_customer
PK kode_pengeluaran kode_produksi **
PK Kode_customer
qty_jual
kode_seq ** hargasatuan
kode_bahan ** Nama_customer
qtyKeluar Alamat
kota
Telp
Keterangan:
PK : Primary Key
** : Foreign Key
107
5.2 ERD (Entity Relationship Diagram)
Kode_supplier
kode_akun nama_akun
Nama_Supplier
kode_kategori kateg_perkiraan
Alamat
kota No_transaksi keterangan
id_petugas Password
master_suplier master_perkiraan
Telp tgl_transaksi saldo
M Nama_petugas user_entry M
input_petugas kode_akun_debit input_user
Jabatan tgl_entry kode_akun
Tanggal_input Kode_supplier id_petugas id_petugas
kode_akun_kredit tgl_input
1 1 M
Menambahkan master_petugas membuat Tr_ju
1
kode_barang_masuk id_petugas kode_produksi
kode_barang_masuk No_transaksi
Faktur M
kode_produksi
tgl_masuk membuat
tr_master_barang tgl_produksi
kode_supplier
masuk jumlahProduksi
keterangan M
1 satuan
input_petugas kode_barang_masuk
JenisProduksi
tgl_input
memiliki tr_plan_produksi
deskripsi
kode_bahan kode_bahan hasil_produksi Kode_seq kode_bahan
M 1
kode_barang_masuk tgl_selesai_produksi kode_request qty
tr_detail_barang
qty input_petugas
masuk
harga kode_produksi tgl_input kode_request Kode_seq
JU_no_transaksi M
M 1
tr_master_permintaan tr_detail_permintaan_
Menambahkan memiliki
_bahan bahan
1
kode_request kode_request keterangan Kode_seq
M tgl_request input_petugas
kode_produksi tgl_input mengeluarkan
Kode_pengeluaran
1
kode_bahan kode_pengeluaran kode_pengeluaran Kode_pengeluaran
M 1 1
tr_detail_pengeluaran_ tr_master_pengeluaran
kode_produksi memproduksi memiliki
bahan _bahan
Kode_BJ
1 kode_produksi
qty_produksi kode_pengeluaran kode_bahan
Kode_pengeluaran keterangan
Tgl_produksi Tr_hasil_produksi kode_seq qtyKeluar tgl_pengeluaran input_petugas
Input_user kode_request tgl_input
M Kode_customer
tgl_input
kode_produksi Kode_customer Nama_customer
M Alamat
menjual master_customer
kota
no_penjualan
Telp
tgl_penjualan M no_penjualan
kode_customer input_petugas
totalPembayaran
1
id_petugas no_penjualan
tgl_input
memiliki
no_penjualan
M
no_penjualan
kode_produk
qty_jual tbl_dtl_penjualan
hargasatuan
JU_no_transaksi
Keterangan:
M: Many
108
Perancangan Database
a. Tabel Petugas
Nama tabel : master_petugas
Primary Key : id_petugas
Tabel 3. 1 Tabel Petugas
Field Type Text Size Keterangan
Jabatan Varchar 20
Password Varchar 20
user_entry Varchar 20
tgl_entry DateTime
b. Tabel Supplier
Nama tabel : master_supplier
Primary Key : Kode_supplier
Tabel 3. 2 Tabel Petugas
Field Type Text Size Keterangan
Nama_supplier Varchar 50
kota Varchar 50
Telp Varchar 12
input_petugas Varchar 20
tanggal_input DateTime
109
c. Tabel Customer
Nama tabel : master_customer
Primary Key : Kode_customer
Tabel 5. 1 Tabel Customer
Field Type Text Size Keterangan
Nama_customer Varchar 50
kota Varchar 50
Telp Varchar 12
input_petugas Varchar 20
tanggal_input DateTime
d. Tabel Perkiraan
Nama tabel : master_perkiraan
Primary Key : kode_akun
Tabel 5.2 Tabel Perkiraan
Field Type Text Size Keterangan
kode_kategori Varchar 5
nama_akun Varchar 50
kateg_perkiraan Varchar 50
110
Tabel 5.3 Tabel Produksi Order
Field Type Text Size Keterangan
tgl_produksi Date
jumlahProduksi Double 20
satuan Varchar 10
JenisProduksi Varchar 30
hasil_produksi Double 20
tgl_selesai_produksi Date
input_petugas Varchar 10
tgl_input DateTime
tgl_request Date
kode_produksi Varchar 10
input_petugas Varchar 20
tgl_input DateTime
111
g. Tabel Detail Permintaan Bahan
Nama tabel : tr_detail_permintaan_bahan
Primary Key : kode_seq
Seq
Tabel 5.5 Tabel Detail Permintaan Bahan
Field Type Text Size Keterangan
kode_request Varchar 10
kode_bahan Varchar 10
qty Double 20
tgl_pengeluaran Date
kode_request Varchar 10
input_petugas Varchar 20
tgl_input DateTime
112
i. Tabel Detail Pengeluaran Bahan
Nama tabel : tr_detail_pengeluaran_bahan
Primary Key : kode_pengeluaran
Tabel 5.7 Tabel Detail Pengeluaran Bahan
Field Type Text Size Keterangan
kode_seq Integer 11
kode_bahan Varchar 10
qtyKeluar Double 20
Faktur Varchar 11
tgl_masuk Date
kode_supplier Varchar 20
input_petugas Varchar 20
tgl_input DateTime
113
k. Tabel Detail Barang Masuk
Nama tabel : tr_detail_barangmasuk
Primary Key : kode_bahan
Tabel 5.9 Tabel Detail Barang Masuk
Field Type Text Size Keterangan
kode_barang_masuk Varchar 10
qty Double 20
harga Double 20
JU_no_transaksi Varchar 50
kode_BJ Varchar 50
qty_produksi Double 20
tgl_produksi Date
input_user Varchar 50
tgl_input DateTime
114
m. Tabel Master Penjualan
Nama tabel : tbl_mst_penjualan
Primary Key : no_penjualan
Tabel 5.11 Tabel Master Penjualan
Field Type Text Size Keterangan
tgl_penjualan Date
kode_customer Varchar 50
totalPenjualan Double 20
totalPembayaran Double 20
id_petugas Varchar 20
tgl_input DateTime
kode_produk Varchar 10
qty_jual Double 20
hargasatuan Double 20
JU_no_transaksi Varchar 50
115
o. Tabel Jurnal Umum
Nama tabel : tr_ju
Primary Key : No_transaksi
Tabel 5.13 Tabel Jurnal Umum
Field Type Text Size Keterangan
tgl_transaksi Date
kode_akun_debit Varchar 10
kode_akun_kredit Varchar 10
saldo Double 20
input_user Varchar 20
tgl_input DateTime
116
Sistem
Informasi
Perbanding
an Rasio
Laporan
Bahan Harga
Supplier
Masuk Pokok
Produksi
Petugas
Produksi Jurnal
Karyawan
Order Umum
Permintaan
Perkiraan Buku Besar
BB dan BP
Lap.
Master BB Pengeluaran
BB dan BP
Neraca
dan BP
Saldo
Lap.
Penjualan Perubahan
Modal
Transaksi
Lap.
Jurnal
Neraca
Umum
Closing
Lap. Arus
Bahan
Kas
Produksi
Closing
Hasil Lap. Rasio
Produksi
Dekomposisi
117
5.3 Data Flow Diagram (DFD)
a. Context Diagram
118
b. DFD Level 0
119
120
c. DFD Level 1 Akses
121
Gambar 5.9 DFD Level 1 Master
122
Gambar 5.10 DFD Level 1 Transaksi
f. DFD Level 4 Laporan
123
Gambar 5.11 DFD Level 1 Laporan
Desain Halaman Program
Berikut ini desain halaman program yang sedang dirancang oleh penulis:
a. Halaman Intro
Halaman ini merupakan form Login yang akan digunakan user untuk mengakses
form-form lainnya.
FORM LOGIN
Login Cancel
124
b. Halaman Menu
Halaman ini merupakan form menu dari rancangan program yang akan dibuat.
FORM PETUGAS
125
d. Halaman Form Supplier
Halaman ini merupakan rancangan halaman yang akan digunakan untuk
menginput data supplier
FORM SUPPLIER
FORM KARYAWAN
126
Gambar 5.16 Halaman Form Karyawan
f. Halaman Form Perkiraan Akun
Halaman ini merupakan rancangan halaman yang akan digunakan untuk
menginput data perkiraan akun
FORM PERKIRAAN
127
FORM MASTER BAHAN BAKU DAN PENOLONG
128
i. Halaman Form Barang Masuk
Halaman ini merupakan rancangan halaman yang akan digunakan untuk
menginput transaksi Pembelian bahan
129
FORM PRODUKSI ORDER
131
FORM HASIL PRODUKSI
132
FORM PENJUALAN
133
FORM JURNAL UMUM
134
Bab 6
Implementasi Pemrograman-2
135
15. Simpan table dengan nama MAHASISWA
16. Tutup Ms Access
17. Ketik kode program di bawah ini
136
137
18. Isikan Data Mahasiswa
138
10. Isikan data Mata Kuliah
141
142
6.3 FORM DATA PEMAKAI
143
Keterangan :
ComboBox TXTJABATAN diisi dengan DOSEN dan ADMINISTRASI (Propertie Items)
Kode programnya sebagai berikut :
144
145
146
147
6.4 FORM PENGAMPU MATA KULIAH
148
10. Ketik kode program di bawah ini
149
6.5 FORM DATA NILAI MAHASISWA
150
7. Double klik file PROJECTNILAI.SLN untuk membuka project Nilai
8. Klik menu Project ⇒ Add Windows Form untuk menambahkan form baru
9. Ketik nama form FORMNILAI
10. Klik tombol Add
11. Buat Desain form berikut
151
19. Ketik kode program di bawah ini
152
153
154
155
156
6.6 MENCETAK DATA DENGAN CRYSTAL REPORT
157
158
DAFTAR PUSTAKA
Raharjo Budi, 2021, “Sistem Manajemen Database “, Semarang : Yayasan Prima Agus Teknik
Rozikin Khoirur, 2021, “Aplikasi Inventory Barang Dengan Visual Basic .Net “, Semarang : Yayasan
Prima Agus Teknik
Santoso Joseph T, 2021, “Pemrograman Kompetitif “, Semarang : Yayasan Prima Agus Teknik
Sudirman Bagus , 2021, “VB .NET Untuk Pemula “, Semarang : Yayasan Prima Agus Teknik
Wibowo Agus , 2022, “Dasar Komputer Digital “, Semarang : Yayasan Prima Agus Teknik
159
IMPLEMENTASI
PEMROGRAMAN
Visual VB.NET
Indra Ava Dianta, S.Kom., M.T
PENERBIT :
YAYASAN PRIMA AGUS TEKNIK
JL. Majapahit No. 605 Semarang
Telp. (024) 6723456. Fax. 024-6710144
Email : [email protected]