Perancangan Basis Data Buttom Up dengan Normalisasi

[basis.data|akuntansi|lab.software|per.15]

Dikenal dua pendekatan dalam merancang basis data yaitu top down dan buttom up. Top down biasanya dilakukan untuk sistem yang benar-benar baru, tidak pernah dilakukan transaksi sebelumnya walaupun secara manual. Atau jika ingin merombak sistem yang terdahulu yang tidak sesuai lagi dengan proses bisnis yang efisien. Sebagian besar e-commerce yang bermunculan saat ini (toko online maupun aplikasi taksi/ojek online) berbasis top down karena memang benar-benar baru.

Postingan ini khusus membahas metode buttom up yang lebih sederhana karena hanya mengkonversi transaksi manual menjadi terkomputerisasi juga online. Cara kerjanya menganalisa kebutuhan berdasarkan arsip-arsip manual yang ada misalnya nota penjualan, nota pembelian, dan laporan-laporan yang sebelumnya ada. Metode ini lebih sederhana dalam pengalihan sistem karena operator-operator tidak perlu belajar intensif karena proses yang ada tetap seperti sebelumnya, hanya mungkin perlu pelatihan penggunaan aplikasi sebagai pengganti sistem manual sebelumnya. Perhatikan sampel arsip nota penjualan di bawah ini. Bagaimana proses normalisasinya?

Ada beberapa jenis normalisasi tabel yaitu unnormalize (UNF), normal pertama (1NF), normal kedua (2NF), dan normal ketiga (3NF). Ada bentuk normal lainnya karena adanya konstrain terhadap relasi yang dimiliki misalnya Boyce-Code Normal Form (BCNF), normal keempat (4NF) dan kelima (5NF).

Unnormalize Form (UNF)

Bentuk normal ini gunanya untuk mendata calon-calon atribut suatu tabel. Adanya perulangan (redundancy) dan multivalue (satu field berisi lebih dari satu isian) diijinkan. Jadi contoh di atas bentuk UNF-nya adalah:

penjualan = no_nota + kode_kasir + nama_kasir + kode_customer + nama_customer + alamat + {kode + nama_barang + harga + jumlah} + total

Primary key diberi symbol “@”. Perhatikan adanya multivalue di atas yang diberi simbol “{ }”. Tugas berikutnya untuk normal pertama adalah membuat tabel tersebut dapat dibuat dalam satu tabel tanpa melanggar konsep basis data relational. Note: untuk basis data non-relational (berbasis objek) multivalue dapat diterapkan.

First Normal Form (1NF)

Penghilangan multivalue dapat dilakukan dengan cara membuat kunci komposit antara barang dengan penjualan. Kandidatnya adalah kode barang + no_nota sebagai primary key-nya.

Penjualan = @no_nota + @kode + kode_kasir + nama_kasir + kode_customer + nama_customer + alamat + nama_barang + harga + jumlah + total

Walaupun terdapat redundansi, misalnya no_nota yang sama tetapi karena primary key menggunakan gabungan no_nota dan kode barang maka selama gabungan keduanya unik, tidak melanggar prinsip primary key. Terkadang beberapa kunci kandidat bisa diidentifikasi untuk proses lebih lanjut, misalnya kode_customer dan kode_kasir.

Second Normal Form (2NF)

Untuk normal kedua, syarat mutlaknya selain 1NF adalah ketergantungan fungsional (functional dependency) antara satu atribut dengan atribut lainnya. Perhatikan bentuk 1NF sebelumnya, keluarkan (bentuk tabel baru) jika ada atribut yang tergantung dengan salah satu primary key (no_nota saja atau kode barang saja). Tercatat ada beberapa antara lain:

  1. nama_barang, harga dan jumlah tergantung kode
  2. kode_customer, nama_customer, alamat dan total, kode kasir dan nama kasir tergantung no_nota.

Nama, harga dan jumlah tergantung kode barang begitu juga yang terlibat transaksi penjualan (pelanggan dan kasir) tergantung nota penjualan. Karena kedua ketergantungan parsial di atas (partial dependency) hanya tergantung pada salah satu kunci komposit primary key, maka harus dihilangkan agar memenuhi syarat 2NF.

  1. barang = @kode + nama_barang + harga
  2. penjualan =@no_nota + kode_kasir + nama_kasir + kode_customer + nama_customer + alamat + total
  3. detilpenjualan = @no_nota + @kode + jumlah

