Tampilkan postingan dengan label pemrograman. Tampilkan semua postingan
Tampilkan postingan dengan label pemrograman. Tampilkan semua postingan

6 MySQL - Jenis Relasi dalam Relational Database

logo mysql


Jenis Relasi dalam Relational Database


Relasi dalam basis data merupakan keterhubungan antar tabel satu dengan tabel yang lainnya dalam sebuah basisdata. 

Tujuan dari relasi adalah menghubungkan database yang memiliki ikatan, sehingga ketika terjadi proses transaksi (Insert, Update, Delete) dalam database data dapat saling tersinkronisasi antara satu dengan yang lainnya. Terdapat tiga jenis relasi yang terdapat pada basisdata antara lain sebagai berikut.



1) One to One (1 to 1) 

Artinya Setiap baris data dari tabel pertama dapat dihubungkan ke satu baris atau lebih data pada tabel ke dua. 

Contohnya  relasi antara tabel presiden dan tabel negara. Satu presiden hanya bisa memimpin satu Negara saja, jadi setiap presiden hanya akan memiliki satu hubungan dengant tabel, begitu juga sebaliknya.

1 to 1
Gambar 1 One to One


Gambar 1 One to One merupakan sebuah perumpamaan relasi yang terjadi pada tabel yang memiliki hubungan satu ke satu. 



2) One to Many (1 to N)

Setiap baris data dari tabel pertama dapat dihubungkan ke satu baris atau lebih data pada tabel ke dua. Contohnya relasi presiden dengan menteri. 

Jadi satu presiden bisa memiliki banyak menteri  namun satu orang menteri tidak bisa memiliki banyak presiden.

One to Many
Gambar 2 One to Many


Gambar 2 One to Many merupakan sebuah perumpamaan relasi yang terjadi pada tabel yang memiliki hubungan satu ke banyak. 


3) Many to Many (N to N)

Satu baris atau lebih data pada tabel pertama bisa dihubugkan ke satu atau lebih baris data pada tabel ke dua: Artinya ada banyak baris di tabel satu dan tabel dua yang saling berhubungan satu sama lain.

Contohnya relasi antar tabel mahasiswa dan tabel mata kuliah. Satu baris mahasiswa bisa berhubungan dengan banyak baris mata kuliah begitu juga sebaliknya.

Gambar 3 Many to Many
Gambar 3 Many to Many 


Gambar 3 Many to Many merupakan sebuah perumpamaan relasi yang terjadi pada tabel yang memiliki hubungan banyak ke banyak. 

Tabel yang memiliki rlasi ini tidaklah disarankan karena dapat menyebabkan penggandaan data.



5 MySQL - Jenis - jenis Key Atau Kunci dalam Relational Database

Logo Mysql


Key atau kunci adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris pada data dalam suatu tabel secara unik, artinya jika suatu atribut dijadikan sebuah key maka tidak boleh ada baris data yang mempunyai nilai yang saman untuk atribut tersebut

Fungsi key dapat dikatakan sebagai index atau kunci utama ketika kita akan mencari data dalam sebuah database. key yang disebutkan diatas memilki beberapa bagian yaitu:


Key Pada Relational Database


1) Super Key

Satu atau lebih atribut yang dapat membedakan setiap baris data dalam sebuah tabel secara unik. Bisa jadi ada lebih dari satu kumpulan atribut yang yang bersifat super key dalam sebuah tabel. Contoh super key misalnya: Nim, Nama, alamat, Tgl_lahir.

2) Candidate Key

Merupakan kumpulan atribut minimal yang dapat membedakan setiap baris dalam sebuah tabel secara unik. Sebuah candidate key tidak boleh berisi atribut atau kumpulan atribut yang telah menjadi superkey yang lain, contoh: nim, nama(jika tidak ada nilai yang berulang didalamnya).

3) Primary Key

Primary Key adalah atribut merupakan candidate key yang telah dipilih untuk mengidentifikasi setiap record secara unik. 

Primary Key harus merupakan atribut yang benar-benar unik dan tidak boleh ada nilai NULL. Primary Key adalah suatu nilai dalam basis data yang digunakan untuk mengidentifikasi suatu baris dalam tabel. Contoh: NIM.

4) Alternate Key

Alternate Key adalah primary key yang tidak terpilih. Misal : dalam suatu entitas terdapat dua atribut yang bisa dijadikan sebagai primary key. 

Sementara yang boleh dijadikan primary hanya satu, maka kita harus memilih salah satu. Atribut yang dipilih, disebut primary key. sedangkan atribut yang tidak dipilih disebut dengan alternate key. 

Contohnya misalkan ada no_ktp dan NIM dalam sebuah tabel, maka kedia atribut tersebut dapat dijadikan sebagai primary key, namun hanya ada satu primary key dalam sebuah tabel jadi harus dipilih salah satu saja.

5) Foreign Key

Jika sebuah primary key terhubungan ke tebel lain, maka keberadaan primary key pada tersbut di sebut sebagai foreign key. 

Foreign key adalah atribut dalam satu relasi yang digunakan untuk menunjuk ke suatu baris pada relasi yang lain, jadi foreign key ini digunakan untuk membuat sebuah relasi yang trerjadi antara tabel A dengan tabel B, dimana ketika tabel A memebuat sebuah relasi dengan tabel B maka di tabel B primary key tabel A akan menjadi foreign key di tabel B.

6) Composite Key

Composite Key adalah key yang terdiri dari dua atau lebih atribut yang secara unik mengidentifikasi suatu entitas. 

Setiap atribut yang membentuk key senyawa adalah key sederhana. Composite key terjadi karena dalam sebuah tabel tidak ditemukannya sebuah primary key, jadi agar tidak melakukan pembuatan primary key baru maka dibuatlah sebuah composite key yaitu biasanya merupakan gabungan dari dua buah foreign key,  sehingga tidak ada data yang sama yang akan dimunculkan.




4 MySQL - Normalisasi Basisdata/Database dan Contohnya

