Kamis, 10 November 2011

Apa itu Database

Database bisa dikatakan sebagai suatu kumpulan dari data yang tersimpan dan diatur atau diorganisasikan sehingga data tersebut bisa diambil atau dicari dengan mudah dan efisien. Sebagai contoh sederhana dari database adalah buku telepon yang mungkin sering Anda lihat.
Bagaimana halnya dengan database dengan sistem database dengan menggunakan komputer? Hal tersebut sama saja seperti database yang sifatnya manual (seperti contoh buku telepon di atas) hanya saja dengan adanya komputer maka informasi yang ada di dalam database akan sangat mudah untuk di-update dan sangat cepat untuk dicari. Software atau aplikasi yang bertugas untuk mengatur, menyimpan, memodifikasi data disebut dengan software database engine dan lebih resminya disebut dengan DBMS (Database Management System). Ada banyak sekali aplikasi DBMS ini mulai yang berjalan di komputer personal (PC) sampai ke komputer skala mainframe. Contoh-contoh dari aplikasi database engine misalnya seperti:
SQL Server, dibuat oleh Microsoft.
MS Access, dibuat oleh Microsoft.
Oracle Database, dibuat oleh Oracle.
MySQL, dibuat oleh MySQL AB.
Firebird, dibuat oleh komunitas open source berdasarkan dari kode Interbase.
PostgreSQL, dibuat oleh komunitas open source.
DB2, dibuat oleh IBM.
Masih banyak lagi sederet nama database engine yang ada di dunia ini. Anda bisa mencarinya dengan keyword ‘database engine’ atau ‘database server’.
Jika Anda bertanya “Apa saja sih aplikasi yang bisa menggunakan database?”, wah jawabannya akan sangat banyak sekali, beberapa diantaranya adalah:
Sistem perpustakaan yang berbasis komputer, pasti membutuhkan database yang besar untuk merawat data buku yang dimilikinya.
Sistem ATM (Automatic Teller Machine), pasti membutuhkan database yang besar untuk mengambil dan meng-update data saldo uang misalnya.
Sistem reservasi tiket pesawat, pasti membutuhkan database untuk menyimpan data reservasi tiket.
Sistem inventory, pasti membutuhkan database untuk menyimpan data inventory termasuk updating data stok barang dan lain sebagainya.
Contoh di atas hanyalah sebagian kecil dari aplikasi yang membutuhkan database karena pada kenyataannya semua kegiatan bisnis yang dikomputerisasikan pasti membutuhkan sistem database sebagai media penyimpanan. Database tersebut selain digunakan untuk menyimpan data transaksi juga akan digunakan untuk menampilkan laporan yang bisa digunakan pihak manajemen sebagai sumber untuk pengambilan keputusan. Untuk sistem database yang lebih canggih malah sudah terdapat fasilitas analisa data sehingga bisa memprediksi keadaan yang akan terjadi berdasarkan data yang sudah ada sebelumnya

Perencangan Database

 Pokok pemikiran dalam merancang database adalah bagaimana merancang database sehingga dapat memenuhi kebutuhan saat ini dan kemudahannya untuk dikembangkan dimasa yang akan datang. Perancangan model konseptual perlu dilakukan disamping perancangan secara phisik.
Pada perancangan konseptual, digunakan beberapa konsep pendekatan relasional namun tidak berarti konsep ini harus diimplementasikan ke model relasional saja tetapi juga apat dengan model Hirarchi dan model Network.
Tugas merancang database adalah bagian dari tugas database administrator . Model konseptual mengkombinasikan beberapa cara untuk memproses data dan untuk beberapa aplikasi. Model konseptual tidak tergantung aplikasi tertentu dan tidak tergantung DBMS, Hadware yang digunakan.
Pada perancangan model konseptual tinjauan dilakukan pada struktur data dan relasi antar file menggunakan model dan relasional.
Terdapat dua teknik dalam merancang database yaitu :
Teknik normalisasi banyak digunakan terutama pemula karena mudah dipahami dan diaplikasikan.
Dasar-dasar normalisasi
  • Normal form (bentuk normal) adalah suatu klas dari skema database relasi yang didefinisikan untuk memenuhi tujuan dari tingginya integritas dan maintainability
  • Kreasi dari suatu bentuk normal disebut normalisasi
  • Normalisasi dicapai dengan penganalisaan ketergantungan diantara setiap individu attribut yang diassosiasikan dengan relasinya
