Minggu, 09 Januari 2011

PENGANTAR DASAR DATABASE

PENGANTAR DASAR DATABASE


DEFINISI


Basis data adalah penyimpanan kumpulan informasi secara sistematik dalam sebuah komputer sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sedangkan sistem adalah sebuah tatanan yang terdiri atas sejumlah komponen fungsional yang saling berhubungan dan secara bersama-sama bertujuan untuk memenuhi suatu proses pekerjaan. Sehingga bisa dikatakan bahwa sistem basis data adalah sistem yang terdiri atas kumpulan file-file yang saling berhubungan dan sekumpulan program (DBMS) yang memungkinkan beberapa pemakai dan atau program lain untuk mengakses dan memanipulasi data tersebut.

Komponen Sistem Basis Data


         Komponen-komponen pada sebuah sistem basis data antara lain:
·   Perangkat keras
·   Sistem operasi
·   Basis data
·   DBMS (Database Management System)
·   Pemakai
·   Aplikasi lain




Sistem Basis Data dan Sistem File


Pada sebuah institusi, data merupakan salah satu hal yang sangat penting. Setiap bagian/divisi dari institusi memiliki data sendiri-sendiri. Tapi setiap bagian pun membutuhkan sebagian data dari bagian yang lain. Hal ini yang biasa dikenal sebagai “shared data”. Setiap divisi memiliki aplikasi sendiri-sendiri dalam melakukan manipulasi dan pengambilan data tersebut. Setiap
aplikasi memiliki file-file dalam sistem operasi yang digunakan untuk menyimpan data-data. Seiring dengan berkembangnya institusi, bertambahnya bagian/divisi, bertambah pula data dan aplikasi yang digunakan. Bertambahnya aplikasi, bertambah pula file-file yang dibuat.
Gaya sistem pemrosesan-file tersebut menyebabkan setiap data disimpan dalam bentuk record dalam berbagai macam file, dan diperlukan aplikasi yang berbeda dalam melakukan pengambilan record dari, dan penambahan record ke dalam file. Hal ini berlaku pada masa sebelum adanya Sistem Basis Data (DBMS).
Menyimpan data dalam bentuk file yang berbeda-beda, memiliki kekurangan-kekurangan:
·   Data redundancy dan inconsistency.
Dikarenakan programer yang berbeda membuat file dan aplikasi masing-masing, menyebabkan beragam format dan aplikasi yang dibuat. Bahkan, aplikasi pun dibuat menggunakan bahasa pemrograman yang berbeda-beda. Lebih jauh lagi, data atau informasi yang sama bisa terdapat dalam beberapa file yang berbeda. Ini yang disebut dengan redundancy. Redundancy data ini lama kelamaan akan menyebabkan inconsystency dari data.
·   Kesulitan dalam pengaksesan data.
Dikarenakan setiap aplikasi memiliki file tersendiri untuk penyimpanan dan pengambilan data, maka jika suatu bagian dari institusi membutuhkan data dari bagian lain, akan menemui kesulitan. Hal ini dikarenakan aplikasi yang dimiliki bagian tersebut, tidak dapat membaca file yang terdapat di bagian lain.
·   Isolasi data.
Dikarenakan data tersebar dalam berbagai macam file, dan file tersebut dalam beragam format, pembuatan aplikasi baru akan terasa sulit ketika harus membaca format dari masing-masing file tersebut.
·   Masalah integritas.
Data yang disimpan harus memenuhi hal yang dinamakan dengan consistency constraint. Jika sebuah constraint berubah, maka seluruh aplikasi yang digunakan harus mengakomodasinya. Masalah akan muncul, jika constraint melibatkan beberapa data dari file yang berbeda-beda.
·   Masalah keamanan.
Tidak semua pengguna dari basis data dapat mengakses semua data. Hal ini akan sulit dilakukan jika menggunakan gaya penyimpanan data dalam file.

Abstraksi Data


Tujuan utama dari sistem basis data adalah untuk menyediakan fasilitas untuk view data secara abstrak bagi penggunanya. Namun bagaimana sistem menyimpan dan mengelola data tersebut, hanya diketahui oleh sistem itu sendiri. Abstraksi data merupakan level dalam bagaimana melihat data dalam sebuah sistem basis data. Berikut ini tiga level abstraksi data:

1.     Level fisik
Merupakan level terendah pada abstraksi data yang menunjukkan bagaimana sesungguhnya data disimpan. Pada level ini pemakai melihat data sebagai gabungan dari struktur dan datanya sendiri.
2.     Level lojik
Merupakan level berikutnya pada abstraksi data, menggambarkan data apa yang disimpan pada basis data dan hubungan apa saja yang ada di antara data tersebut.
3.     Level view
Merupakan level tertinggi dari abstraksi data yang hanya menunjukkan sebagian dari basis data. Banyak user dalam sistem basis data tidak akan terlibat dengan semua data atau informasi yang ada atau yang disimpan. Para user umumnya hanya membutuhkan sebagian data atau informasi dalam basis data yang kemunculannya di mata user diatur oleh aplikasi end user.