logo mysql


Normalisasi memiliki 7 tahapan yang dapat dilakukan untuk membuat sebuah database menjadi bentuk normal, umumnya normalisasi dilakukan sampai tahap normal ketiga saja yang sudah dianggap baik.

Ketika membuat sebuah basisdata, tidak semua data yang dirancang akan langsung berada pada tempat yang tepat. 

Karena hal itu diperlukan untuk melakukan normalisasi. Normalisasi merupakan langkah yang dilakukan dalam perancangan database untuk membentuk entitas yang sederhana, mengihalangkan atau mencegah terjadinya pengulangan data (redudansi), meningkatkan fleksibelitas dan efisiensi serta membuat database dapat digunakan dalam rentang waktu yang panjeng (mudah beradaptasi)

Database yang belum di normalisasi dapat menyebabkan terjadinya anomali baik itu dalam proses Insert, Update maupun Delete



Anomali Normalisasi


Insert Anomali: Anomali yang terjadi ketika memasukan data kedalam sebuah tabel, hal biasa yang ditemukan adalah field yang kosong atau tidak terisi karena tidak ada data

Delete Anomali: Anomali yang terjadi ketika menghapus data didalam sebuah tabel, hal ini bisa terjadi karena field yang memiliki ketergantungan secara penuh dengan sebuah field yang ada di tabel lain, maka jika kita menghapus sebuah data di tabel maka data di tabel lain akan ikut terhapus

Update Anomali: Anomali yang terjadi ketika mengubah data yang sudah ada, misalnya tidak ada primary key dan foreign key di setiap tabel, artinya ketika kita mengupdate data di sebuah tabel data yang terkait di tabel lain harus dirubah secara manual karena tidak adanya foreign key dan primary key



Tahap Normalisasi


Dalam melakukan normalisasi, kita akan melalui 7 tahapan, dimana pada kejadian umumnya normalisasi dilakukan sampai dengan tahap normal 3, tetapi masih bisa dilanjutkan ketika ada field atau tabel yang masih belum normal

1) Bentuk tidak normal

Bentuk tidak normal merupakan kumpulan data yang didapatkan dari sumber data, tidak ada format tertentu untuk melakukan penulisan data yang didapat, data dapat saja data tidak lengkap atau terduplikasi. 

Data yang dikumpulkan sesuai dengan saat data tersebut diinput.  Penulisan data pada sumber dalam bentuk tidak normal adalah sebagai berikut:

Bentuk Tidak Normal
Gambar 1 Bentuk Tidak Normal


Dapat diketahui pada Gambar 1 semua data dimasukan sesuai dengan apa adanya, tidak ada ketentuan yang mengikat untuk menuliskan normal pertama ini.


2) Normal Pertama (1NF)

Pembentukan normal pertama menggunakan beberapa syaratar yang harus dipenuhi. Syarat normal pertama (1-NF) adalah sebagai berikut:
a. setiap data dibentuk dalam flat file, data dibentuk dalam satu record demi satu record nilai dari field berupa “atomic value”.
b. tidak ada set atribut yang berulang atau bernilai ganda.
c. telah ditentukannya primary key untuk tabel / relasi tersebut.
d. tiap atribut hanya memiliki satu pengertian.

normal pertama
Gambar 2 Normal Pertama


Pada Gambar 2 semua data dimasukan kedalam tabel agar memenuhi semua kolom tabel yang ada.


3) Normal Kedua (2NF)

Bentuk normal kedua didasari atas konsep full functional dependency (ketergantungan fungsional sepenuhnya) yang dapat didefinisikan sebagai berikut. 

Jika A adalah atribut-atribut dari suatu relasi, B dikatakan full functional dependency (memiliki ketergantungan fungsional terhadap A, tetapi tidak secara tepat memiliki ketergantungan fungsional dari subset (himpunan bagian) dari A. Syarat normal kedua (2-NF) sebagai berikut:
a. Bentuk data telah memenuhi kriteria bentuk normal kesatu.
b. Atribute bukan kunci (non-key) haruslah memiliki ketergantungan fungsional sepenuhnya (fully functional dependency) pada kunci utama / primary key.

Gambar 3 Tabel tb_suplier
Gambar 3 Tabel tb_suplier


Gambar 3 Tabel tb_suplier merupakan tampilan dari tabel tb_supplier  yang berisikan data G01 untuk kode supplier dan Gobel nustra untuk nama suplier.

Gambar 4 tb_barang
Gambar 4 tb_barang


Gambar 4 merupakan tampilan dari tabel tb_barang  yang berisikan tiga kolom yaitu kode barang, nama barang dan harga satuan.

Gambar 5 tb_faktur
Gambar 5 tb_faktur 


Gambar 5 tb_faktur merupakan tampilan dari tabel faktur yang berisikan tujuh kolom yaitu No_faktur, kode_barang, kode_suplier, tanggal faktur, jatuh tempo, qty dan total


4) Normal Ketiga (3NF)

Walaupun relasi 2-NF memiliki redudansi yang lebih sedikit dari pada relasi 1-NF, namun relasi tersebut masih mungkin mengalami kendala bila terjadi anomaly peremajaan (update) terhadap relasi tersebut. Syarat normal ketiga (Third Normal Form / 3 NF) sebagai berikut:
a. Bentuk data telah memenuhi kriteria bentuk normal kedua.
b. Atribute bukan kunci (non-key) harus tidak memiliki ketergantungan transitif, dengan kata lain suatu atribut bukan kunci (non_key) tidak boleh memiliki ketergantungan fungsional (functional dependency) terhadap atribut bukan kunci lainnya, seluruh atribut bukan kunci pada suatu relasi hanya memiliki ketergantungan fungsional terhadap primary key di relasi itu saja.
c. Seluruh atribut non-primary key pada relasi Pelanggan dan Biaya di atas terlihat memiliki ketergantungan fungsional (functional dependency) terhadap primary key dari masing-masing tabel / relasi. Relasi/tabel Pelanggan dan Biaya di atas tidak memiliki ketergantungan transitif (transitive dependency), sehingga tabel tersebut telah memenuhi.