First normal form
  • Suatu relasi ada dalam kondisi First Normal Form (1NF) jika dan hanya jika semua domain yang tercakup terdiri hanya atomic value, misalnya tidak ada pengulangan group (domain-domain) dalam suatu tuple
  • Keuntungan dari 1NF dibanding Unnormalized relation (UNRs) adalah pada bentuk penyederhanaan representasi dan kemudahan dalam pengembangan menggunakan suatu query language
  • Kekuranannnya adalah kebutuhan terhadap duplikasi data
  • Sebagian besar sistem relasi (tidak semua) membutuhkan suatu relasi dalam bentuk 1NF
Second Normal Form
  • Suatu superkey adalah suatu himpunan dari satu atau lebih attribute, yang mana, dimana diambil secara khusus yang memmungkinkan kita untuk mengidentifikasikan secara unik satu entitas atau relasi
  • Suatu Candidate key adalah suatu subset dari attribut-attribut pada superkey yang juga merupakan superkey dan tidak reducible ke superkey yang lain
  • Suatu primary key dipilih dari himpunan candidate key untuk digunakan pada suatu index untuk relasi yang bersangkutan
  • Kepemilikan dari satu atau beberapa attribute yang dapat didefinisikan secara unik dari nilai satu atau beberapa attribute disebut functional dependency
  • Diberikan suatu relasi (R), suatu himpunan (B) adalah functionally dependent pada himpunan attribut yang lain(A) jika, pada satu waktu tertentu, setiap nilai A diassosiasikan dengan satu nilai B, bentuk ini adalah suatu FD yang dinotasikan dengan A B
• contohR : {paper-id, inst-name, isnt-addr, editor-id, publ-id, auth-id, auth-name,auth-addr}Fds : paper-id, auth-id auth-namepaper-id,auth-id auth-addrpaper-id, auth-id inst-namepaper-id, auth-id inst-addrauth-id auth-nameauth-id auth-addrinst-name inst-addrpaper-id editor-idpaper-id publ-idbentuk sederhanapaper-id, auth-id auth-name, auth-addr, inst-name, inst-addrauth-id auth-name, auth-addrinst-name inst-addr
paper-id pub-id, editor-id
  • Suatu relasi adalah dalam posisi second normal form (2NF) jika dan hanya jika relasi tersebut juga dalam 1NF dan setiap nonkey attribute tergantung penuh pada primary key-nya
  • 2NF membutuhkan bahwa FD apapun didalam relasi harus berisi semua komponen dari primary key sebagai determinant, baik secara langsung atau transitif
  • contoh, primary key adalah paper_id, auth_id. Bagaimanapun, terdapat Fds yang lain (auth_Id auth-name, auth-addr, and paper-id pub-id, editor-id) yang berisi satu komponen dari primary key, tetapi tidak keduaduanya.
  • Mengapa harus 2NF, pertimbangkan keuntungan dari 1NF pada R. paper, pub-id dan editor-id dibuat duplikat. Untuk setiap author dari paper. Jika editor dari publikasi untuk suatu paper berubah, beberapa tuple harus pula di-update. Akhirnya, jika satu paper di ambil, semua tupple yang diassosiasikan harus dihapus. Bentuk ini akan memberikan efek samping pada penghapusan informasi yang mengassosiasikan suatu auth-id dengan auth-name dan auth-addr.
  • Suatu cara yang dapat dilakukan untuk hal tersebut adalah dengan mentransformasikan relasi kedalam dua atau beberapa relasi 2NF
contohR1 : paper-id, auth-id inst-name, inst-addrR2 : auth-id auth-name, auth-addrR3 : paper-id pub-id, editor-id
Third Normal Form
  • Pada R1, inst_addr pasti diduplikat untuk setiap kombinasi paper_author yang mejelaskan satu inst_name. Juga, jika kita menghapus satu paper dari database, kita harus memberikan efek samping penghapusan assosiasi antara inst_name dan inst_addr.
  • Suatu relasi dalam Third Normal Form (3NF) jika dan hanya jika relasi tersebut dalam 2NF dan setiap non key attribute adalah nontransitive dependent pada primary key
Contoh :R11 : paper-id, auth-id inst-nameR12 : inst_name inst_addrR2 : auth-id auth-name, auth-addrR3 : paper-id pub-id, editor-id
Boyce-Codd Normal Form
  • Suatu Trivial FD adalah suatu bentuk YZ Z
  • Suatu relasi R dalam kondisi Boyce-Codd Normal Form (BCNF) jika untuk semua nontrivial FD X A, X adalah superkey
  • BCNF adalah suatu bentuk yang lebih kuat dari normalisasi ke tiga. 3NF equivalent dengan perkataan bahwauntuk setiap nontrivial FD X A, dimana X dan A merupakan simple atau composite attribut, satu dari duakondisi harus dipenuhi.X adalah superkey, atauA adalah prime attribute
  • BCNF mengelimisasi kondisi kedua dari 3NF