Perhatikan tidak ada atribut yang tergantung secara parsial.

Third Normal Form (3NF)

Bentuk 2NF jika masih terdapat ketergantungan secara transitif antara satu atribut dengan atribut lainnya harus dinormalkan agar bisa menjadi normal ketiga. Perhatikan tabel penjualan yang memiliki beberapa atribut non-key ternyata antara satu atribut tergantung dengan atribut lainnya:

  1. nama_kasir tergantung kode_kasir
  2. nama_customer dan alamat tergantung kode_customer

Oleh karena itu perlu dibuat dua tabel baru. Tabel penjualan hanya menyertakan kunci tamu (foreign key) saja dengan simbol “#” di depannya.

  1. kasir = @kode_kasir + nama_kasir
  2. Pelanggan = @kode_customer + nama_customer + alamat
  3. barang = @kode + nama_barang + harga
  4. penjualan =@no_nota + #kode_kasir + #kode_customer + total
  5. detilpenjualan = @no_nota + @kode + jumlah

Jika tidak ada lagi ketergantungan transitif pada tiap-tiap atribut non-key maka proses normalisasi ketiga telah selesai. Biasanya sampai 3NF saja jika tidak ada konstrain/batasan-batasan ketat atribut tertentu, misalnya harga barang yang tergantung dari pelanggan tertentu, dan lain-lain. Semoga ujian akhir nanti lancar.

Membuat Slide Master di Power Point

[komputer.1|manajemen|lab.sainstech|pert.13]

Slide master merupakan salah satu fasilitas pada Microsoft Power Point untuk mengatur tampilan seluruh slide yang ada. Untuk mempraktekannya cukup mudah, setelah memilih disain yang diinginkan masuk ke View – pilih Slide Master.

Pilih jenis slide yang akan dibuatkan masternya, misalnya bentuk judul + point. Berikutnya dengan mengeset slide tersebut maka akan merubah seluruh slide yang dibuat (new – slide/ctrl-m) dengan format tersebut. Salah satu fungsi yang bisa dimanfaatkan pada slide master adalah hyperlink antar slide.

Membuat Hyperlink

Buat terlebih dahulu outline dari presentasi yang akan dibuat. Outline ini akan dibuatkan link ke target slidenya.

Hyperlink dibuat dengan menyorot salah satu outline tersebut dilanjutkan dengan klik kanan – Hyperlink.

Pilih “Place in This Document” yang artinya mengarahkan hyperlink ke file power point yang sedang dikerjakan dilanjutkan dengan memilih slide yang ingin menjadi target, misalnya PENDAHULUAN. Lanjutkan dengan outline yang lain. Setelah selesai jangan lupa keluar dari Master Slide dengan masuk ke menu Slide Master dan tekan Close Master View. Tes dan pastikan hyperlink berfungsi dengan baik. Selamat mencoba.

Persamaan Persepsi Dosen

Selain mendengar dari orang lain, saya mengalami sendiri konflik yang terjadi antara satu dosen (bahkan satu grup dosen) dengan yang lain. Korbannya sudah dipastikan mahasiswa, khususnya ketika menyelesaikan tahap akhir penyelesaian skripsi/tugas akhir mereka. Biasanya terjadi karena ego antar dosen selain tentu saja beda pemahaman terhadap suatu konsep dan aturan-aturan yang memang ada hak independen dari sisi pengajar dalam berfikir ilmiah. Untuk masalah ego memang sedikit rumit, apalagi ada unsur-unsur konflik pribadi antar dosen. Postingan ini sedikit menggambarkan kondisi ini dari pengalaman pribadi.

Persamaan Persepsi