Database Administrator


Salah satu alasan dari pemanfaatan DBMS adalah untuk mendapatkan kontrol yang terpusat atas data dan program yang mengakses data tersebut. Orang yang memiliki kontrol atas sistem seperti yang telah disebutkan tersebut adalah database administrator (DBA).
Fungsi-fungsi DBA antara lain:
·   Definisi skema
·   Definisi struktur penyimpanan dan metode akses
·   Modifikasi skema dan organisasi fisik
·   Memberikan otorisasi untuk akese data
·   Spesifikasi integritas constraint
Struktur Sistem

Sebuah sistem basis data terbagi ke dalam beberapa modul yang masing-masing mempunyai tanggung jawab dalam membentuk struktur sistem secara keseluruhan. Beberapa fungsi dari sistem basis data mungkin telah diberikan oleh sistem operasi. Tetapi dalam sebagian besar kondisi, sistem operasi hanya menyediakan servis-servis dasar dan sistem basis data harus dibangun di atasnya.



Komponen-komponen fungsional dari sebuah sistem basis data dibagi menjadi dua, yaitu komponen query processor dan komponen storage manager.
Query processor terdiri atas:
·         DML compiler, menerjemahkan perintah DML pada suatu query ke dalam instruksi level rendah yang dimengerti oleh mesin evaluasi query. Dengan kata lain, DML compiler berusaha mengubah suatu permintaan user menjadi bentuk yang ekivalen namun lebih efisien sekaligus juga menentukan sebuah strategi yang tepat untuk mengeksekusi query tersebut.

·         Embedded DML precompiler, mengkonversi perintah DML yang embed pada sebuah program aplikasi ke procedure call yang normal dalam bahasa host. Precompiler ini harus nerinteraksi dengan DML compiler untuk menghasilkjan kode yang sesuai.

·         DDL interpreter, menginterpretasikan perintah DDL dan mencatatnya dalam sekumpulan tabel yang mengandung metadata.

·         Query evaluation engine, mengeksekusi instruksi level rendah yang dihasilkan oleh DML compiler.

Komponen storage manager menyediakan antarmuka antara data level rendah yang tersimpan dalam basis data dan program aplikasi serta query yang diberikan ke sistem. Yang termasuk komponen ini adalah:

·         Manajer otorisasi dan integritas, menguji integritas dari constraint yang ada serta otoritas user untuk mengakses data.
·         Manajer transaksi, meyakinkan basis data tetap pada kondisi konsisten (benar) saat terjadi kegagalan sistem serta meyakinkan bahawa eksekusi dari transaksi yang konkuren (terjadi “bersamaan”) berlangsung tanpa adanya konflik.
·         Manajer file, mengelola alokasi ruang pada disk penyimpanan struktur data yang digunakan untuk mewakili informasi yang disimpan pada disk.
·         Manajer buffer, bertanggung jawab untuk mengambil data dari disk penyimpanan ke dalam memori utama serta menetukan data yang mana yang akan ditempatkan di memory

CREATE TABLE nama_tabel
(  nama_field_1  tipe_data,
   nama_field_2  tipe_data,
   ………,
   [ CONSTRAINT   nama_constraint PRIMARY KEY               
     (nama_field)
   ]
   [ CONSTRAINT   nama_constraint FOREIGN KEY 
    (nama_field) REFERENCE nama_table (nama_field)
    ON DELETE CASCADE
       ]
);

 

 
Keterangan :
nama_field1, nama_field2 adalah nama kolom (field) yang akan ada di dalam tabel.
tipe_data adalah tipe data yang bisa ditampung oleh field.
tipe_constraint adalah batasan yang menentukan suatu field.
Tanda [ ] menyatakan bahwa yang didalamnya boleh ada atau tidak.

Macam – macam tipe constraint yang mungkin adalah :
·   NULL atau NOT NULL
Constraint NOT NULL ini berfungsi untuk menjamin field harus diisi sedangkan constraint NULL memperbolehkan suatu field untuk dikosongi
·   UNIQUE
Constraint ini berfungsi untuk menjamin bahwa nilai pada setiap record di dalam sebuah tabel adalah unik
·   PRIMARY KEY
·   FOREIGN KEY
·   CHECK
Constraint ini berfungsi untuk menjamin bahwa nilai yang akan dimasukkan ke dalam sebuah field sudah sesuai dengan aturan yang dibuat