Penerapan Bentuk Normalisasi
Proses perancangan database menggunakan metode normalisasi dapat dimulai dari dokumen dasar yang pakai dalam sistem.
  • Menuliskan semua data yang akan direkam, bagian yang double tidak perlu dituliskan. Terlihat record record yang tidak lengkap, sulit untuk membayangkan bagaimana bentuk record yang harus dibentuk untuk merekam data tersebut.
  • Bentuklah menjadi bentuk normal kesatu dengan memisah misahkan data pada field field yang tepat dan benilai atomic, juga seluruh record harus lengkap adanya. Bentuk file adalah flat file.
    Dengan bentuk normal kesatu ini
    telah dapat dibuat satu file dengan 11 field yaitu nomor factur, kode supplier, nama supplier, kode barang, nama barang, tanggal, jatuh tempo, quantitas, harga, jumlah, total satu factur.
Konsep Entity Relationship (Cardinality)
a. One to One Relationship
Hubungan antara file pertama dan file kedua adalah satu berbanding satu.
Contoh :
• pada pengajaran private satu guru satu siswa
• “seorang guru mengajar seorang siswa, seorang siswa diajar oleh seorang guru”
Gambar :
onetoone.jpg
b. One to Many atau Many to One Relationship
Hubungan antara file pertama dan file kedua adalah satu berbanding banyak atau banyak berbanding satu.
Contoh :
• Dalam suatu perusahan satu bagian mempekerjakan banyak pegawai.
• “Satu bagian mempekerjakan banyak pegawai, satu pegawai kerja dalam satu bagian”
onetomany.jpg
c. Many to Many Relationship
Hubungan file pertama dan file kedua adalah banyak berbanding banyak.
Contoh :
• Dalam universitas seorang mahasiswa dapat mengambil banyak matakuliah
• “Satu mahasiswa mengambil banyak matakulih dan satu matakuliah diambil banyak mahasiswa.”
manytomany.jpg
LANGKAH-LANGKAH PERANCANGAN TEKNIK ER
Sumber awal data teknik perencanaan database dengan ER adalah data dictionary (kumpulan data).
Langkah-langkah perancangan ER:
  1. Memilih kelompok atribut yang sama untuk dijadikan sebuah entitas dan menentukan primary key dengan syarat unik dan mewakili entitas
  2. Menggambarkan Cardinality dari ER diagram berdasarkan analisa relasi yang didapat. Relasi yang terjadi dapat One to One, One to Many dan Many to Many relationship
  3. Membentuk SKEMA DATABASE atau LRS (Logical Record Structure) berdasarkan ER diagram
  • Bila relasi One to One maka foreign key diletakkan pada salah satu dari 2 entitas yang ada atau menyatukan ke dua entitas tersebut.
  • Bila relasi One to Many maka foreign key diletakkan di entitas yang Many
  • Bila relasi many to many maka dibuat “file konektor” yang berisi 2 foreign key yang berasal dari kedua entitas
Membentuk tabel-tabel berdasarkan primary key yang terpilih dengan syarat sudah mencapai aturan normalisasi sekurang-kurangnya 3NF dari Skema DB/LRS yang ada :
PENERAPAN TEKNIK E - R
Buatlah perancangan database dengan teknik ER untuk data dictionary berikut ini :
  • No. Anggota
  • Nama Anggota
  • Tgl. Lahir
  • Alamat
  • Tgl. Masuk
  • Kode Buku
  • Judul
  • Pengarang
  • Penerbit
  • Tahun Terbit
  • Tgl.Pinjam
  • Tgl. Kembali
LANGKAH 1
  • Memilih kelompok atribut yang sama untuk dijadikan beberapa entitas dan menentukan primary key dengan syarat unik dan mewakili entitas
  • Dari data dictionary diatas dapat ditentukan 2 entitas yaitu :
Ø Entitas Anggota (Primary key: No. Anggota)
Ø Entitas Buku (Primary Key: Kode Buku)
Anggota
  • No. Anggota
  • Nama Anggota
  • Tgl. Lahir
  • Alamat
  • Tgl. Masuk
Buku
  • Kode Buku
  • Judul
  • Pengarang
  • Penerbit
  • Tahun Terbit
• Atribut Tgl. Pinjam dan Tgl. Kembali tidak dimasukkan dulu kedalam salah satu entitas.
LANGKAH 2
  • Menggambarkan Cardinality dari ER diagram berdasarkan analisa relasi yang didapat. Relasi yang terjadi dapat One to One, One to Many dan Many to Many relationship
  • Misalnya relasi yang terjadi :
“Seorang anggota dapat meminjam banyak buku dan satu buku dapat dipinjamkan oleh banyak anggota”
Gambar ER Diagram:
pinjam.jpg
LANGKAH 3
  • Membentuk Skema DB atau LRS berdasarkan ER diagram
  • Bila relasi One to One maka foreign key diletakkan pada salah satu dari 2 entitas yang ada atau menyatukan ke dua entitas tersebut.
  • Bila relasi One to Many maka foreign key diletakkan di entitas yang Many
  • Bila relasi many to many maka dibuat “file konektor” yang berisi 2 foreign key yang berasal dari kedua entitas
• LRS yang berbentuk :
pinjam_1.jpg
LANGKAH 4
  • Membentuk tabel-tabel berdasarkan primary key yang terpilih dengan syarat sudah mencapai aturan normalisasi sekurang-kurangnya 3NF dari Skema DB/LRS yang ada :
  • Karena relasi yang terjadi many to many maka dibuat file konektor

 

Apa Itu DBMS

DBMS (DataBase Management System) adalah sistem yang secara khusus dibuat untuk memudahkan pemakai dalam mengelola basis data. Sistem ini dibuat untuk mengatasi kelemahan sistem pemrosesan yang berbasis berkas.Pada pendekatan yang berbasis berkas, umumnya perancangan sistem didasarkan pada kebutuhan individual pemakai, bukan berdasarkan kebutuhan sejumlah pemakai. Setiap kali terdapat kebutuhan baru dari seorang pemakai, kebutuhan segera diterjemahkan kedalam program komputer. Akibatnya, kemungkinan besar setiap program aplikasi menuliskan data tersendiri. Sementara itu ada kemungkinan data yang sama juga terdapat pada berkas-berkas lain yang digunakan oleh program aplikasi lain.

Apa Itu SQL, DDL, DML

Apa itu SQL?

SQL merupakan singkatan dari Structured Query Language. SQL atau juga sering disebut sebagai query merupakan suatu bahasa (language) yang digunakan untuk mengakses database. SQL dikenalkan pertama kali dalam IBM pada tahun 1970 dan sebuah standar ISO dan ANSII ditetapkan untuk SQL. Standar ini tidak tergantung pada mesin yang digunakan (IBM, Microsoft atau Oracle). Hampir semua software database mengenal atau mengerti SQL. Jadi, perintah SQL pada semua software database hampir sama.
Terdapat 3 (tiga) jenis perintah SQL, yaitu DDL, DML dan DCL.



Apa itu DDL?

DDL atau Data Definition Language merupakan perintah SQL yang berhubungan dengan pendefinisian suatu struktur database, dalam hal ini database dan table. Beberapa perintah dasar yang termasuk DDL ini antara lain :


+ CREATE

- contoh :

create database [if not exists] sekolah;

create table siswa(nis char(10) not null primary key,
nama_siswa char(40), alamat char(50));

Bentuk perintah di atas akan membuat sebuah database baru dengan nama sekolah dan table siswa. Aturan penamaan sebuah database atau table sama seperti aturan penamaan sebuah variabel, dimana secara umum nama database boleh terdiri dari huruf, angka dan under-score (_). Jika database yang akan dibuat sudah ada, maka akan muncul pesan error. Namun jika ingin otomatis menghapus database yang lama jika sudah ada, aktifkan option IF NOT EXISTS.Setiap kita membuat database baru, maka sebenarnya MySQL akan membuat suatu folder (direktori) sesuai dengan nama databasenya yang ditempatkan secara default di \mysql\data. Di dalam folder tersebut nantinya akan terdapat file-file yang berhubungan dengan tabel dalam database.


+ ALTER

- contoh :

alter table siswa add jenkel char (1);

alter table koleksi add author varchar (20);

Bentuk perintah di atas akan mengubah suatu table dengan menambahkan variabel jenkel pada table siswa dan variabel author pada table koleksi.


+ RENAME

rename table siswa to pelajar ;

rename table koleksi to barang ;

Bentuk perintah di atas akan mengubah nama suatu table. Huruf yang berwarna merah menandakan nama table yang baru sedangkan huruf yang bergaris bawah menandakan table yang akan diganti namanya.


+ DROP

- contoh :

drop database [if exists] nama_database;

drop database [if exists] sekolah;

Bentuk perintah di atas akan menghapus kolom dan indeks dengan nama nama_database dan sekolah. Jika databasenya ada maka database dan juga seluruh tabel di dalamnya akan dihapus. Jadi berhati-hatilah dengan perintah ini! Jika nama database yang akan dihapus tidak ditemukan, maka akan ditampilkan pesan error. Aktifkan option IF EXISTS untuk memastikan bahwa suatu database benar-benar ada.


Apa itu DML?
DML atau Data Manipulation Language merupakan perintah SQL yang berhubungan dengan manipulasi atau pengolahan data atau record dalam table. Perintah SQL yang termasuk dalam DML antara lain :


+ SELECT

- contoh:

select * from siswa;

select * from koleksi;


+ INSERT

- contoh:

insert into siswa(nis,nama_siswa,alamat)
values('091011001','Deby','Jl. Gajah No. 15');

insert into koleksi(id_koleksi, title, author, publisher, thn_terbit, stok)
        values('103','Sistem Basis Data','Robert','Yudistira','2010','7')

Bentuk perintah di atas akan menambahkan suatu data pada table yang sudah ditentukan. Contohnya seperti diatas. Huruf yang berwarna merah menandakan data yang akan ditambahkan. Huruf yang bergaris bawah menandakan tablenya (siswa, koleksi)dan variable-variabelnya.


+ UPDATE

- contoh:

update siswa set jenkel='L' where nis='091011001';

update koleksi set author='OneWay' where id_koleksi='103';

Bentuk perintah di atas digunakan untuk mengubah suatu data pada table yang sudah ditentukan. Huruf yang berwarna merah menandakan data yang akan ditambahkan. Huruf yang bergaris bawah menandakan tablenya (siswa, koleksi) dan variable-variabelnya (nis, id_koleksi).


+ DELETE

-contoh:

delete from siswa where nis='091011001';

delete from koleksi where id_koleksi='103';

Bentuk perintah di atas digunakan untuk mengubah suatu data pada table yang sudah ditentukan.  Huruf yang berwarna merah menandakan kondisi data yang akan diinginkan. Huruf yang bergaris bawah menandakan nama tablenya


Apa itu DCL?
DCL atau Data Control Language merupakan perintah SQL yang berhubungan dengan pengaturan hak akses user MySQL, baik terhadap server, database, tabel maupun field. Perintah SQL yang termasuk dalam DCL antara lain :

+ GRANT

Grant digunakan untuk mengatur izin akses pada kolom yang ditentukan saja. Konfigurasi izin akses columns_priv ini lebih sedikit dibandingkan dengan tabel tables_priv. Hak akses yang diizinkan meliputi select, insert, update dan references.

Contoh penggunaan izin akses kolom :

grant update(nama) on nm_db.nm_tbl to nm_user@localhost identified by ‘nm_passwd’;

Dari perintah diatas user tersebut akan bisa melakukan perintah update pada kolom nama saja. Seperti contoh dibawah :

update nm_tbl set nama=’nm_baru’ where id=23;

Selain penggunaan diatas kita bisa juga melakukan penampilan untuk kolom tertentu dan ada juga kolom yang bisa di update juga. Maka kita bisa menggunakan kombinasi seperti ini.

grant select(id,nama,alamat,usia), update(alamat,usia) on nm_db.nm_tbl to nm_user@localhost identified by ‘nm_passwd’;


+ REVOKE

Revoke merupakan kebalikan dari perintah grant yaitu menghapus atau mencabut kembali izin akses user MySQL yang sebelumnya telah diberikan. Tingkat pilihan yang dapat digunakan juga sama dengan perintah grant sehingga semua izin akses dengan grant dapat dicabut kembali.

Menghapus Akses Penuh

revoke all on *.* from nm_user@localhost identified by ‘nm_passwd’;

Perintah diatas membuat salah satu user tidak mempunyai izin akses lagi. Meski sudah dicabut aksesnya user tersebut masih dapat login ke database MySQL tapi tidak perlu khawatir karena user tersebut tidak bisa berbuat apa-apa lagi.

Menghapus Akses Database

revoke all on nm_db.nm_tbl from nm_user@localhost identified by ‘nm_passwd’;

Perintah diatas izin akses user pada tabel tertentu telah dicabut sehingga tidak bisa mengakses kembali.

Menghapus Akses Kolom

revoke update(nama) on nm_db.nm_tbl from nm_user@localhost identified by ‘nm_passwd’;

Peintah diatas akan mencabut akses untuk kolom yang telah ditentukan sebelumnya.