Untuk bidang tertentu yang skripsinya mirip-mirip antara satu sama lain dengan metode-metode yang sudah baku, sebuah pertemuan yang mengundang para dosen sangat penting. Manfaatnya untuk membuat standar yang baku dan adil terhadap mahasiswa. Misalnya topik-topik apa saja yang masuk wilayah domain jurusan dengan bentuk laporan skripsinya. Hal ini agar tidak membuat siswa bingung karena oleh satu dosen di suruh begitu, oleh dosen pembimbing yg lain disalahkan, kan kasihan. Juga dengan pertemuan itu, diharapkan kemampuan pembimbing bisa bertambah, minimal tidak jomplang satu dengan lainnya, apalagi jika disertakan dengan pelatihan/seminar oleh dosen yang dianggap pakar di bidangnya. Atau bisa mengundang pakar dari institusi lain.

Standar Tingkat Kesulitan

Sudah pasti tingkat kesulitan antara mahasiswa D3, S1, S2 dan Doktoral berbeda. Repotnya beberapa dosen guna mengejar publikasi menyamakan level D3, S1 dan S2 terhadap mahasiswanya. Melihat mahasiswa D3 yang diminta menganalisa antara satu metode dengan metode lainnya oleh dosen pembimbing kasihan juga. Walaupun ada baiknya tetapi tidak sesuai dengan tujuan D3 yang memang ketika bekerja hanya diminta menyelesaikan pekerjaan dengan metode tertentu yang diperintahkan oleh atasannya, harus selesai dengan baik dan cepat. Jika ngotot dan protes kalau metodenya kalah dengan yang lain bakal dipecat nanti. Jadi fokus ke skill pada level vokasi diutamakan. Level S1 pun berbeda dengan S2 yang mencoba ada aspek analisa satu metode dengan lainnya. Bukan hanya apa yang harus dilakukan tetapi juga mengapa suatu konsep diperlukan dan lebih baik dari konsep dan metode lainnya. Untuk mahasiswa doktoral terlepas dari pertanyaan apa, mengapa dan bagaimana, aspek kebaruan sangat mutlak, walau pun sederhana/kecil. Silahkan membimbing mahasiswa doktoral jika ingin publikasinya banyak dan jangan memaksa mahasiswa S1 apalagi D3 untuk bisa mempublikasi di jurnal internasional yang memang dituntut state of the art.

Standar Internasional

Terkadang walaupun sudah ada persamaan persepsi antara satu dosen dengan lainnya, ketika implementasi di lapangan, ada hal-hal tertentu berbeda pemahamannya karena memang topik yang luas yang tidak bisa selalu disamakan. Jika terjadai ada baiknya menggunakan dasar dan rujukan yang baik dan benar. Untungnya saat ini sebagian besar sudah ada standarnya, misal UML, ERD, dan lainnya. Jadi tidak elok jika memaksakan metode sendiri (tidak standar). Salah satu contoh kasus di bawah ini, tentang ERD.

ERD di atas merupakan standar dari Chen (1976) dan karena sekedar contoh, tidak semua atribut ditulis. Tetapi yang jelas ERD merupakan diagram konsep. Ada polemik mahasiswa yang menggambar diagram di atas disalahkan oleh pembimbing (biasanya praktisi/programmer) karena diagram di atas tidak bisa dijalankan di aplikasi. Tentu saja, karena itu masih konsep dan perlu konversi menjadi tabel, dan ada teorinya (weak entity, many to many, dan lainnya untuk dikonversi menjadi tabel). Silahkan menggunakan beragam standar/jenis model ERD lain (crow foot) atau dengan class diagram UML berstandar internasional. Baik perancang sistem maupun programmer harus bisa bekerja sama bukan malah mengagung2kan bidangnya apalagi menjelek-jelekan bidang lain. Mungkin itu sekadar contoh, semoga bisa menjadi bahan evaluasi bersama.

Insert Data Multitable dengan PHP

[s.basis.data|akuntansi|lab.soft|per.14]

Pertemuan ini mencoba membuat aplikasi berbasis web dengan PHP untuk memasukan data baru ke basis data. Sebagai informasi, semua file-file PHP diletakan di folder ..\xampp\htdocs\ sementara basis data diletakan pada folder ..\xampp\mysql\data.

Insert Data yang Melibatkan Satu Tabel