Gambar 6 tb_suplier
Gambar 6 tb_suplier 


Gambar 6 tb_suplier merupakan tampilan dari tabel tb_suplier  yang berisikan data G01 untuk kode_supplier dan Gobel_nustra untuk nama_suplier. Sama seperti pada normal kedua.

Gambar 7 tb_transaksi
Gambar 7 tb_transaksi


Gambar 7 tb_transaksi merupakan tampilan dari tabel tb_transaksi yang berisikan kolom kode barang, nomor faktur, qty dan harga.

Gambar 2.8 tb_faktur
Gambar 2.8 tb_faktur


Gambar 2.8 tb_faktur merupakan tampilan dari tabel tb_faktur  yang berisikan kolom no faktur, kode suplier, tangggal faktur, jatuh tempo, total.
 
tb_barang
Gambar 2.9 tb_barang


Gambar 2.9 tb_barang merupakan tampilan dari tabel tb_barang  yang berisikan data kolom kode, nama_barang, Harga_satuan.


5) Boyce-Code Normal Form (BCNF)

Suatu relasi disebut memenuhi bentuk normal Boyce-Codd jika dan hanya jika semua penentu (determinan) adalah candidate key (atribut yang bersifat unik). 

BCNF merupakan bentuk normal sebagian perbaikan terhadap 3NF. Suatu relasi yang memenuhi BCNF selalu memenuhi 3NF, tetapi tidak untuk sebaliknya, Suatu relasi yang memenuhi 3NF belum tentu memenuhi BCNF. 

Dalam banyak literatur disebutkan bahwa BCNF adalah perbaikan dari 3NF, karena bentuk normal ketigapun mungkin masih mengandung anomali sehingga masih perlu dinormalisasi lebih lanjut. BCNF memiliki ketentuan yaitu:
a. Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap Functional Dependency terhadap setiap atribut atau gabungan atribut dalam bentuk : X –> Y maka X adalah Super Key.
b. Tabel tersebut harus di dekomposisi berdasarkan Functional Dependency yang ada, sehingga X menjadi super key dari tabel-tabel hasil dekomposisi.
c. Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF. Perbedaannya, untuk Functional Dependency X –> A, BCNF tidak membolehkan A sebagai bagian dari primary key.
d. Properti penting BCNF adalah relasi tidak memiliki informasi yang redundan.

BCNF dengan normal 3NF memiliki perbedaan. Adapun perbedaan dari normal BCNF dengan normal 3NF adalah sebagai berikut :
a. Pada BCNF suatu atribut yang bergantung secara fungsional terhadap primary key , mungkin saja merupakan kunci primer bagi atribut yang lain.
b. Pada 3NF hal ini bisa saja terjadi dan tidak menjadi masalah.


6) Normal Keempat (4NF)

Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued attribute. 

Setiap multivalued attribute (MVD) juga harus merupakan Functional Dependency.


7) Normal Kelima (5NF)

Bentuk normal 5NF terpenuhi jika memiliki sebuah loseloss decomposition menjadi tabel-tabel yang lebih kecil. 

Jika 4 bentuk normal sebelumnya dibentuk berdasarkan Functional Dependency, 5NF dibentuk berdasarkan konsep Join Dependence. 

Yakni apabila sebuah tabel telah di dekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi untuk membentuk tabel semula.





Ladangtekno

3 MySQL - Langkah yang Harus Dilakukan dalam Membuat Sebuah Program Basisdata/Database

logo mysql


Pembuatan sebuah basis data memerlukan proses yang cukup panjang karena menjadi salah satu inti dari keseluruhan program yang akan kita buat.

Sebelum kalian merancang sebuah basisdata kalian bisa membaca terlebih dahulu mengetahui apa itu database khusunya disini MySQL dan tipe-tipe data yang ada didalamnya serta kalian juga harus memahami mengapa kita harus memilih tipe data yang tepat dalam pembuatan sebuah basisdata

Pembuatan basisdata merupakan salah satu tahap awal yang dilakukan dalam merancang sebuah sistem. Disini akan ditentukan jenis basisdata yang digunakan, jenis data yang digunakan dan juka akan sangat mempengaruhi performa sistem nantinya.

Disini saya menjelaskan beberapa tahap yang harus dilakukan ketika kalian ingin membuat sebauh basisdata agar basisdata yang kalian buat dapat efisien di sistem kalian nantinya.


oke langsung saja ya..., Tahapan untuk membuat sebuah basisdata


1) Pengumpulan Data

Pada tahap ini kita melakukan indentifikasi dan analisa kebutuhan data yang nanti akan digunakan dalam pembuatan basisdata. 

Untuk mengetahui seberapa besar kebutuhan data yang kita butuhkan, maka kita harus tau bagian -bagian dari sistem informasi yang akan terlibat atau menggunakan database kita, seperti pengguna dan aplikasi yang digunakan dan juga perlu diperhatikan keguaan atau fungsi apa yang akan dilakukan oleh user dan aplikasi yang digunakan.


2) Perancangan Database Secara Konseptual

Pada tahapan ini akan dihasilkan skema dari database yang kita buat. Tahapan perancangan database secara konseptual mempunyai dua aktifitas secara parallel.

a. Perancangan skema konseptual

Perancangan skema konseptual yaitu menguji kebutuhan - kebutuhan dari suatu database yang merupakan hasil dari tahap pertama dan akan menghasilkan sebuah skema konseptual database. 

b. Perancangan transaksi

Perancangan transaksi yaitu menguji aplikasi-aplikasi database dimana kebutuhannya telah diteliti pada tahap pertama, dan menghasilkan rincian-rincian transaksi. Transaksi-transaksi ini akan digunakan untuk memanipulasi database suatu saat dimana database itu diaplikasikan.