Contoh     : pembuatan tabel mahasiswa dengan atribut nim bertipe char(9) dan nama bertipe varchar(20) yang tidak boleh kosong.

Sintaks      : CREATE TABLE mahasiswa
                (
                Nim char(9),
                Nama varchar(20) not null,
                CONSTRAINT pk_mhs PRIMARY KEY (Nim)
                );
 
·         Memanipulasi tabel (ALTER TABLE)
Sebuah struktur tabel yang sudah didefinisikan dapat dimodifikasi dengan menggunakan perintah ALTER TABLE.
Ada beberapa jenis modifikasi pada tabel :

1.    Menambahkan constraint baru untuk sebuah tabel
   Query :
                        ALTER TABLE nama_tabel
                        ADD CONSTRAINT nama_constraint_baru
(definisi_constraint);

   Contoh :  (misal pada tabel mahasiswa belum ada primary key)
               SQL >   ALTER TABLE mahasiswa
                           ADD CONSTRAINT pk_mhs PRIMARY KEY (Nim);

2.    Menghapus sebuah constraint di dalam tabel.
               Query :
                        ALTER TABLE nama_tabel
                        DROP CONSTRAINT nama_constraint;

Contoh :
SQL >   ALTER TABLE mahasiswa
                           DROP CONSTRAINT pk_ mhs;

3.    Manambahkan field baru pada sebuah tabel.
Query :
         ALTER TABLE nama_tabel
                        ADD(nama_field  tipe_data  [definisi_konstraint]);

Contoh :
         SQL > ALTER TABLE mahasiswa
                        ADD(alamat varchar(50) NOT NULL);

4.    Mengubah definisi field yang telah ada pada sebuah tabel.
Query :
         ALTER TABLE nama_tabel
                        MODIFY(nama_field  tipe_field  definisi_konstraint);

 
INSERT INTO nama_tabel [(nama_field1, nama_field2, ….)] VALUES (nilai1, nilai2, …);



         Perlu diperhatikan bahwa nama_field1, nama_field2, … dapat dihilangkan. Hal ini dapat dilakukan bila nilai yang dimasukkan user, urutan sesuai dengan urutan field di dalam tabel tersebut, dan jumlah nilai yang dimasukkan juga harus sama dengan jumlah field pada tabel. Selain itu, proses penyisipan juga harus mematuhi aturan constraint yang telah didefinisikan pada sebuah tabel
Contoh :  
insert into mahasiswa 
values('30108001', 'paijo', 'skp');
atau
insert into mahasiswa (nim,nama,alamat) 
values('30108001', 'paijo', 'skp');

·         UPDATE RECORD
Setiap nilai record yang telah disimpan di dalam tabel dapat dimodifikasi kembali berdasarkan kondisi tertentu. Jika kondisi tidak didefinisikan, maka nilai semua record akan terupdate
Query :
UPDATE nama_tabel
       SET    nama_field1 = nilai_baru1,
              nama_field2 = nilai_baru2,
              ….
       [WHERE kondisi];


           
Contoh :

SQL >   update mahasiswa
set nama         = 'paimin',
      alamat      = 'skb'
where nim       = '30108001';

·         DELETE RECORD
Record yang telah disimpan di dalam sebuah tabel dapat dihapus berdasarkan kondisi tertentu. Jika kondisi untuk menghapus tidak didefinisikan maka seluruh record pada tabel tersebut akan dihapus.



Query :
DELETE nama_tabel [WHERE kondisi];



Contoh :
SQL >   delete mahasiswa
where nim = '30108001';

(menghapus sebuah record pada tabel mahasiswa dimana nimnya  ‘30108001’)

SQL >   delete mahasiswa;
(menghapus semua record pada table mahasiswa)

Select Statement

Statement SELECT digunakan untuk mengambil record dari sebuah tabel atau lebih. Record yang diambil dengan SELECT dapat disaring dengan menggunakan kondisi yang terdefinisi.
Statement SELECT mempunyai format sebagai berikut :
SELECT [DISTINCT | ALL]  * | nama_field 1, nama_field 2, ……
       FROM  nama_tabel
       [WHERE kondisi1]
       [GROUP BY nama_field] [HAVING kondisi2]
       [ORDER BY nama_field [ASC | DSC]];



DISTINCT digunakan untuk mengambil record yang nilainya tidak ganda.
FROM digunakan untuk mendefinisikan tabel yang menjadi sumber data dari suatu perintah SELECT.
WHERE           digunakan untuk mendefinisikan kondisi pengambilan data pada tabel yang disebutkan di klausa FROM.
GROUP BY digunakan untuk mengelompokkan baris – baris data berdasarkan ekspresi group – group tertentu yaitu untuk field tertentu.
HAVING digunakan untuk memilih / mendefinisikan kriteria kelompok group yang akan ditampilkan berdasarkan group yang akan dibuat. Penggunaa klausa HAVING dipakai sebagai pengganti klausa WHERE pada GROUP BY.
ORDER BY digunakan untuk mengurutkan seleksi berdasarkan kondisi yang diinginkan.
ASC (ascending) berarti pengurutan menaik – 1, 2, 3, 4 ….
DSC (descending) berarti pengurutan menurun – 10, 7, 4, 2, ….