Postingan ini menggunakan data pertemuan yang lalu. Misalnya input data barang dengan form berupa tabel yang dibuat dengan mode HTML. Struktur dari file PHP nya dapat digambarkan sebagai berikut.

  • <Judul Form>
  • <Metode Form: POST, Action: simpan.php>
  • <Interface untuk Input-input Data>
  • <Interface Untuk Tombol Submit>

Struktur php di atas (misal diberi nama formbarang.php) membutuhkan file simpan.php untuk mengeksekusi isian yang telah diisi. Struktur simpan.php adalah kira-kira sebagai berikut:

  • <Membuat koneksi>
  • <Membuat variabel $ untuk tiap input data dari formbarang.php>
  • <Membuat SQL insert data dengan VALUE dari variabel tersebut>
  • <Eksekusi SQL dan tutup koneksi>

Koneksi bisa dibuat di file simpan.php atau membuat satu file php khusus untuk koneksi. Untuk PHP 7 instruksi mysql diganti menjadi mysqli yang membutuhkan link koneksi tiap eksekusi. Silahkan browsing kode detail dari file php tersebut yang banyak tersebar di internet. Berikut contoh hasil eksekusinya.

Pastikan ketika tombol SIMPAN ditekan pada tabel barang data baru muncul. Berikutnya untuk form yang melibatkan dua tabel.

Insert Data yang Melibatkan 2 Tabel

Sebagai contoh adalah tabel pembelian yang melibatkan tabel pembelian dan tabel pemasok (suplier). Karena pelanggan harus sesuai dengan tabel. Kode suplier pada tabel pemasok merupakan kunci tamu (Foreign Key) di tabel pembelian. Struktur file pembelian.php adalah sebagai berikut:

  • <Judul Form>
  • <Membuat Koneksi>
  • <Membuat Form Methode :POST, Action: simpanbeli.php>
  • <Membuat SQL mengambil data suplier>
  • <Menyiapkan Array Javascript utk menampung hasil>
  • <Membuat pilihan dari data suplier>
  • <Menyimpan variabel $ array hasil pilihan>
  • <Interface input data>
  • <Interface submit / insert data>
  • <Fungsi Javascript mengisi input data berdasarkan $ array>

Form ini mirip sebelumnya tetapi sedikit rumit karena perlu menyiapkan data suplier sebagai pilihan dalam bentuk combo box. Ketika satu suplier dipilih, maka data lainnya seperti Nama, Alamat, dan Kontak muncul di interface input data. Untuk total diisi manual, biasanya total ini diinput otomatis dari form transaksi yang lebih detil (melibatkan data barang lebih dari satu). Karena sekedar contoh bagaimana menginput data yang melibatkan dua tabel, kiranya cukup sekedar demo. File simpanbeli.php diperlukan untuk menyimpan data pembelian. Berikut strukturnya:

  • <Membuat koneksi>
  • <Membuat variabel $ untuk tiap input data dari pembelian.php>
  • <Membuat SQL insert data dengan VALUE dari variabel tersebut>
  • <Eksekusi SQL dan tutup koneksi>

Kode untuk tombol simpan mirip simpan data barang sebelumnya. Tinggal copas dan ganti variabel dengan variabel $ baru mengikuti nama dari input data di file php sebelumnya yang memanggil (pembelian.php). Testing apakah sudah berjalan dengan baik.

Untuk detil yang melibatkan pembelian lebih dari satu barang sehingga membutuhkan isian dinamis (muncul isian baru ketika ada penambahan) perlu dicoba, juga pembuatan aplikasinya pada android. Semoga bermanfaat.

Migrasi ke PHP versi 7 itu Wajib

Semester ini teknik kompilasi, information retrieval, algoritma, pengolahan citra dan basis data menjadi santapan sehari-hari (karena mengajar). Teknik kompilasi membahas teknik-teknik parsing suatu bahasa pemrograman. Ada informasi bahwa PHP versi 5 ke bawah sangat rentan dan mudah dimanipulasi parsing-nya. Dan yang terpenting PHP 5 akan dihentikan dukungannya per 31 Desember 2018 nanti. PHP sendiri saya gunakan sebagai praktek dalam mata kuliah sistem basis data. Berikut edaran dari Badan Siber dan Sandi Negara (BSSN) mengenai hal tersebut.

Yuk, Install Versi 7.x

Silahkan unduh PHP versi terbaru di SINI. Pada postingan ini saya mencoba menggunakan versi terbaru itu. Coba pilih versi 7.3 yang terbaru ketika postingan ini ditulis.

Ukuran XAMPP untuk PHP 7.3 ini cukup kecil, hanya sekitar seratusan mega byte. Isi dari XAMPP dapat dilihat saat proses instalasi. Oiya, gunakan login Administrator agar instalasi optimal, karena ada pesan / warning ketika tidak menggunakan login itu.

Intal XAMPP ini satu paket dalam Bitnamiyang mensuport paket Drupal, Joomla, Moodle dan WordPress. Lanjutakan dengan menekan Next> hingga proses instalasi selesai.

Testing XAMPP yang Baru

Dimulai dengan pemilihan bahasa, control panel XAMPP muncul ketika aplikasi pertama kali dijalankan. Hidupkan server database dan PHP untuk memulai aplikasi (wah .. ada Tomcat .. jadi trauma waktu S2 dulu). Seperti biasa windows minta konfirmasi apakah kedua server itu dihidupkan, tekan saja OK.

Coba saya migrasi beberapa file terdahulu (php dan mysql) untuk testing. Misalnya input data barang.

Ternyata tampilan XAMPP jika dijalankan localhost langsung menuju dashboard yang menginformasikan tentang versi 7.3 dari PHP ini.

Tampak berhasil insert satu data baru. Silahkan migrasi ke PHP versi 7 agar tenang dan nyaman, khususnya bagi admin web (sementara mungkin, karena serangan terus terjadi mencari kelemahan-kelemahan yang mungkin ada). Semoga bermanfaat.

Ketika acara FGD (dua dari kanan)

Sumber Belajar Pemrosesan Teks dan Perolehan Informasi

Saat ini informasi sangat mudah didapat karena era Big Data dengan konsep 5V-nya (Velocity, Veracity, Volume, Value, dan Variability). Walaupun bagi praktisi Big Data ada konsep “data yang buruk lebih baik daripada tidak ada data” tetapi bagi pelajar dan mahasiswa, dibutuhkan sumber-sumber yang memang dibutuhkannya. Banyak ebook-ebook berkualitas baik banyak dijumpai di internet baik lewat situs sharing ataupun via media sosial seperti Whatsapp. Namun toh, para mahasiswa kurang begitu berminat membacanya (bahkan saya pun agak malas ..). Tapi ya, kalo bisa sih dibaca sampai habis.

Untuk pemrosesan teks, text mining, atau perolehan informasi salah satu buku andalannya adalah terbitan MIT press (C. Manning) dengan teori-teori dasarnya. Ada juga buku karangan Banch tentang Text Mining dengan praktek aplikasinya dengan Matlab. Kebanyakan karena saking “dasanya” jadi sulit untuk diterapkan langsung seperti bagaimana implementasinya di search engine seperti Google atau Bing.

Berbicara mengenai search engine, bagi mahasiswa atau saya juga, yang ingin belajar cepat sekelebat karena limit waktu yang terbatas, Google dkk menjadi andalan utama setelah situs-situs diskusi di internet. Modal dasar yang harus dimiliki tentu saja kemampuan berbahasa Inggris. Walaupun ada translate google, tetap harus bisa bahasa Inggris jika tidak ingin repot bolak-balik buka kamus.

Ada proyek-proyek online yang beredar di internet, salah satunya adalah situs ini yang menyediakan contoh sample data yang akan diolah.

Bagaimana cara mengolahnya? Silahkan download buku Text Mining with Matlab karya Banch, atau datang ke situs-situs diskusi, misalnya tentang pembuatan model bahkan membuat mesin yang bisa membuat sebuah kalimat dengan beberapa kata kunci.

Saya sempat mencobanya. Pertama-tama dengan Matlab 2008. Ternyata dengan versi tersebut banyak masalah yang dijumpai karena sudah tertinggal jauh. Silahkan gunakan yang terkini. Beberapa fungsi m-file perlu diunduh agar bisa berfungsi, dan lumayan bisa dipakai untuk mengutak-atik teks. Mungkin pembaca punya alternatif lain yang lebih baik, silahkan ber-komentar. Yuk, belajar text mining.

Membaca Cepat .. dan Rampung

Entah mengapa akhir-akhir ini di Facebook bermunculan iklan-iklan seminar membaca cepat. Dulu sempat mengulas masalah membaca cepat ini, bahkan membaca satu buku yang dipinjam di perpustakaan untuk belajar dan menguji kecepatan membaca. Tetapi terlepas dari cepat atau lambatnya membaca tentu saja jangan lupa tujuan membaca yaitu menyerap ilmu dan yang pasti harus selesai.

Sedikit berbagi pengalaman, buku di atas adalah buku wajib mata kuliah Information System Development and Management (ISDM). Waktu itu sebelum perkuliahan dimulai (beberapa minggu), saya membacanya sampai habis. Terus terang jarang saya membaca buku sampai habis, bahkan sampai soal-soalnya. Waktu itu berlalu dan saya anggap biasa saja. Tetapi belakangaan baru sadar mengapa waktu itu bisa membaca dengan cepat buku tersebut sementara belakangan tidak pernah selesai satu buku seperti waktu itu. Postingan ini bermaksud mereviewnya.

Pemenggalan Kalimat

Membaca cepat tentu saja mata tidak melihat kata perkata (apalagi sambal komat-kamit). Mengapa buku tersebut bisa dibaca cepat? Ternyata format tulisannya dua kolom dan ukuran huruf mudah dilihat. Karena dari ujung kiri kalimat ke kanan masih dalam jangkauan mata maka mata saya hampir tidak bergerak dari kiri ke kanan menyusuri kalimat, melainkan hanya naik turun ganti baris. Sepertinya jika ingin diterapkan ke buku dengan single column mau tidak mau harus memenggal kalimat menjadi beberapa “rombongan” kata. Kuat dugaan saya waktu itu cepat selesai membacanya karena secara tidak sengaja memenggal kalimat dengan bantuan dua kolom buku tersebut.

Rileks

Waktu libur, tidak ada tugas atau tuntutan tertentu membuat ketika membaca menjadi rileks. Dengan rileks ternyata bisa cepat memahami, bukan sekedar cepat membaca. Percuma mata cepat mengikuti tulisan tetapi karena gugup, tidak ada yang masuk ke otak, seperti angin lalu saja. Jadi rilekslah ketika membaca dan tentu saja tidak belajar kebut semalam ketika mau ujian saja. Membaca bisa di mana saja, tidak harus di atas meja belajar, bisa diiringi musik dengan secangkir kopi.

Menggambarkan (Picturing)

Selain dua hal di atas, ketika membaca buku tersebut saya berimajinasi terhadap kata-kata kunci suatu kalimat. Kalimat sebelum ini jika dengan menggambarkan saya akan menggambarkan “membaca buku” dalam artian seperti melihat orang membaca buku di depan mata (bukan sekedar dua kata membaca dan buku). Ketika membaca judul buku “Modern System Analysis and Design” pun sudah ada di kepala bayangan analisa dan disain modern dengan teknik-tekniknya pada buku itu. Cepatkah? Ternyata jika terbiasa, bisa juga menggambarkan dengan cepat, apalagi jika bahasa Indonesia. Tetapi untuk bahasa Inggris cukup membantu juga karena ketika menguji membaca cepat dari buku tips-trik karangan asing dengan contoh tulisan asing juga terkadang mata cepat bergerak tetapi lupa memaknai beberapa kata penting, akibatnya cepat tapi ketika diuji (biasanya min skor 80) gagal, jadi terlalu cepat tapi kurang memahami.

Alhasil nilai A mata kuliah tersebut di tangan, nilai yang penting karena syarat GPA 3.5 untuk kandidasi doktoral tercapai apalagi jika ada nilai B mata kuliah lain. Ditambah lagi rekan kuliah mengupdate status facebook di grup yg jika diterjemahkan: dapat “A” .. yes yes yes, dapat “B+” .. cukuplah, dapat “B” .. sialan, dapat “C” .. bye bye PhD. Status yang bikin stress mahasiswa doctoral lainnya yang dapat nilai di bawah B+. Semoga menghibur.