3) Pemilihan DBMS

Pemilihian database dipengaruhi oleh faktor teknik, organisasi dan ekonomi. Faktor -faktor ini akan mempengaruhi satu sama lain,diantaranya yaitu: 
a. Struktur data
b. Subjek yang akan menggunakan sistem yang dibuat
c. Layanan penjual: yaitu untuk memecahkan beberapa masalah sistem.



4) Perancangan Datbase Secara Logika (Data Model Mapping)

Pada tahap ini kita akan membuat sebuah skema konseptual dan skema eksternal pada model data dari DBMS yang terpilih. 

Pada tahap ini, skema konseptual ditransformasikan dari model tingkat tinggi yang digunakan pada tahap kedua ke dalam model data dari model data dari DBMS yang dipilih pada tahap ketiga. Pemetaan tersebut dapat diproses dalam dua tingkat.

a. Pemetaan Sistem Independent

Pemetaan sistem independent adalah pemetaan ke dalam DBMS dengan tidak mempertimbangkan karakteristik atau hal – hal khusus yang berlaku pada implementasi DBMS dari implementasi model tersbut. 

b. Penyesuaian Skema ke DBMS yang Spesifik

Skema yang dihasilkan pada langkah pertama akan disesuaikan pada implementasi di masa yang akan datang dari suatu model data yang digunakan pada DBMS yang ditentukan.

Hasil dari tahap ini memakai perintah-perintah DDL (Data Definition Language) dalam bahasa DBMS yang dipilih yang menentukan tingkat skema konseptual dan eksternal dari sistem database. 

Tetapi dalam beberapa hal, perintah-perintah DDL memasukkan parameter-parameter rancangan fisik sehingga DDL yang lengkap harus menunggu sampai tahap perancangan database secara fisik telah lengkap.

Tahap ini dapat dimulai setelah pemilihan sebuah implementasi model data sambil menunggu DBMS yang spesifik yang akan dipilih. 

Contoh: jika memutuskan untuk menggunakan beberapa relational DBMS tetapi belum memutuskan suatu relasi yang utama. Rancangan dari skema eksternal untuk aplikasi-aplikasi yang spesifik seringkali sudah selesai selama proses ini.


5) Perancangan Database Secara fisik

merupakan proses pemilihan struktur penyimpanan dan jalur akses pada file-file database untuk mencapai performa yang terbaik pada bermacam-macam aplikasi. 

Selama tahap ini, dirancang spesifikasi-spesifikasi untuk database yang disimpan yang berhubungan dengan struktur-struktur penyimpanan fisik, penempatan record dan jalur akses. 

Berhubungan dengan internal schema (pada istilah 3 level arsitektur DBMS).Beberapa petunjuk dalam pemilihan perancangan database secara fisik.

a. Response time

Waktu yang telah berlalu dari suatu transaksi database yang diajukan untuk menjalankan suatu tanggapan. 

Pengaruh utama pada response time adalah di bawah pengawasan DBMS yaitu : waktu akses database untuk data item yang ditunjuk oleh suatu transaksi. 

Response time juga dipengaruhi oleh beberapa faktor yang tidak berada di bawah pengawasan DBMS, seperti penjadwalan, sistem operasi atau penundaan komunikasi.

b. Space utility

Jumlah ruang penyimpanan yang digunakan oleh file-file database dan struktur-struktur jalur akses.

c. Transaction throughput

Rata-rata jumlah transaksi yang dapat diproses permenit oleh sistem database, dan merupakan parameter kritis dari sistem transaksi (misal : digunakan pada pemesanan tempat di pesawat, bank, dll). Hasil dari fase ini adalah penentual awal dari struktur penyimpanan dan jalur akses untuk file-file database.

6) Implementasi Sistem Database

Setelah perancangan secara logika dan secara fisik selesai, selanjutnya kita dapat menjalankan sistem database. 

Perintah-perintah dalam DDL dan SDL (Storage Definition Language) dari DBMS yang dipilih, dihimpun dan digunakan untuk membuat skema database dan file-file database. 

Sekarang database tersebut dimuat  dengan datanya. Jika data harus dirubah dari sistem komputer sebelumnya, perubahan-perubahan yang rutin diperlukan untuk format ulang datanya yang kemudian dimasukkan ke database yang baru. 

Transaksi-transaksi database sekarang harus dilaksanakan oleh para programmmer aplikasi. Spesifikasi secara konseptual diuji dan dihubungkan dengan kode program dengan perintah - perintah dari embedded DML yang telah ditulis dan diuji.





Ladangtekno

2 MySQL - Mengapa Pemilihan Tipe Data Itu Penting dalam Database

2 MySQL - Mengapa Pemilihan Tipe Data Itu Penting dalam Database



  • Mengapa Pemilihan Tipe Data dalam Database Memiliki Perang Penting

Karena dalam database tipe data akan menentukan seberapa besar kapasitas memory yang akan digunakan oleh database yang kita buat, jadi dengan melakukan pemilihan data yang tepat maka database yang kita buat akan menjadi lebih efisien dari segi penggunaan, penyimpanan ataupun sumber daya. 

Pemilihan tipe data yang tepat juga penting dalam meminimalisir kesalahan, misalnya ada data yang akan diinputkan berupa character tapi kita mengisikan tipe data pada field tersebut dengan integer, sehingga akan terjadi eror. Eror ini dapat membuat kita harus mengubah beberapa komponen yang ada dalam database yang kita sudah desain sebelumnya.

Tidak hanya pemilihan dalam jenis tipe data saja, kita juga perlu memperhitungkan panjang serta jenis karakter yang kita akan gunakan dalam field, misalnya ketika menginputkan umur tentu saja filed integer terlalu panjang untuk digunakan kalian bisa menggunakan tinyint misalnya untuk menghemat penggunaan memory

Memang dalam database dalam skala yang kecil penggunaan memory ini tidak akan terlalu terlihat, tetapi jika sudah terjadi load yang tinggi dan data yang besar maka akan terasa memberatkan sistem dan penyimpanan


  • Cara Memperpanjang Umur Sistem Informasi dari Disi Data 

Bias saja dengan melakukan pengupdatetan data secara berkala, sehingga sistem informasi kita tidak akan ketinggalan dari segi data yang dimiliki.

Pengaman data juga sangat penting karena data merupakan salah satu unsur dari sistem informasi, jadi dengan terjaganya data – data yang ada maka sistem informasi yang kita buat akan dapat bertahan lebih lama, karena data tersebut tersimpan dengan aman. 

Pengamanan data dapat dilakukan dengan cara menggunakan program atau software antivirus dan melakukan enkripsi data, sehhingga orang luar ataupun penyusup  tidak akan bisa mengakases data dengan mudah.

Membuat cadangan data atau back-up juga merupakan salah satu hal yang perlu dilakukan guna menghindari terjadinya kehilangan data secara permanent, jadi ketika ada data yang hilang dalam sistem maka kita bias menggunakan cadangan data yang sudah ada.

Upgrade dari sistem yang ada juga diperlukan dilakukan agar sistem yang dimiliki dapat sesuai dengankebutuhan pengguna.




Ladangtekno

1 MySQL - Pengertian dan Tipe Data yang ada di MySQL


logo MySQL


Apa itu MySQL

MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL yang multithread, multi-user. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis di bawah lisensi GNU General Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL.

Tidak seperti PHP atau Apache yang merupakan software yang dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia yaitu MySQL AB. 

MySQL AB memegang penuh hak cipta hampir atas semua kode sumbernya. Orang Swedia dan Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson,



Jenis dan Tipe Data Yang Ada di MySQL

Tipe Data Numeric

Tipe data numeric dapat dibedakan menjadi dua kelompok yaitu tipe data Integer dan tipe data Floating Point. Tipe data Integer digunakan untuk data berupa bilangan bulat sedangkan tipe data Floating Point digunakan untuk tipe data berupa decimal.
a. TINYINT
  • Digunakan untuk menyimpan data bilangan bulat negatif dan bilangan bulat positif
  • Panjang karakter           : -128 sampai dengan 127
  • Kebutuhan memory      : 1 byte (8 bit)

b. SMALLINT
  • Digunakan untuk menyimpan data bilangan bulat negatif dan bilangan bulat positif
  • Panjang karakter           : -32.768 sampai dengan 32.767
  • Kebutuhan memory      : 2 bytes (16 bit)

c. MEDIUMINT
  • Digunakan untuk menyimpan data bilangan bulat negatif dan bilangan bulat positif
  • Panjang karakter           : -8.388.608 sampai dengan 8.388.607
  • Kebuthan memory        : 3byte (24bit)

d. INT
  • Digunakan untuk menyimpan data bilangan bulat negatif dan bilangan bulat positif
  • Panjang karakter           : -2.147.483.648  sampai dengan -2.147.483.647
  • Kebutuhan memory      : 4byte (32bit)
 
e. BIGINT
  • Digunakan untuk menyimpan data bilangan bulat negatif dan bilangan bulat positif
  • Panjang karakter           : -+ 9,22 x 1018 
  • Kebutuhan memory      : 8byte (64bit)

f. FLOAT
  • Digunakan untuk menyimpan data bilangan pecahan positif dan negative presisi tunggal
  • Panjang karakter          : -.402823466E+38 sampai dengan -1.175494351E-38, 0,   dan  1.175494351E-38 sampai dengan 3.402823466E+38
  • Kebutuhan memory     : 4byte ( 32bit)
g. DOUBLE
  • Digunakan untuk menyimpan data bilangan pecahan positif dan negative presisi ganda
  • Panjang karakter          : -1.79…E+308 sampai dengan -2.22…E-308, 0, dan 2.22…E-308 sampai dengan 1.79…E+308
  • Kebutuhan memory     : 8byte (64bit)


Tipe Data Date dan Time

Tipe data Date dan Time digunakan untuk menyimpan data tanggal dan waktu.  Baik itu dari detik, menit dan jam untuk time dan tanggal, bulan, tahun, untuk date. Beikut adalah field yang termasuk tipe data date time:
a. Date
  • Digunakan untuk menyimpan data tanggal
  • Jangkauan                    : 1000-01-01 sampai dengan 9999-12-31
  • Kebutuhan memory     : 3byte

b. Time
  • Digunakan untuk menyimpan data waktu
  • Jangkauan                    : -838:59:59 sampai dengan  +838:59:59
  • Kebutuhan memory     : 3byte

c. DateTime
  • Digunakan untuk menyimpan data berupa tanggal dan waktu
  • Jangkauan                    : 1000-01-01 00:00:00 sampai dengan 9999-12-31 23:59:59
  • Kebutuhan memory     : 8byte

d. Year
  • Digunakan untuk menyimpan data tahun dari tanggal
  • Jangkauan                    : 1900 sampai dengan 2155
  • Kebutuhan memory     : 1byte


Tipe Data String

Tipe data ini digunakan untuk menyimpan data berupa string atau text. Ciri utama dari tipe data ini adalah suatu data yang dimungkinkan untuk dikenal operasi aritmatika seperti pertambahan, pengurangan, perkalian, dan pembagian. Berikut ini adalah field yang termasuk tipe data string:
a. Char
  • Digunakan untuk menyimpan data string ukuran tetap
  • Panjang karakter          : 0 sampai dengan 255
  • Kebutuhan memory     : M bytes, 1<=M<=255

b. Varchar
  • Digunakan untuk menyimpan data string ukuran dinamis
  • Panjang karakter          :0 sampai dengan 255 atau 0 sampai dengan 65.535(v5.0.3)
  • Kebutuhan memory     : L+1bytes, dimana L<=M dan 1<=M<255

c. Tinytext
  • Digunakan untuk menyimpan data text
  • Panjang Karakter         : 0 sampai dengan 255
  • Kebutuhan memory     : L+1bytes,  l < 2^8

d. Text
  • Digunakan untuk menyimpan data text
  • Panjang karakter          : 0 sampai dengan 65.535 
  • Kebutuhan memory     : L+ 2bytes, L<2^16

e. Mediumtext
  • Digunakan untuk menyimpan data text
  • Panjang karakter          : 0 sampai dengan 224 – 1 karakter
  • Kebutuhan memory     : L + 3bytes, L < 2 ^ 24

f. Longtext
  • Digunakan untuk menyimpan data text
  • Panjang karakter          : 0 sampai dengan 232 – 1 karakter
  • Kebutuhan memory     : L + 4 bytes, L< 2^32


Tipe Data BLOB(Biner)

Tipe data BLOB digunakan untuk menyimpan data berupa biner. Tipe ini biasanya digunakan untuk menyimpan data kode – kode biner dari suatu file atau object. BLOB merupakan singkatan dari Binary Large Object. Filed data yang termasuk tipe data BLOB adalah sebagai berikut:
a. Enum
  • Digunakan untuk kumpulan data (enumerasi)
  • Panajng karakter          : sampai dengan 65535 string
  • Kebutuhan memory     : 1 atau 2 byte

b. Set
  • Dugunakan untuk himpunan data (combination)
  • Panjang karakter          : sampai dengan 255 string
  • Kebutuhan memory     :1,2,3,4 atau 8 byte





Ladangtekno

Contoh Soal Konversi Bilangan Desimal ke Biner, Oktal dan Heksadesimal - Lengkap dengan Pembahasan

konversi bilangan

Kesempatan kali ini saya akan membahas mengenai beberapa soal mengenai bilangan biner, oktal dan heksadesimal, berikut adalah pembahasannya dibawah ini langsung saja

Lakukan dalam proses biner untuk soal berikut 

1. 35(10)  -   21(10)


2. 31(10) x 23(10)


3. Konversikan nilai desimal berikut ke radiks lain :

    a. 72,325(10) konversikan ke biner 

     b. 67,98(10) konversikan ke oktal 

     c.  976,65(10) konversikan ke heksadesimal 


4. Lakukan penjumlahan biner dari bilangan desimal berikut : 876(10) + 231(10)


Jawaban

1. 35(10) 1  0  0  0  1  1
21(10)  _  =      1  0  1  0  1  _
14(10) 0  0  1  1  1  0 (2)


2. 31(10)    1  1  1  1  1
23(10)    x =         1  0  1  1  1      x
713 (10)         1  1  1  1  1
                      1  1  1  1  1         +
                     1  0  1  1  1  0  1
             1  1  1  1  1            +
                 1  1  0  1  1  0  0  1
  0  0  0  0  0                +
             1  1  0  1  1  0  0  1
             1  1  1  1  1                    +
                 1  0  1  1  0  0  1  0  0  1(2)


3.
a. 72,325 (10)  konversikan ke biner 

            72    = 36 sisa 0 0,325 x 2 = 0,650 (0)
     2

    36    = 18 sisa 0 0,650 x 2 = 1,3 (1)
             2

    18    = 9    sisa 0 0,3      x2 = 0,6 (0)
     2

     9     = 4    sisa 1 0,6      x2 = 1,2 (1)
     2

     4     = 2    sisa 0 0,2      x2 = 0,4 (0)
     2

       2     = 1    sisa 0 0,4      x2 = 0,8 (0)
     2

     1     = 0    sisa 1 0,8      x2 = 1,6 (1)
     2


Hasilnya: 72,325(10)= 1001000,0101001(2)


b. 67,98(10) konversikan ke octal

            67= 8 sisa 3                             0,92x8= 7,84 (7)
             8

             8 = 1 sisa 0                             0,84x8= 6,72 (6)
             8

             1 = 0 sisa 1                             0,72x8=5,76 (5)
             8
                                            
                                                            0,76x8=6,08 (6)
 
                                                            0,08x8 = 0,64 (0)  

    0,64x8 = 5.12 (5)

    0,12x8 = 0.96 (0)

    0,96x8 = 7,68 (7)

   0,68x8 = 5,44 (5)

   0,44x8 = 3,52 (3)


Hasilnya: 103,76560507539(8)

Dihentikan sampai digit 10 dibelakang koma saja saja sudah cukup karena jika dilanjutkan tidak akan menemukan hasil akhir


c. 976,65(10) konversikan ke heksadesimal
.
    976 =  61 sisa 0         0,65x16= 10,4 (10/A)
     16
    
     61  = 3 sisa 13(D) 0,4x 16 = 6,4 (6)
     16

      3   = 0  sisa 1 0,4x16 = 6,4 (6)
     16

Hasilnya: 976,65(10)= 1D0,A66(16)


4. Penjumlahan biner dari bilangan desimal : 876(10) + 231(10)

876/2 = 438 sisa 0 231/2 = 115 sisa 1

438/2 = 219 sisa 0 115/2 = 57 sisa 1

219/2 = 109 sisa 1 57/2   = 28 sisa 1

109/2 = 54 sisa 1 28/2   = 14 sisa 0

54/2   = 27 sisa 0 14/2   = 7 sisa 0

27/2   = 13 sisa 1 7/2     = 3 sisa 1

13/2   = 6 sisa 1 3/2     = 1 sisa 1

6/2     = 3 sisa 0 1/2     = 0 sisa 1

3/2     = 1 sisa 1 231(10) = 11100111(2)

1/2     = 0 sisa 1

876(10) = 1101101100(2)

  876(10)                     1  1  0  1  1  0  1  1  0  0
 231(10)      +    =         1  1  1  0  0   1  1  1   
 1207(10)                1  0  0  0  1  0 1  0   0  1  1(2)



Ladangtekno

PROGRAM VERIFIKASI ALGORITMA, METODE DIAGONAL, PARALLELISM, PENGURUTAN PARALLELISM

Program Verifikasi Algoritma, Metode Diagonal

Dalam program verifikasi algoritma kita dihadapkan bahwa apakah komputer dapat memverifikasi algoritma yang telah kita buat, apakah input yang kita berikan sesuai dan dapat memecahkan masalah yang dihadapkan.


Metode diagonal yang dipublikasikan oleh Georg Cantor yang merupakan pembuktian matematis bahwa ada himpunan terbatas yang tidak dapat dimasukan dalam korespondensi satu-ke-satu dengan himpunan tak terhingga dari bilangan asli. Himpunan-himpunan terebut dikenal sebagai himpunan yang tidak bisa dihitung.

Metode Diagonal
Metode Diagonal

 

Pembuktian program dengan metode diagonal dapat divisualisasikan dengan membayangkan sebuah tabel terbatas, yang sudah diberikan program yang sudah dibuat terhadap semua input yang mungkin (secara sederhana, input dalam bilangan integer).


Daftar program tercantum secara vertikal disebelah kiri dan input tercantum secara horizontal di bagian bawah. Pada pertemuan antara baris ke I dan kolom ke J kita dapat memastikan apakah program I menghentikan kolom J atau tidak.


Sekarang kita membangun sebuah program imajiner baru yang akan menjadi versi samaran dari program yang dibangun sebelumnya. 

 

Prilaku penghentian  adalah “negatif” pada garis diagonal tabel. Dengan kata lain program ini terbentuk dan berjalan pada semua masukan (input), ia berhenti hanya apabila program ke-J tidak akan dihentikan pada J dan tidak berhenti jika program ke-J an dihentikan pada J.


Pembuktian seperti ini secara singkat dapat dijelaskan dengan mengatakan bahwa kita telak mendiagonalkan semua program dan semua masukan, membangun S menjadi negatif atau sebaliknya dari diagonal tersebut. Kontradiksi kemudian mengikuti semua ketidakmungkinan S menjadi salah satu program pada daftar.


Baca Juga:


Paralellism dan Pengurutan Paralelism

Algoritma parallel merupakan algoritma yang dapat dieksekusi dalam satu waktu pada banyak perangkat processing yang berbeda, dan pada akhirnya akan digabungkan kembali untuk mendapatkan hasil yang benar.  


Analisis algoritma paralel biasanya dilakukan dengan asumsi bahwa jumlah tak terbatas dari prosesor yang tersedia. Teknik algoritma parallel, sekalipun didukung oleh teknologi prosesor yang berkembang sangat pesat, komputer sekuensial tetap akan mengalami keterbatasan dalam hal kecepatan pemrosesannya. 

 

Hal ini menyebabkan lahirnya konsep keparalelan (parallelism) untuk menangani masalah dan aplikasi yang membutuhkan kecepatan pemrosesan yang sangat tinggi, seperti misalnya prakiraan cuaca, simulasi pada reaksi kimia, perhitungan aerodinamika dan lain-lain.

Parallelism menurut Michael J. Quin adalah konsep komputer parallel yang diberikan oleh Michael J. Quin yang membedakan komputer parallel berdasarkan data parallelism dan control parallelism.

  • Data parallelism merupakan penerapan operasi yang sama secara simultan terhadap elemen-elemen dari kumpulan data.
  • Control parallelism merupakan penerapan operasi-operasi yang berbeda terhadap elemen-elemen data yang berbeda secara bersamaan.


Teknik Pembangunan Algoritma Paralel

Paralelisme Data

Teknik paralelisme data merupakan teknik yang paling banyak digunakan dalam program paralel. Teknik ini lahir dari penelitian bahwa aplikasi utama komputasi paralel adalah dalam bidang sain dan engineer, yang umumnya melibatkan array multi-dimensi yang sangat besar. 

 

Dalam program sekuensial biasa, array ini dimanipulasi dengan mempergunakan perulangan bersarang untuk mendapatkan hasil. Kebanyakan program paralel dibentuk dengan mengatur ulang algoritma sekuensial agar perulangan bersarang tersebut dapat dilaksanakan secara paralel.

 

Partisi Data

Merupakan teknik khusus dari Paralelisme Data, dimana data disebar ke dalam memori-memori lokal multikomputer. Sebuah proses paralel dimana ditugaskan untuk mengoperasikan masing-masing bagian data. Proses tersebut harus terdapat dalam lokal memori yang sama dengan bagian data, karena itu proses dapat mengakses data tersebut secara lokal. 

 

Untuk memperoleh kinerja yang baik, setiap proses harus memperhatikan variabel-variabel dan data-data lokalnya masing-masing. Jika suatu proses membutuhkan akses data yang terdapat dalam remote memori, maka hal ini dapat dilakukan melalui jaringan message passing yang menghubungkan prosesor-prosesor.

 

Algoritma Relaksasi

Pada algoritma ini, setiap proses tidak membutuhkan sinkronisasi dan komunikasi antar proses. Meskipun prosesor mengakses data yang sama, setiap prosesor dapat melakukan komputasi sendiri tanpa tergantung pada data antara yang dihasilkan oleh proses lain. Contoh algoritma relaksasi adalah algoritma perkalian matrik, pengurutan dengan mengunakan metode ranksort dan lain sebagainya.

 

Paralelisme Sinkron

Aplikasi praktis dari komputasi paralel adalah untuk problem yang melibatkan array multi-dimensi yang sangat besar. Problem tersebut mempunyai peluang yang baik untuk paralelisme data karena elemen yang berbeda dalam array dapat diproses secara paralel. 

 

Teknik komputasi numerik pada array ini biasanya iteratif, dan setiap iterasi akan mempengaruhi iterasi berikutnya untuk menuju solusi akhir. Misalnya saja untuk solusi persamaan numerik pada sistem yang besar. Umumnya, setiap iterasi mempergunakan data yang dihasilkan oleh iterasi sebelumnya dan program akhirnya menuju suatu solusi dengan akurasi yang dibutuhkan. Algoritma iterasi ini mempunyai peluang paralelisme pada setiap iterasinya.


Komputasi Pipeline

Pada komputasi pipeline, data dialirkan melalui seluruh struktur proses, dimana masing-masing proses membentuk tahap-tahap tertentu dari keseluruhan komputasi . Algoritma ini dapat berjalan dengan baik pada multikomputer, karena adanya aliran data dan tidak banyak memerlukan akses ke data bersama.


Synchronization Delay

Ketika proses paralel disinkronkan, berarti bahwa suatu proses harus menunggu proses lainnya. Dalam beberapa program paralel, jumlah waktu tunda ini dapat menyebabkan bottleneck dan mengurangi speedup keseluruhan. 

 

Load Imbalance Dalam beberapa program paralel, tugas komputasi dibangun secara dinamis dan tidak dapat diperkirakan sebelumnya. Karena itu harus selalu ditugaskan ke prosesor-prosesor sejalan dengan pembangunan tugas tersebut. Hal ini dapat menyebabkan suatu prosesor tidak bekerja (idle), sementara prosesor lainnya tidak dapat mengerjakan task yang ditugaskannya.


Untuk melakukan operasi pengurutan (sorting) secara paralel terdapat dua cara:

Range-Partitioning Sort 

  • Pilihlah prosesor P0, ..., Pm, di mana m [] n -1 untuk melakukan sorting.
  • Buatlah range-partition-vector dengan m anggota, pada atribut sorting 
  • Distribusi ulang relasi menggunakan range-partitioning 
  • Semua tuple yang berada di antara range ke-i dikirim ke prosesor Pi
  • Pi  menyimpan tuple yang diterimanya sementara di disk Di. 
  • Masing-masing prosesor Pi mengurutkan partisi relasi secara lokal. 
  • Masing-masing prosesor melakukan operasi (sorting) yang sama secara paralel dengan prosesor yang lain, tanpa adanya interaksi satu sama lain (data parallelism).
  • Pada akhirnya operasi penggabungan hasil pengurutan tadi dilakukan dengan mudah: operasi range-partitioning menjamin bahwa, untuk 1<=i<=j<= m, nilai key dalam prosesor Pi  semuanya lebih kecil dari nilai key pada Pj.

 

Parallel External Sort-Merge 

  • Asumsi bahwa relasi telah dipartisi di antara disk-disk D0, ..., Dn-1 (dengan cara apapun).
  • Masing-masing prosesor Pi secara lokal mengurutkan data pada disk Di.
  • Hasil operasi pengurutan yang dilakukan di masing-masing prosesor kemudian digabungkan untuk mendapat hasil pengurutan akhir. 
  • Untuk menggabungkan hasil pengurutan masing-masing prosesor tadi secara paralel dilakukan sebagai berikut: 
    • Partisi-partisi yang sudah diurutkan di masing-masing prosesor Pi  kemudian di-rangepartitioning ke seluruh prosesor P0, ..., Pm-1.
    • Masing-masing prosesor Pi melakukan pengabungan dengan serangkaian data   yang sudah terurut tadi pada saat mereka diterima, untuk memperoleh satu rangkaian penuh yang terurut.
    • Rangkaian yang sudah terurut pada prosesor-prosesor P0,..., Pm-1 kemudian digabungkan untuk memperoleh hasil akhir.


Contoh

Algoritma Pencarian Nilai Terbesar Secara Parallel

Contoh :

A memiliki nilai = 1, 9, 2, 8, 3, 7, 4, 6, 5, 0

1.      i←0

2.      besar←false

3.      Selama (tidak  besar) dan (i<=N) kerjakan baris 4

4.      Jika (Data[i] > i+1) maka besar←true, jika tidak i←i+1

5.      Jika (besar) maka i adalah indeks dari data yang besar dan tampilkan.

Maka :

1.      i←0

2.      Besar←False

3.      Selama (tidak besar) dan (i<=N) kerjakan baris 4

4.      Jika (Data[1] > 9) maka besar←true, jika tidak i←9

5.      Jika (Besar) maka i adalah indeks dari data yang besar dan tampilkan.

6.      Maka akan memperoleh hasil 9

 

Algoritma Penghitungan Rerata Secara Parallel.

Contoh : A = 6, 3, 2, 9, 7

1.      i = 0

2.      for i=0 to i<=N do

3.      Data[i] +

 

Kondisi awal : daftar dari n >= 1 adalah element dari A[0 …(n-1)]

Kondisi akhir : Penjumlahan dari element di bagi jumlah element A dan simpan di A[0]

Variable global : n, A[0, …(n-1)],j

Begin

   Spawn(P0, P1, P2, …, P[n/2 j-1])

   For all Pi where 0 <= i <= [n/2]-1 do

               For j = o to [log n] -1 do

                           If i modulo 2j = 0 and 2i + 2j < n then

                                       A[2i]=A[2i]+A[2i+2J]

                           End if

               End For

            End For

            A[0]/max[j]

End


Algoritma Pengurutan Secara Sekuensial akan Mengurutkan Data dengan Nilai Terkecil akan dinaikan ke Atas dan Sebaliknya Data dengan Nilai Terbesar akan Berada di Posisi Bawah

Contoh : A = {25, 22, 18, 20, 15}, dimana A adalah sebuah variable array

1.      i = 0

2.      Selama (i=0; i<n-1; i++), kerjakan baris 3

3.      Jika (A[i] >= A[i+1] maka

§  Temp = A[i]

§  A[i] = A[i+1]

§  A[i+1] = temp

4.      Tampilkan A[i]

5.      Kembali i

Maka

1.      i = 0

2.      Selama (i=0; i<n-1; i++), kerjakan baris 3

3.      Jika (A[25] >= A[22] maka

§  Temp = A[25]

§  A[25] = A[22]

§  A[22] = temp

4.      Tampilkan A[25]

5.      Kembali 25

Maka hasil sorting dengan sekuensial :

15

18

20

22 

25

 

Ladangtekno