Untuk mengambil semua field pada setiap record, maka ganti semua nama field menjadi tanda bintang ‘*’ (tanpa tanda kutip)
            SELECT *
            FROM nama_tabel
            [WHERE kondisi];

Contoh : SELECT * FROM mahasiswa;

Untuk mengambil record yang memenuhi kondisi tertentu maka statement SELECT digabung dengan klausa WHERE. Format WHERE :

            WHERE  nama_field operator_kondisional nilai

Operator kondisional yang diganakan adalah :
Operator
Arti
=
Sama dengan
<>, !=, ^=
Tidak sama dengan
Lebih besar
<
Lebih kecil
>=
Lebih besar atau sama dengan
<=
Lebih kecil atau sama dengan
BETWEEN … AND …
Mengambil nilai yang berada pada antara 2 buah bilangan.
IN
Mengetes nilai – nilai pada list yang disepsifikasikan
LIKE
Menyocokkan sebuah pola karekter
IS NULL
Apakah sebuah nilai null?

Untuk menggabungkan beberapa kondisi didalam klausa WHERE, maka digunakan operator boolean AND, OR, dan NOT.
AND     :  apabila setiap kondisi harus dipenuhi.
OR       :  apabila cukup salah satu kondisi yang terpenuhi.
NOT     : apabila merupakan kebalikan / negasi dari kondisi yang dipenuhi.

Contoh :
Select * from mahasiswa where nama not ‘paimen’;

BETWEEN … AND …
Untuk mengambil record dengan nilai field berada pada batas tertentu, maka digunakan statement BETWEEN atau NOT BETWEEN.
Statement ini bergabung menjadi satu dengan klausa WHERE.
WHERE  nama_field BETWEEN nilai_awal AND nilai_akhir

WHERE nama_field NOT BETWEEN nilai_awal AND nilai_akhir



IN dan NOT IN
Untuk menampilkan record yang nilai fieldnya berada pada suatu kelompok nilai tertentu maka gunakan statement : IN atau NOT IN yang dipakai bersama klausa WHERE
WHERE nama_field IN (nilai1, nilai2, nilai3, …)

WHERE nama_field NOT IN (nilai1, nilai2, nilai3, …)



LIKE dan NOT LIKE
WHERE nama_field LIKE pola;

WHERE nama_field NOT LIKE pola;


Untuk menampilkan record yang nilai fieldnya mengandung nilai tertentu, digunakan statement LIKE atau NOT LIKE yang diletakkan pada klausa WHERE.

Pola adalah karekter atau string, yang dapat dipadukan dengan dua macam wild character, yaitu :
%          : mewakili 0,1 atau beberapa karakter
_          : mewakili tempat sebuah karakter.
Contoh :
1.    %JO%
String yang sesuai dengan %JO% adalah : JOHAN, IJO, PAIJO, JOJON
2.    _ELO_
String yang sesuai dengan _ELO_ adalah : BELOK, KELOK, BELON

Field yang dapat menggunakan statement LIKE atau NOT LIKE adalah field yang bertipe Char, Varchar, atau Varchar2.

IS NULL dan IS NOT NULL
WHERE nama_field IS NULL;

WHERE nama_field IS NOT NULL;


Salah satu kegunaan nilai NULL adalah untuk merepresentasikan sebuah nilai yang belum ada. Dalam hal ini nilai field untuk sebuah record belum terisi. Sebuah nilai NULL tidak idektik dengan spasi atau 0.
Untuk menampilkan record yang mempunyai nilai field NULL atau tidak, gunakan statement IS NULL atau IS NOT NULL yang dimasukkan dalam statement WHERE

OPERATOR ARITMATIKA
Ada kemungkinan, pada saat menampilkan nilai, kita ingin memodifikasi nilai yang ingin ditampilkan, misalnya kita ingin menampilkan harga barang, namun harga barang tersebut ditambah 500.

Untuk memodifikasi nilai tersebut kita gunakan operator aritmatika yang diletakkan pada klausa SELECT.
SELECT nama_field1 operator nilai_tambahan, …
       FROM nama_tabel
       [WHERE kondisi];


            Operator yang digunakan adalah : *, /, +, dan –
Field yang bisa menggunakan operator ini harus bertipe numerik, date?
Contoh :
            SQL >   SELECT nim, spp + 50000
                        FROM keuangan;

2 komentar: