sistem basis data

189
Bahan Kuliah: Sistem Basis Data BAB 1 PENGERTIAN SISTEM MANAJEMEN BASIS DATA 1.1. Basis Data Basis data atau database, berasal dari kata basis dan data, adapun pengertian dari kedua pengertian tersebut adalah sebagai berikut : Basis : dapat diartikan sebagai markas atau gudang, tempat bersarang atau berkumpul. Data : representasi fakta dunia nyata yang mewakili suatu objek seperti manusia (pegawai, siswa, pembeli, pelanggan), barang, hewan peristiwa, konsep, keadaan, dan sebagainya yang direkam dalam bentuk angka, huruf, simbol, teks, gambar, bunyi, atau kombinasinya. Dari kedua pengertian tersebut, maka dapat ditarik kesimpulan bahwa pengertian dari Basis Data adalah Kumpulan file / table yang saling berelasi (berhubungan) yang disimpan dalam media penyimpanan eletronik. Dapat dikatakan pengertian lain dari basis data adalah koleksi terpadu dari data yang saling berkaitan yang dirancang untuk memenuhi kebutuhan informasi suatu enterprise (dunia usaha). Dari pengertian tersebut dapat diambil kesimpulan pada masing – masing table / file didalam database berfungsi untuk menampung / menyimpan data – data, dimana masing – masing data yang ada pada table / file tersebut saling berhubungan dengan satu sama lainnya. Tujuan dari dibentuknya basis data pada suatu perusahaan pada dasarnya adalah kemudahan dan kecepatan dalam pengambilan kembali data. FTI –Teknik Informatika URINDO : Edisi 1 Tahun 2007 – [email protected] Refisi : 1 - 1

Upload: masbudiyono

Post on 21-Jun-2015

2.301 views

Category:

Documents


0 download

DESCRIPTION

Sistem Basis Data

TRANSCRIPT

Page 1: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

BAB 1PENGERTIAN

SISTEM MANAJEMEN BASIS DATA

1.1. Basis DataBasis data atau database, berasal dari kata basis dan data, adapun pengertian dari kedua

pengertian tersebut adalah sebagai berikut :

Basis : dapat diartikan sebagai markas atau gudang, tempat bersarang atau berkumpul.

Data : representasi fakta dunia nyata yang mewakili suatu objek seperti manusia (pegawai, siswa, pembeli, pelanggan), barang, hewan peristiwa, konsep, keadaan, dan sebagainya yang direkam dalam bentuk angka, huruf, simbol, teks, gambar, bunyi, atau kombinasinya.

Dari kedua pengertian tersebut, maka dapat ditarik kesimpulan bahwa pengertian dari Basis Data adalah Kumpulan file / table yang saling berelasi (berhubungan) yang disimpan dalam media penyimpanan eletronik. Dapat dikatakan pengertian lain dari basis data adalah koleksi terpadu dari data yang saling berkaitan yang dirancang untuk memenuhi kebutuhan informasi suatu enterprise (dunia usaha). Dari pengertian tersebut dapat diambil kesimpulan pada masing – masing table / file didalam database berfungsi untuk menampung / menyimpan data – data, dimana masing – masing data yang ada pada table / file tersebut saling berhubungan dengan satu sama lainnya.

Tujuan dari dibentuknya basis data pada suatu perusahaan pada dasarnya adalah kemudahan dan kecepatan dalam pengambilan kembali data.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

1

Page 2: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Untuk lebih jelasnya dapat dilihat pada gambar 1.1, terlihat bahwa pada gambar diatas itu bukan basis data melainkan lemari arsip, dimana pada setiap rak dalam lemari tersebut dapat menyimpan dokumen – dokumen manual yang terdiri dari lembaran – lembaran kertas. Masalah yang dihadapi pada lemari arsip adalah kelambatan dalam menelusuri data – data yang ada pada lemari arsip tersebut, misalkan kita ingin mencari arsip untuk pegawai tertentu dihasilkan dengan lambat dikarenakan petugas harus mencari lembaran – lembaran yang ada pada dokumen tersebut dan ini sangat menyita waktu.

Sedangkan kalau kita bicara basis data, maka seluruh data – data disimpan dalam basis data pada masing – masing table / file sesuai dengan fungsinya, sehingga kita dengan mudah dapat melakukan penelusuran data yang diinginkan hal ini akan mengakibatkan pada kecepatan atas informasi yang disajikan.

Lemari arsip di sebuah ruang

Basis Data di sebuah hardisk

Gambar 1.1. Lemari Arsip dan Basis Data

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

2

DosenMatakuliah

Mahasiswa

Nilai

HARD DISK(Basia Data

NilaiMahasiswa)

Table Matakuliah

Table Mahasiswa

Table Dosen

Table Nilai

Page 3: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Didalam suatu media penyimpanan (hard disk misalnya), kita dapat menempatkan lebih dari 1 (satu) basis data dan tidak semua bentuk penyimpanan data secara elektronik dikatakan basis data, karena kita bisa menyimpan dokumen berisi data dalam file teks

(dengan program pengolahan kata), spread sheet, dan lainnya.

Yang ditonjolkan dalam basis data adalah pengaturan / pemilahan / pengelompokan / pengorganisasian data yang akan disimpan sesuai dengan fungsi / jenisnya. Hal tersebut bisa berbentuk sejumlah file / table terpisah atau dalam bentuk pendefinisian kolom / field

data dalam setiap file / table tersebut.

1.2. Hirarki DataHirarki data dalam dikelompokkan menjadi 3 (tiga) buah yaitu file, record dan elemen

data, untuk lebih jelaskan dapat dilihat pada gambar 1.2. berikut ini.

File / Berkas / Table

Rekaman / Record / Baris …………. ………….

Elemen Data / Field / Atribut …… …….. ……..

Gambar 1.2. Hirarki Data

Pengertian dari gambar tersebut diatas adalah sebagai berikut :1). Elemen Data / Field / Atribut adalah satuan data terkecil yang tidak dapat dipecah

lagi menjadi unit lain yang bermakna. Pada data Mahasiswa, field / atribut datanya dapat berupa : nim, nama_m, tpt_lhr_m, tgl_lhr_m, alm_m dan dan atribut lainnya yang

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

3

Database

Page 4: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

menyangkut mahasiswa tersebut. Istilah lain elemen data adalah medan / field, kolom, item, dan atribut. Istilah yang umum dipakai adalah field, atribut atau kolom.

2). Rekaman / Record / Baris adalah gabungan sejumlah elemen data yang saling terkait. Contohnya adalah nim, nama_m, tpt_lhr_m, tgl_lhr_m, alm_m an atribut lainnya dari seorang Mahasiswa dapat dihimpun dalam sebuah record / baris.

3). Berkas / File / Table adalah kumpulan record sejenis yang mempunyai panjang atribut / field sama, namun berbeda isi datanya.

Dalam basis data relasional, berkas mewakili komponen yang disebut Table atau Relasi. Sedangkan pengertian Data value (nilai atau isi data) adalah data aktual atau informasi yang disimpan pada setiap field / atribut. Field nama_m menunjukkan tempat dimana informasi nama mahasiswa disimpan, sedangkan isi datanya adalah Mulyani, Ahmad Sofyan dan lain sebagainya.

Berikut ini dapat diberikan illustrasi dari pengertian ketiga pengertian file, field, record dan data value (isi data ).

Mahasiswa nama table / file

Record / barisAtribut / field : nim,nama_m,tpt_lhr_m,tgl_lhr_m,j_kelamin,alm_m,kota_m,aama_m dan

kode_jur

Data value / Isi data :

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

4

Page 5: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Pada record pertama : 01031417 adalah isi data untuk kolom nim, Mulyanti untuk kolom nama_m dan seterusnya

Gambar 1.3. Contoh file, field, record dan data value

Pada contoh diatas yang merupakan table / file adalah Mahasiswa, yang merupakan field

adalah nim,nama_m,tpt_lhr_m,tgl_lhr_m,j_kelamin,alm_m,kota_m,aama_m dan kode_jur, sedangkan untuk isi data pada record pertama adalah 01031417 (nim), Mulyanti (nama_m) dan seterusnya. Pada tabel mahasiswa tersebut misalkan jumlah mahasiswanya adalah 2000 untuk berbagai jurusan, maka jumlah recordnya adalah 2000 juga dan kita dapat melakukan manipulasi data pada tabel tersebut yaitu insert, update dan delete.

1.3. Sistem Basis DataSistem basis data dapat diartikan sebagai kumpulan file / table yang saling

berhubungan (dalam sebuah basis data di sebuah sistem komputer), dan sekumpulan program (DBMS / Database Management System) yang memungkinkan beberapa user

(pemakai), dan / atau program lain untuk mengakses dan memanipulasi file (table) tersebut. Komponen – komponen utama dari sebuah sistem basis data adalah sebagai berikut :

1). Perangkat keras (hardware)2). Sistem operasi (operating system)3). Basis data (database)4). Sistem (aplikasi/perangkat lunak) pengelola basis data (DBMS)5). Pemakai (user)6). Aplikasi (perangkat lunak) lain (bersifat optional)

Pada gambar 1.3. sistem basis data dapat dilihat bahwa basis data pada intinya adalah disimpan pada media penyimpanan elektronik (hardisk), sedangkan database adalah terdiri dari beberapa file / table yang saling berelasi (berhubungan). Basis data tersebut dikelola oleh DBMS (database management system) dan database tersebut dapat dimanfaatkan oleh beberapa user (pemakai) yang dapat melakukan manipulasi pada database. Tidak semua user

dapat melakukan manipulasi data didalam database, hal ini diatur sesuai dengan hak aksesnya dari masing – masing user tersebut.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

5

Page 6: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 1.4. Sistem Basis Data

1.3.1. Perangkat KerasPerangkat keras yang biasanya terdapat dalam sistem basis data adalah

sebagai berikut:1). Komputer (satu untuk yang stand-alone atau lebih dari satu untuk sistem

jaringan).1). Memori sekunder yang on-line (harddisk).3). Memori sekunder yang off-line (tape) untuk keperluan backup data.4). Media / perangkat komunikasi (untuk sistem jaringan).

1.3.2. Sistem OperasiMerupakan program yang mengaktifkan / memfungsikan sistem komputer,

mengendalikan seluruh sumber daya dalam komputer dan melakukan operasi – operasi dasar dalam komputer (operasi input/output), pengelolaan file, dan lain sebagainya.

Program pengelola basis data (DBMS) akan aktif (running) jika sistem operasi yang dikehendakinya (sesuai) telah aktif.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

6

Basis Data

Basis Data X:Table ATable BTable CTable DTable E

DllDatabase management

system (DBMS)

PC

PC

PC

Basis Data Y:Table JTable KTable LTable MTable N

Dll

Page 7: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Contoh daripada sistem operasi pada sistem komputer adalah MS-DOS, MS Windows (3.11,95,98 dan lainnya) untuk yang stand alone dan MS Windows (2000 Server, UNIX, LINUX, Novel_Netware dan lain sebagainya) utuk yang jaringan.

1.3.3. Basis DataSebuah sistem basis data dapat memiliki beberapa basis data. Setiap basis

data dapat memiliki sejumlah objek basis data (seperti file/table, store procedure,

indeks, dan lainya). Disamping berisi / menyimpan data, setiap basis data juga mengandung / menyimpan definisi struktur (baik untuk basis data maupun objek-objeknya secara detail).

1.3.4. Sistem pengelola basis data (DBMS)Pengelolaan basis data secara fisik tidak ditangani langsung oleh user

(pemakai), tetapi ditangani oleh sebuah perangkat lunak (sistem) yang khusus / spesifik.

Perangkat inilah disebut DBMS, yang akan menentukan bagaimana data diorganisasi, disimpan, diubah, dan diambil kembali. Perangkat tersebut juga menerapkan mekanisme pengamanan data (security), pemakaian data secara bersama (sharing data), pemaksaan keakuratan / konsistensi data, dan sebagainya.Perangakat lunak yang termasuk DBMS adalah MS-Access, Foxpro, Dbase-IV, Foxbase, Clipper, dan lainnya untuk kelas sederhana, dan Oracle, Informix, Sybase, MS-SQL Server, dan lainnya untuk kelas kompleks / berat.

1.3.5. Pemakai (Users)Ada beberapa jenis / tipe pemakai pada sistem basis data, berdasarkan cara

mereka berinteraksi pada basis data, diantaranya adalah:

1). Programmer Aplikasi

Adalah pemakai yang berinteraksi dengan basis data melalui DML (data manipulation language), yang disertakan dalam program yang ditulis dalam bahasa pemrograman induk (seperti pascal, cobol, clipper, foxpro, dan lainnya).

2). User Mahir Adalah pemakai yang berinteraksi dengan sistem tanpa

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

7

Page 8: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

(casual user) menulis modul program. Mereka menyatakan query

(untuk akses data), dengan bahasa query yang telah disediakan oleh suatu DBMS.

3). User Umum (End

Us

er)

Adalah pemakai yang berinteraksi dengan sistem basis data melalui pemanggilan satu program aplikasi permanen, yang telah ditulis / disediakan sebelumnya.

4). User Khusus (Specialized User)

Adalah pemakai yang menulis aplikasi basis data non konvensional untuk keperluan khusus, seperti untuk aplikasi AI, Sistem Pakar, Pengolahan Citra, dan lainnyal, yang bisa saja mengakses basis data dengan / tanpa DBMS.

Untuk sebuah sistem basis data yang stand-alone, maka pada suatu saat hanya ada satu pemakai, sedangkan untuk jaringan pada suatu saat ada banyak pemakai yang dapat berhubungan (menggunakan) basis data yang sama. Pilihan untuk stand-alone atau jaringan (multiuser) tergantung pada (ditentukan oleh) kebutuhan pemakai, perangkat keras yang tersedia, sistem operasi yang digunakan, serta DBMS yang dipilih.

1.3.6. Aplikasi (perangkat lunak) lainAplikasi lain ini bersifat optional, ada tidaknya tergantung pada kebutuhan

kita. DBMS yang kita gunakan lebih berperan dalam pengorganisasian data dalam basis data, sementara bagi pemakai basis data (khususnya yang menjadi end user) dapat disediakan program khusus untuk melakukan pengisian, pengubahan dan pengambilan data.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

8

Page 9: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

1.4. Sistem Manajemen Basis Data (DBMS)DBMS adalah koleksi terpadu dari program-program (sistem perangkat lunak) yang

digunakan untuk mendefinisikan, menciptakan, mengakses dan merawat database (basis data). Tujuannya adalah menyediakan lingkungan yang mudah dan aman untuk penggunaan dan perawatan database. Contoh daripada DBMS adalah Ms-Access, MS Sql Server dan Oracle.

Pertanyaan Soal1. Jelaskan pengertian daripada basis data (database) ?2. Berikan penjelasan mengenai perbedaaan antara lemari arsip dengan database didalam

suatu perusahaan ?.3. Jelaskan pengertian daripada file, record, field dan data value dan berikan masing – masing

contohnya ?.4. Jelaskan pengertian daripada sistem basis data, apa saja komponen utama dari sistem basis

data ?.5. Jelaskan pengertian sistem operasi dan berikan contoh beberapa sistem operasi yang

saudara ketahui ?.6. Jelaskan pengertian daripada DBMS, dan berikan contohnya untuk kelas DBMS yang

sederhana maupun yang kompleks ?.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

9

Page 10: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

BAB 2OPERASI DASARI BASIS DATA

2.1. Operasi DasarDidalam sebuah disk (hard disk), basis data dapat diciptakan dan dapat pula

ditiadakan. Dalam sebuah disk kita dapat menempatkan beberapa (lebih dari satu) basis data (Misalnya basis data nilaiMahasiswa, kepegawaian, keuangan, penjualan, pepustakaan dan lainnya). Sementara dalam sebuah basis data kita dapat menempatkan satu atau lebih file / table. Misalkan dalam basis data penjualan terdiri dari table barang, faktur, pelanggan dan transaksi barang.

Operasi-operasi dasar yang dapat kita lakukan berkenaan dengan basis data adalah sebagai berikut:

1). Pembuatan basis data baru (create database), identik dengan pembuatan lemari arsip yang baru.

2). Penghapusan basis data (drop database), identik dengan perusakan lemari arsip, sekaligus beserta isinya jika ada.

3). Pembuatan table baru ke suatu basis data (create table), yang identik dengan penambahan map arsip baru ke sebuah lemari arsip yang telah ada.

4). Penghapusan table dari suatu basis data (drop table), identik dengan perusakan map arsip lama yang ada di sebuah lemari arsip.

5). Penambahan / pengisian data baru di sebuah basis data (insert), identik dengan penambahan lembaran arsip ke sebuah map arsip.

6). Pengambilan data dari sebuah table (retrieve / search), identik dengan pencarian lembaran arsip dalam sebuah map arsip.

7). Pengubahan data dalam sebuah table (update), identik dengan perbaikan isi lembaran arsip yang ada di sebuah map arsip.

8). Penghapusan data dari sebuah table (delete), identik dengan penghapusan sebuah lembaran arsip yang ada di sebuah map arsip.

Operasi pembuatan basis data dan tabel merupakan operasi awal yang hanya dilakukan sekali dan berlaku seterusnya. Sedangkan untuk operasi pengisian, perubahan,

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

10

Page 11: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

penghapusan dan pencarian data merupakan operasi rutin yang berlaku berulang-ulang.

2.2. Kegunaan Database Penyusunan satu basis data digunakan untuk mengatasi masalah – masalah pada

penyusunan data, antara lain:

1). Redundansi dan inkonsistensi data2). Kesulitan pengaksesan data3). Isolasi data untuk standarisasi4). Multiple user (banyak pemakai)5. Masalah keamanan (security)6. Masalah integrasi (kesatuan)7. Masalah data independence (kebebasan data)

2.2.1. Redundansi dan inkonsistensi dataJika table dan program aplikasi diciptakan oleh programmer yang berbeda

dengan waktu yang berselang cukup panjang, maka ada beberapa bagian data mengalami penggandaan pada table yang berbeda pada suatu database.

C o n t o h Nama, alamat, dan telpon dari mahasiswa di sebuah Perguruan Tinggi tercatat pada table Anggota (pada database Perpustakaan), KRS dan juga pada Keuangan.

Apabila kita berbicara sistem yang berbasis jaringan maka 1(satu) table mahasiswa bisa dimanfaatkan oleh beberapa sub database yang menginginkannya.

Penyimpanan dibeberapa tempat untuk data yang sama ini disebut sebagai redundansi dan mengakibatkan pemborosan ruang penyimpanan dan juga biaya untuk akses lebih tinggi.

Penyimpanan data yang sama berulang-ulang di beberapa tempat dalam database dapat mengakibatkan juga inkonsistensi (tidak konsisten). Hal ini terjadi, bila suatu ketika mahasiswa tersebut pindah alamat berubah, maka seluruh table

yang memuat data tersebut harus diubah / update. Bila salah satu saja yang diupdate, maka menjadi tidak konsisten.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

11

Page 12: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

2.2.2. Kesulitan dalam pengaksesan dataPada suatu saat dibutuhkan untuk mencetak data siapa saja mahasiswa yang

berada di kota ‘Bekasi Timur’, padahal belum tersedia program yang telah ditulis untuk mengeluarkan data tersebut. Maka kesulitan akan timbul, dan penyelesaian ke arah itu adalah DBMS yang mampu mengambil data secara langsung dengan bahasa yang familiar dan mudah digunakan (user frindly).

2.2.3. Isolasi data untuk standarisasiJika data tersebar dalam beberapa file / table dalam bentuk format yang tidak

sama, maka ini akan menyulitkan dalam menulis program aplikasi untuk mengambil dan menyimpan data. Maka haruslah data dalam satu basis data dibuat satu format, sehingga mudah dibuat program aplikasinya.

2.2.4. Multiple User (Banyak Pemakai)Dalam rangka mempercepat semua daya guna sistem dan mendapat responsi

waktu yang cepat, beberapa sistem mengijinkan banyak pemakai untuk meng “update

“ data secara simultan. Salah satu alasan mengapa basis data dibangun karena nantinya data tersebut digunakan oleh banyak orang dalam waktu yang sama atau berbeda, diakses oleh program yang sama tapi berbeda orang dan waktu.

Semua itu memungkinkan terjadi, karena data yang diolah tidaklah tergantung dan menyatu dalam program tapi ia terlepas dalam satu kelompok data.

2.2.5. Masalah keamanan (security)Tidak semua pemakai sistem basis data diperbolehkan untuk mengakses

semua data. Misalkan data mengenai gaji seorang karyawa hanya boleh dibuka oleh bagian keuangan dan personalia, tidak diperkenankan bagian gudang membaca dan mengubahnya.

2.2.6. Masalah integritas (kesatuan)Basis data berisi file / table yang saling terkait, masalah utama adalah

bagaimana kaitan antar table itu terjadi. Meskipun kita mengetahui table A berkaitan

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

12

Page 13: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

dengan table B, namun secara teknis ada field / atribut kunci yang mengaitkan / merelasikan table tersebut.

2.2.7. Masalah data independence (kebebasan data)Paket bahasa yang diciptakan oleh DBMS, perubahan pada struktur file /

table, setiap kali kita hendak melihat data cukup dengan utility list, menambah data dengan Append (misal untuk DBMS Clipper atau Foxpro), merubah struktur table dengan Design Table, melakukan penelurusan data dengan query (misal untuk Access, Sql Server, MySql atau Oracle). Ini berarti perintah-perintah dalam paket DBMS bebas terhadap basis data. Apapun perubahan dalam basis data semua perintah akan mengalami kestabilan tanpa mengalami perubahan.

2.3. Keuntungan Sistem Basis DataKeuntungan-keuntungan yang dapat diperoleh dari penerapan sistem basis data

pada suatu perusahaan adalah sebagai berikut:

1). Mengurangi redudansi data

Data yang sama pada beberapa aplikasi cukup disimpan sekali saja.2). Integritas Data

Dimana data terismpan secara akurat karena tidak adanya redudansi data.3). Menghindari inkonsisten data

Sebagai akibat tidak adanya data yang redundansi data, sehingga tidak terjadi inkonsisten data, karena data yang akan diupdate cukup dilakukan sekaligus saja.

4). Penggunaan data bersama

Data yang sama dapat diakses atau dimanfaatkan oleh beberapa user pada saat yang bersamaan.

5). Standarisasi data

Akibat tidak adanya redundansi, inkonsisten, dan integritas data, maka akan terciptanya adanya standarisasi data.

6). Jaminan Keamanan Data (Security Data)

Data yang tersimpan hanya dapat diakses oleh yang mempunyai otoritas terhadap data tersebut.

7). Menyeimbangkan kebutuhan data

Data ditentukan prioritas suatu operasi, misalkan antara update dengan retrieve data.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

13

Page 14: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

2.4. Kerugian Sistem Basis DataKerugian - kerugian yang ada dengan diterapkannya basis data pada suatu

perusahaan adalah sebagai berikut:

1). Diperlukan harware (perangkat keras tambahan) : CPU yang lebih kuat, terminal yang lebih banyak, alat komunikasi.

2). Biaya Performance yang lebih besar : listrik, personil yang lebih tinggi klasifikasinya, biaya telekomunikasi antar lokasi.

3). Rawannya keberhasilan operasi : gangguan listrik, dan komunikasi.4). Sistem kelihatan lebih kompleks : banyaknya aspek yang harus diperhatikan.

2..5. Contoh Database Berikut ini ini adalah contoh dari database Penjadwalan_mengajar_dosen pada STMIK

‘Revanda Jaya’ Bekasi, dimana pada database tersebut terdiri dari file / table Dosen, Matakuliah, Jurusan dan Mengajar.

1. DosenDosen ={nid,nama_d,tempat_lhr,tgl_lahir,jkelamin,alamat,kota,kodepos,gajipokok}Dengan data value sebagai berikut:

Gambar 2.1. Data value Dosen2. Matakuliah

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

14

Page 15: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Matakuliah ={kdmk , nama_mk,sks,semester}Dengan data value sebagai berikut:

Gambar 2.2. Data value Matakuliah3. Jurusan

Jurusan ={kode_jur,nama_jur,sjenjang,nama_kajur}Dengan data value sebagai berikut:

Gambar 2.3. Data value Jurusan

4. MengajarMengajar ={nid,thn_akademik,smt , hari,jam_ke ,kdmk,waktu,kelas,kode_jur}Dengan data value sebagai berikut:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

15

Page 16: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 2.4. Data value Mengajar

Implementasi relasi (hubungan antar table) yang ada pada database tersebut dapat dilihat pada gambar berikut ini (Dengan database MS-SQL Server 2000 dan MS-Access):

Gambar 2.5. Diagram database Penjadwalan_mengajar_doseen dengan SQL-Server 2000

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

16

Page 17: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 2.6. Relationship database Penjadwalan_mengajar_doseen dengan MS-Access

Pada gambar tersebut diatas terlihat bahwa pada table mengajar, berelasi kepada table

dosen, matakuliah dan jurusan, dikarenakan pada table mengajar tersebut membutuhkan data – data yang ada pada ketiga tabel tersebut, artinya:

• Seorang dosen bisa mengajar lebih dari satu matakuliah pada semester yang sama.

• Satu matakuliah bisa diajar (diampu) oleh banyak dosen dan jurusan.

Operasi manipulasi yang dapat dilakukan pada database tersebut adalah sebagai berikut:

1). Insert : Kita dapat melakukan pemasukan data – data baru pada file / table

dosen, matakuliah, jurusan dan mengajar.2). Delete : Kita dapat melakukan penghapusan data yang telah ada pada file / table

dosen, matakuliah, jurusan dan mengajar untuk data – data yang tidak diperlukan lagi.

3). Update : Kita dapat melakukan perubahan data – data alamat dan kota seorang dosen pada file / table dosen dikarenakan dosen tersebut pindah alamat, dan kita dapat melakukan perubahan untuk data yang lainnya pada database tersebut.

4). Retrieve : Kita dapat menampilkan Informasi mengenai dosen menurut jenis kelamin, kota alamat dan lainnya, informasi mengenai transaksi mengajar dosen, informasi jurusan, informasi mengenai matakuliah berdasarkan sks nya dan informasi lainnya.

2.6. Abstraksi DataKegunaan utama sistem basis data adalah agar pemakai (user) mampu menyusun

suatu pandangan abstaksi dari data. Pemakai atau user dapat dikelompokkan menjadi tiga tingkatan abstaksi saat memandang suatu basis data, yaitu :

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

17

Page 18: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

1). Level Phisik.2). Level Konseptual.3). Level Padangan Pemakai ( View )

2.6.1. Level PhisikLevel abstraksi paling rendah, menggambarkan bagaimana (how) data disimpan

dalam kondisi sebenarnya. Level ini tentu paling kompleks, struktur data level terendah digambarkan pada level ini. Level ini digunakan oleh programmer, yang digunakan untuk melakukan pemrograman dengan mengunakan database dan DBMS tertentu sesuai dengan kebutuhan daripada end-user.

2.6.2. Level KonseptualLevel abstraksi data level lebih tinggi yang menggambarkan data apa (what) yang

disimpan dalam basis data, dan hubungan relasi yang terjadi antar data. Level ini menggambarkan keseluruhan basis data. Pemakai tidak memperdulikan kerumitan dalam struktur level phisik lagi, penggambaran cukup dengan memakai kotak, garis dan keterangan secukupnya. Level ini digunakan oleh database administrator, yang memutuskan informasi apa yang akan dipelihara dalam satu database.

2.6.3. Level Pandangan Pemakai (View Level)Level abstraksi tertinggi yang mengambarkan hanya satu bagian dari keseluruhan

database. Bila pada level konseptual data merupakan suatu kumpulan besar dan kompleks, pada level ini hanya sebagian saja yang dilihat dan dipakai. Hal ini disebabkan beberapa pemakai database tidak membutuhkan semua isi database. Level ini sangat dekat dengan pemakai (user), dan setiap user kemungkinan hanya membutuhkan sebagian dari database. Ada beberapa kelompok user dengan pandangan berbeda butuh data dalam database, jadi pada level ini yang memakai adalah pemakai akhir atau end-user.

Misalkan pemakai akhir pada bagian keuangan hanya memakai data untuk file /

table pembayaran, mahasiswa dan karyawan, tetapi tidak membutuhkan file / table buku dan

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

18

Page 19: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

nilai. Demi kemudahan interaksi antara pemakai dengan sistem, maka view level ini didefinisikan. Jadi ada beberapa pandangan disusun untuk mengakses satu sistem database yang sama.

Hubungan antar level tersebut dapat dilihat pada gambar 2.7 berikut ini :

Bagian Keuangan Bagian Perpustakaan Bagian Akademik

Gambar 2.7. Abstraksi Data

Pertanyaan Soal 1. Sebutkan dan jelaskan operasi – operasi dasar yang berkenaan dengan basis data (database)

?.2. Jelaskan dan berikan contoh masalah redundancy dalam suatu basis data (database) ?.3. Jelaskan keuntungan – keuntungan apa saja dengan diterapkannya basis data (database)

pada suatu perusahaan ?.4. Jelaskan kerugian - kerugian apa saja dengan diterapkannya basis data (database) pada

suatu perusahaan ?.5. Berikan contoh suatu database, kelompokkan mana sebagai file / table, dan field / atributnya ?

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

19

View 1 View 2 View 3

Level Konseptual

Level Phisik

Page 20: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

6. Jelaskan operasi manipulasi apa saja yang dapat dilakukan berkenaan dengan pembentukan basis data (database) ?.

7. Jelaskan pengertian level konseptual pada abstraksi data ?.

BAB 3BAHASA BASIS DATA

(DATABASE LANGUAGE)

DBMS merupakan perantara bagi pemakai dengan basis data dalam Disk. Cara berkomunkasi / berinteraksi antara pemakai dengan basis data diatur dalam suatu bahasa khusus yang ditetapkan oleh perusahaan pembuat DBMS. Bahasa ini disebut sebagai bahasa basis data yang meliputi sejumlah perintah (statement) yang diformulasikan dan dapat diberikan user dan dikenali / diproses DBMS untuk melakukan suatu aksi / pekerjaan tertentu.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

20

Page 21: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

3.1. Deskripsi Bahasa BasisdataBahasa basis data umumnya dapat ditempelkan (embbeded) ke bahasa pemrogarman lain,

misalkan ditempelkan kedalam bahasa Java,C/C++, Pascal, Basic, Fortran, Ada dan lainnya. Bahasa tempat ditempelkannya instruksi bahasa basisdata disebut sebagai inang (host language). Pada program bahasa inag yang ditempeli kode-kode bahasa basisdata mka saat source program

dikompilasi maka source program terlebih dahulu dilewatkan ke pre-kompilator (pre-compiler) yang menterjemahkan instruksi bahasa basisdata menjadi instruksi asli bahasa pemrograman inang.

Setelah itu, kode-kode yang telah dalam bahasa inang dikompilaasi menggunakan kompilator bahasa inang sehingga menghasilkan kode biner yang mengaitkan (link) instruksi – instruksi bahasa basisdata ke pustaka (library) yang berfungsi menghubung DBMS. Hasil – hasil instruksi bahasa basisdata segera ditangkap program bahasa inang dan diolah sesuai keperluan aplikasi.

Selain itu vendor DBMS juga selalu menyertakan fasilitas inteaktif memberi perintah ke DBMS secara langsung. Cara ini umumnya dipergunakan administrator untuk menjalankan tugasnya mengolah seluruh basisdata organisasi.

3.2. Komponen Bahasa BasisdataBerdasarkan fungsinya, bahasa basis data dapat dipilah ke dalam 3 (tiga) bentuk yaitu :1. Data Definition Language (DDL)2. Data Manipulation Language (DML)3. Data Control Language (DCL)

DDL berfungsi menspesifikasikan skema atau struktur basisdata, hasil pernyataan DDL adalah himpunan definisi data yang disimpan secara khusus pada data dictionary (data directory).

DML berisi sekumpulan operasi manipulasi data pada basisdata, DML biasa disebut bahasa query yaitu bahasa untuk meminta informasi dari basisdata karena komponen paling kompleks di DML adalah operaasi query. Sebenarnya DML tidak hanya berisi operasi utnuk query, namun juga meliputi operasi penghapusan, pembaruan dan penyisipan.

DCL merupakan sub bahasa untuk mengendalikan struktur internal basisdata, DCL untuk menyesuaikan sistem agar supaya lebih efisian dan DCL sangat bergantung pada vendor.

3.2.1. Data Definition Language (DDL)

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

21

Page 22: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Struktur / skema basis data yang menggambarkan / mewakili desain basis data secara keseluruhan dispesifikasikan dengan bahasa khusus yaitu DDL. Dengan bahasa ini kita dapat membuat tabel (create table) baru, indeks, mengubah table, menentukan struktur penyimpanan table, dan lainnya. Hasil dari kompilasi perintah DDL, adalah kumpulan table yang disimpan dalam file

khusus yang disebut kamus data (data dictionary).Kamus data merupakan suatu metadata (superdata), yaitu data yang

mendiskripsikan data sesungguhnya. Contoh perintah DDL dengan Foxpro adalah create matakuliah, modify report, modify structure, dan lainnya, sedangkan perintah DDL dengan MS-SQl Server 2000, contohnya adalah create new database Penjadwalan_mengajar_dosen dan contoh lainnya adalah new table dosen dengan struktur sebagai berikut:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

22

Page 23: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 3.1. Create database dengan MS-SQL Server 2000

Gambar 3.2. Create table mahasiswa dengan MS-SQL Server 2000

3.2.2. Data Manipulation Language (DML)Bentuk bahasa basis data untuk melakukan menipulasi dan pengambilan

data pada suatu basis data. Manipulasi data pada dabase dapat berupa :

1). Penyisipan / penambahan data pada file / table dalam suatu basis data.2). Penghapusan data pada file / table dalam suatu basis data.3). Pengubahan data pada file / table dalam suatu basis data.4). Penelusuran data pada file / table dalam suatu basis data.

Pada level phisik kita harus mendefinisikan alghoritma yang memungkinkan pengaksesan yang efisien terhadap data. Pada level yang lebih tinggi yang dipentingkan bukan efisien akses, tapi juga efisiensi interaksi pemakai dengan sistem.

DML merupakan bahasa yang bertujuan memudahkan pemakai untuk mengakses data sebagaimana direpresentasikan oleh model data. Ada 2 (dua) jenis DML adalah sebagai berikuit :

1). Prosedural, yang mensyaratkan pemakai menentukan, data apa yang diinginkan serta bagaimana cara mendapatkannya.

2). Nonprosedural, yang membuat pemakai dapat menentukan data apa yang diinginkan tanpa menyebutkan bagaimana cara mendapatkannya.

Contoh paket bahasa prosedural DML : dBase, FoxBase, sedang untuk

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

23

Page 24: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Nonprosedural DML : SQL (Structure Query Language), QBE (Query By Example).QueryAdalah pernyataan yang diajukan untuk mengambil informasi di dalam suatu basis data. Query merupakan bagian dari DML yang untuk pengambilan informasi disebut Query Language.Berikut ini adalah contoh penggunakan perintah query dengan menggunakan database MS-SQL Server 2000, dapat dilihat pada gambar 3.3. berikut ini :

Perintah Query (SQL)

Hasil Query

Gambar 3.3. Perintah Query dengan MS-SQL Server 2000

3.3. Pengguna DatabaseBasis data yang telah diciptakan yang terdiri dari beberapa table yang saling

berkaitan, tentunya harus dimanfaatkan oleh para pengguna. Di dalam suatu basis data terdapat beberapa pengguna, antara lain adalah:

1). Database ManagerSatu database manager adalah satu modul program yang menyediakan

interface antara penyimpanan data low-level dalam database dengan satu aplikasi program dan query yang diajukan ke sistem.

Tugas dan tanggungjawab database manager:a. Interaksi dengan manager file

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

24

Page 25: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

b. Integritasc. Keamanand. Bakcup dan recovery

2). Database AdministratorOrang yang mempunyai kekuasaan sebagai pusat pengontrolan terhadap

seluruh sistem baik data maupun program yang mengakses data disebut sebagai database administrator.

Fungsi database administrator:a. Mendefinisikan pola struktur database.b. Mendefinisikan struktur penyimpanan dan metode akses.c. Mampu memodifikasi pola dan organisasi phisik.d. Memberikan kekuasaan pada user untuk mengakses data.e. Menspesifikasikan keharusan integritas data.

3). Database UserAda 4 macam pemakai database yang berbeda keperluan dan cara aksesnya,

yaitu : 1. Programmer Aplikasi, 2. Casual User (user mahir), 3. User Umum (end user), dan 4. User khusus (specialized user).

3.4. Basis Data RelasionalPada model relasional, basis data akan “disebar” (dipilah-pilah) kedalam berbagai

tabel 2 dimensi. Setiap tabel terdiri atas lajur mendatar yang disebut dengan baris data (row / record), dan lajur vertical yang biasa disebut dengan kolom (columm / field). Di setiap pertemuan baris data dan kolom itulah item-item data (satuan data terkecil) ditempatkan.

Ilustrasi Model Data RelasionalSebelum penerapan basis data dilakukan, lebih dahulu kita harus mengetahui

contoh data yang akan digunakan. Contoh data ini harus dianalisis untuk mengetahui karakteristik mengenai masing-masing tabel data. Pengetahuan karakteristik dijadikan dasar untuk penetapan struktur dari masing-masing tabel. Didalam penerapan basis data, penetapan struktur table dilakukan sebelum penyimpanan data.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

25

Page 26: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Berikut contoh data yang akan digunakan (data yang ada tidak menggambarkan kenyataan yang sesungguhnya ).

1. Data dosen, dengan isi data sebagai berikut:

Karakreristik data :

• Memiliki 9 buah kolom data.

• Kolom pertama berisi data angka tetapi tidak menunjukkan suatu jumlah (disebut alfa numerik) dengan lebar (banyaknya karakter) tetap, 5 karakter / dijit.

• Kolom kedua berisi data karakter / string dengan lebar maksimum 30 karakter.

• Kolom ketiga berisi data karakter / string dengan lebar maksimum 10 karakter.

• Kolom keempat berisi data penanggalan / date.

• Kolom kelima berisi data karakter / string dengan lebar maksimum 6 karakter.

• Kolom keenam berisi data karakter / string dengan lebar maksimum 50 karakter.

• Kolom ketujuh berisi data karakter / string dengan lebar maksimum 20 karakter.

• Kolom kedelapan berisi data karakter / string dengan lebar maksimum 5 karakter.

• Kolom kesembilan berisi data numeric dengan lebar maksimum 8 karakter.

Contoh diatas adalah karakteristik data untuk data dosen, data ini diambilkan dari contoh database pada sub bab 2.5 (contah database). Atas dasar karakteristik data tersebut selanjutnya kita bisa membentuk database physical (dengan catatan table – table yang telah terbentuk telah dilakukan normalisasi data) dengan menggunanan MS-Access, SQL Server, MYSql, Oracle atau tool database lainnya.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

26

Page 27: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Berangkat dari mendefinisikan karakteristik tersebut di atas, maka kita dapat menetapkan struktur dari masing-masing table. Secara minimal yang harus ditentukan dalam struktur table adalah :

1). Nama kolom (field / atribut).2). Tipe data (data type)3). Lebar (banyaknya karakter / dijit maksimum yang dapat ditampung.4). Pendefinisian kolom (apakah null atau not null)

Berangkat dari karakteristik yang dapat kita simpulkan dari fakta yang ada dari masing-masing data, struktur dari table dosen pada basis data Penjadwalan_mengajar_dosen, yang dapat ditentukan adalah sebagai berikut (struktur dengan MS-SQL Server):

1. Table dosen

Adapun untuk struktur untuk table Matakuliah Jurusan dan Mengajar adalah sebagai berikut:

2. Table matakuliah

3. Tabel jurusan

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

27

Page 28: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

4. Tabel mengajar

Untuk kolom Allow Nulls jika tidak ada tanda check list maka kolom (field) tersebut harus isi datanya dan tidak boleh kosong.

Untuk tanda key adalah kolom (field) tersebut adalah sebagai primary key pada table yang terbentuk. Pendefinisan untuk tipe data dan lebar field harus disesuaikan dengan data sesungguhnya, lebar tidak boleh kurang tapinhindari lebar yang berlebihan.

Pertanyaan Soal 1. Jelaskan dan berikan contoh pengertian dari DDL (data definition language) ?.2. Jelaskan pengertian dari DML (data manipulation language), manipulasi apa saja yang dapat

kita lakukan berkenaan dengan basis data (database) ?.3. Jelaskan pengertian daripada Query ?.4. Jelaskan pengertian database administrator, fungsi apa saja yang harus dilakukan oleh

database administrator ?.5. Berikan penjelasan tentang karakteristik data untuk table matakuliah, jurusan dan mengajar ?.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

28

Page 29: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

BAB 4NORMALISASI DATA

Perancangan basis data diperlukan, agar kita bisa memiliki basis data yang kompak dan efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam pemanipulasian (tambah, ubah, hapus) data.

Dalam merancang basis data, kita dapat melakukannya dengan :1. Menerapkan normalisasi pada struktur table yang telah diketahui.2. Langsung membuat model ER (Entity Relationship)

Proses Normalisasi, merupakan proses pengelompokan data elemen menjadi table-table

yang menunjukkan entity dan relasinya. Pada proses normalisasi selalu diuji pada beberapa kondisi,

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

29

Page 30: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

apakah ada kesulitan pada saat menambah / insert, menghapus / delete, mengubah / update, dan membaca / retrieve pada suatu Database.

Bila ada kesulitan pada pengujian tersebut, maka relasi tersebut dipecahkan menjadi beberapa table lagi, sehingga diperoleh database yang optimal.

4.1. Atribut TableNormalisasi lebih difokuskan pada tinjauan komprehensif terhadap setiap kelompok data

(table) secara individual. Lebih jauh tinjauan tersebut dititikberatkan pada data di masing – masing kolom pembentuk tabel. Kita menggunakan istilah baru, yaitu atribut yang sebenarnya identik dengan pemakaian istilah kolom data atau field.

Sebagai contoh :

o Table Dosen, memiliki 9 buah field / atribut, yaitu : nid, nama_d, tempat_lhr, tgl_lahir,

jkelamin, alamat, kota, kodepos, dan gajipokok.o Table Matakuliah, memiliki 4 buah atribut, yaitu : kdmk, nama_mk, sks dan semester.

o Table Jurusan, memiliki 4 buah atribut, yaitu : kode_jur, nama_jur, jenjang, dan

nama_kajur.o Table Mengajar, memiliki 9 buah atribut, yaitu : nid, thn_akademik, smt, hari, jam_ke,

kdmk, waktu, kelas, dan kode_jur.

Dari 4 table di atas, masing-masing table memiliki field / atribut sebagai key, dan lainnya sebagai atribut deskriptif. Ada pula atribut yang tergolong atribut sederhana atau komposit dan lainnya.

4.1.1. Key dan Atribut DeskriptifKey, adalah satu atau gabungan beberapa atribut yang dapat membedakan semua baris data

(row) dalam tabel secara unik. Artinya adalah apabila suatu field / atribut dijadikan key, maka tidak boleh ada dua atau lebih baris data dengan nilai yang sama untuk field / atribut tersebut.

Sehubungan dengan pernyataan tersebut, maka kita dapat membedakan 3 (tiga) macam key

yang dapat diterapkan pada suatu tabel :

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

30

Page 31: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

1. Superkey.

2. Candidate-Key.

3. Key Primer (Primary-Key).

4. Kunci tamu (Foreign Key)

a. Superkey

Superkey adalah merupakan satu atau lebih field / atribut (kumpulan atribut) yang dapat membedakan setiap baris data dalam sebuah table secara unik. Bisa terjadi, ada lebih dari 1 kumpulan atribut yang bersifat seperti itu pada sebuah table.

Pada tabel Dosen yang memiliki 4 buah field / atribut tersebut, yang dapat menjadi superkey

adalah :

o (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos, gajipokok)

o (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos)

o (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota,)

o (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat,)

o (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin,)

o (nid, nama_d, tempat_lhr, tgl_lahir)

o (nid, nama_d, tempat_lhr)

o (nid, nama_d,)

o (nid)

o (nama_d)

b. Candidate-Key

Candidate_key adalah merupakan kumpulan field / atribut minimal yang dapat membedakan setiap baris data dalam sebuah table secara unik.Sebuah Candidate-key tidak boleh berisi atribut atau kumpulan atribut yang telah menjadi superkey yang lain. Jadi sebuah Candidate-key pasti superkey, tapi belum tentu sebaliknya.

Pada table Dosen tersebut diatas, yang dapat menjadi Candidate-key adalah :

♦ (nid).

♦ (nama_d), jika kita bisa menjamin tidak ada nilai yang sama untuk atribut ini.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

31

Page 32: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Pada sebuah table dimungkinkan ada lebih dari satu Candidate-key, seperti contoh diatas. Salah satu dari Candidate–key ini (jika memang lebih dari satu) dapat dijadikan sebagai Key Primer

(Primary key).

c. Primarye-Key

Primary_key adalah candidate-key yang dipilih untuk mengidentifikasi tupel secara unik pada suatu relasi. Kunci utama dapat terbentuk dari satu atribut atau lebih.

Pemilihan Key Primer dari sejumlah Candidate-key pada suatu table didasari pada ketiga hal berikut ini:

1. Key tersebut lebih sering (natural) untuk dijadikan acuan.2. Key tersebut lebih ringkas.3. Jaminan keunikan Key tersebut lebih baik.

Dengan pertimbangan tersebut, kedua Candidate-key pada table dosen, yaitu nid dan nama_d, yang lebih cocok sebagai Key Primer adalah (nid). Hal ini dikarenakan bahwa jaminan keunikan daripada nid (nomor induk dosen) akan terjamin karena karena setiap nid pada suatu perguruan tinggi pastinya tidak akan sama nilainya, sedangkan kenapa tidak memilih nama_d, karena nama_d kemungkinan ada yang sama nilainya.

c. Foreign-Key

Kunci tamu adalah satu atribut (satu set atribut) yang melengkapi satu relationship

(hubungan) yang menunjukkan ke induknya. Kunci tamu ditempatkan pada relasi anak dan sama dengan kunci primer induk direlasikan.

Hubungan antara relasi induk dengan anak adalah satu lawan banyak (one to many

relationship).

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

32

Page 33: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 4.1. Relasi one to many

Kunci tamu dari table / relasi mengajar adalah : nid, kdmk dan kode_jur karena dalam table

ini membutuhkan data – data yang ada dalam table dosen, matakuliah dan jurusanKunci primer untuk table / relasi mengajar adalah nid,thn_akademik,smt,hari,jam_kei,

karena unik dan mewakili entity.

Dalam hal hubungan 2 buah relasi yang mempunyai relation banyak ke banyak (many to

many), maka terdapat 2 buah kunci tamu pada relasi konektornya.

Contoh: Relasi Proyek RelasiPegawai

Gambar 4.2. Relasi many to many

Hubungan relasi proyek dengan pegawai adalah many to many, dengan pengertian bahwa satu pegawai mengerjakan lebih dari 1 proyek dan 1 proyek dikerjakan oleh beberapa pegawai.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

33

No_proyekTgl_mulaiTgl_selesaiAnggaran

NIKNama Alamat….

Page 34: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Untuk menunjukkan hubungan tersebut, maka dipakai relasi konektor yang berisi kunci tamu dari kedua relasi (proyek dan pegawai). Sehingga relasi konektor proyek_pegawai berisi atribut :

Relasi Proyek_pegawai

Pada relasi proyek_pegawai tersebut atribut nik dan no_proyek merupakan kunci tamu (FK) dan keudnya juga menjadi primay key, dan keduanya merupakan kunci primer (primary key) pada relasi induknya.

Sehingga hasilnya menjadi sebagai berikut : Relasi Proyek RelasiPegawai

Relasi Proyek_pegawai

Keterangan : FK = Foreign Key (kunci tamu), PK = Primary Key (kunci utama)

Gambar 4.3. Dekomposisi many to manyd. Atribut Deskriptif

Atribut diskriptif adalah atribut – atribut yang tidak menjadi atau merupakan anggota dari Key

Primer pada suatu table didalam database. Pada table dosen diatas, yang menjadi atribut diskriptif adalah nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos, gajipokok.

4.1.2. Atribut Sederhana dan Atribut KompositAtribut sederhana adalah merupakan atribut atomik yang tidak dapat dipilah lagi menjadi

lainnya, sedangkan atribut komposit adalah merupakan atribut yang masih dapat diuraikan lagi menjadi sub-sub atribut yang masing-masing memiliki makna.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

34

NIK (FK ) / (PK)No_proyek (FK) / (PK)Jam Kerja

No_proyek (PK)Tgl MulaiTgl SelesaiAnggaran

NIK (PK)Nama Alamat….

NIK (FK) / (PK)No Proyek (FK) / (PK)Jam Kerja

Page 35: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Sebagai contoh pada table dosen tersebut diatas:

♦ Nama_d, tempat_lhr merupakan contoh atribut sederhana, karena tidak dapat diuaraikan lagi menjadi atribut lainnya.

♦ Alamat seorang dosen adalah merupakan contoh atribut komposit, karena dapat diuraikan menjadi beberapa sub atribut seperti : alamat_jln, kelurahan,kecamatan rt,rw,no_rumah, yang masing – masing memiliki makna tersendiri.

Contoh Atribut sederhana:

Contoh Atribut Komposit:

Gambar 4.4. Atribut sederhana dan komposit

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

35

Page 36: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Pada atribut alamat, dipecah menjadi 6 (enam) atribut (alamat_jln, kelurahan,kecataman,rt,rw,no_rumah), bertujuan jika kelak ada rencana / kebutuhan untuk melakukan pengolahan data terhadap sub-sub atribut tersebut. Misalkan untuk mencari dosen yang tinggal di kelurahan atau kecamatan tertentu siapa saja, atau ingin mecari dosenj yang tinggal di kota tertentu (Bekasi misalnya) siapa saja dapat dihasilkan dengan mudah dengan memanfaatkan fasilitas SQL (query).

4.1.3. Atribut Bernilai Tunggal dan Atribut Bernilai BanyakAtribut bernilai tunggal ditujukan pada atribut – atribut yang memiliki paling banyak satu nilai

untuk setiap baris data. Pada table dosen, atribut (nid, nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos,

gajipokok) merupakan atribut bernilai tunggal, karena atribut-atribut tersebut hanya dapat berisi satu nilai. Jika ada seorang dosen yang memiliki 2 tempat tinggal, maka hanya salah satu saja yang boleh dimasukkan ke atribut alamat.

Atribut bernilai banyak ditujukan pada atribut-atribut yang dapat kita isi dengan lebih dari satu nilai, tetapi jenisnya sama. Pada table dosen, kita dapat menambahkan atribut hobbi. Seorang dosen ada yang mempunyai 1 hobi, banyak hobi, bahkan ada yang tidak punya hobi.

Atribut bernilai Tunggal Atribut bernilai Banyak (hobi)

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

36

Page 37: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 4.5. Atribut bernilai tunggal dan banyak

4.1.4. Atribut Harus Bernilai (Mandatory Attribute ) dan Nilai NullMandatory Attribute adalah merupakan sejumlah atribut yang ada pada suatu table yang

harus berisi data dan tidak boleh kosong.Sedangkan Non Mandatory Attribute adalah sejumlah atribut yang ada pada suatu table

yang boleh tidak diisi datanya / boleh kosong. Nilai Null digunakan untuk mengisi atribut – atribut yang nilainya memang belum siap / tidak ada. Misalkan pada table dosen kita tambahkan 1 (satu) record, seperti tampak pada gambar berikut:

Gambar 4.6. Atribut harus bernilai dan nilai null

Atribut nid dan nama_d adalah atribut mandatory dan nilainya tidak boleh kosong (not null), hal ini juga berhubungan pada saat kita mendesain table pada database, pada saat table

dosen tersebut di create maka pendefinisian atribut tersebut harus not null/ dan biasanya yang menjadi primary key pada suatu table pasti nilainya not null.

Untuk atribut yang berisi null adalah karena data yang ada maasih meragukan atau belum ada sama sekali, jadi pada saat kita meng create table untuk atribut tersebut harus didefinisikan null, kalau kita mendefinisikan not null, walaupun datanya belum ada atau meragukan maka kita harus mengisi datanya.

Pada contoh diatas yang menjadikan mandatory atribut adalah nid dan nama_d,karena pada saat petugas melakukan input (pemasukan data) nid pasti ada nama_d, karena nim akan terbentuk kalau nama_d (nama dosen) nya ada, tidak mungkin ada nim sedangkan nama_d nya tidak ada dan pada atribut ini nilainya harus ada tidak boleh kosong (null) jadi harus isi datanya. Sedangkan untuk atribut non mandatory adalah tempat_lhr,tgl_lahir,jkelamin,alamat dan lainnya, karena pada atribut tersebut nilainya boleh kosong dikarenakan datanya belum siap atau masih meragukan.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

37

Page 38: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

4.1.5. Atribut Turunan (Derived Attribute)Atribut turunan adalah atribut yang nilai-nilainya diperoleh dari pengolahan atau dapat

diturunkan dari atribut atau table lain yang berhubungan. Penambahan atribut tahun_masuk pada table dosen merupakan contoh atribut turunan.

Gambar 4.7. Atribut turunan

Atribut tahun_masuk pada contoh diatas dapat ditiadakan, karena atribut tersebut dapat diperoleh dari atribut nid, yaitu 2 digit pertama yang menyatakan tahun masuk dosen, jadi tidak perlu dibuat untuk atribut tersebut.

Pertanyaan Soal 1. Jelaskan pengertian daripada Key dan atribut deskriptif ?.2. Jelaskan dan berikan contoh pengertian dari superkey, candidate key, primary key dan

foreign key ?.3. Jelaskan dan berikan contoh pengertian daripada atribut sederhana dan komposit ?.4. Jelaskan dan berikan contoh pengertian daripada atribut bernilai tunggal dan bernilai

banyak ?.5. Jelaskan dan berikan contoh pengertian daripada atribut turunan ?.6. Berikan penjelasan, mana yang merupakan superkey, candidate key, primary key dan foreign

key dari table (relasi) Matakuliah, Jurusan dan Mengajar dari database

Penjadwalan_mengajar_dosen ?.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

38

Page 39: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

BAB 5ANOMALI DAN INTEGRITAS DATA

PADA MODEL RELASIONAL

5.1. AnomaliAnomali adalah proses pada basisdata yang memberikan efek samping yang tidak diharapkan

(misal menyebabkan ketidak-konsistenan data atau membuat sesuatu data menjadi hilang ketika data lain dihapus). Anomali pada basis data dapat dibedakan menjadi 3 (tiga ), yaitu beikut ini:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

39

Page 40: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

1. Anomali Peremajaan (Update)

2. Anomalsi Penghapusan (Delete), dan3. Anomali Penyisipan (Insert).

Berikut ini adalah contoh relasi KRS (Kartu Rencana Studi) mahasiswa pada suatu perguruan tinggi. Dalam relasi ini terdapat 8 (delapan) atribut, yaitu nim,nama_m,kdmk,nama_mk,sks,smt,tahun dan status_ambil, dengan data – data yang ada sebagai berikut:

Gambar 5.1. Relasi KRSa. Anomali Peremajaan (Update).

Anomali peremajaan terjadi apabila ada perubahan pada sejumlah data yang mubazir pada suatu table tetapi tidak seluruhnya diubah. Pada contoh relasi KRS tersebut, terjadi anomali peremajaan, seandainya nama matakuliah ‘Pengantar Teknologi Informasi’ berubah menjadi ‘Sistem Teknologi Informasi’, dan perubahan hanya dilakukan pada record 1pertama, dan record kedua dan empat tidak dilakukan perubahan, maka hal ini menyebabkan adanya ketidakkonsistenan.

b. Anomali Penyisipan (Insert).Anomali peremajaan terjadi apabila pada saat penambahan hendak dilakukan, ternyata ada

elemen data yang masih kosong, dan elemen data tersebut justru menjadi kunci. Pada contoh relasi KRS tersebut terjadi anomali peremajaan, seorang mahasiswa mengambil

beberapa matakuliah untuk semester dan tahun akademik tertentu. Masalahnya, bagaimanakah menyimpan fakta bahwa ada suatu matakuliah baru yang tidak diambil oelh mahasiswa ?. Penyisipan tidak bisa dilakukan karena tidak ada informasi mahasiswa yang mengambil matakuliah tersebut.

c. Anomali Penghapusan (Delete).Anomali peremajaan terjadi apabila suatu baris (record) yang tidak terpakai dihapus,

dan sebagai akibatya ada data lainnya yang hilang.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

40

Page 41: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Pada contoh relasi HRS tersebut terjadi anomali penghapusan, apabila data pada record pertama dihapus, maka seluruh data yang ada pada record tersebut akan terhapus juga, padahal data tersebut masih diperlukan.5.2. Ketergantungan Fungsional

Diberikan suatu tabel, misal T dengan 2 atribut A dan B, kita dapat menyatakan notasi sebagai baerikut :

A BPengertian dari notasi tersebut adalah : A secara fungsional menentukan B, atau B secara

fungsional tergantung pada A.Diberikan 2 row r1 dan r2 dalam tabel T dimana A B.Jika r1(A)=r2(A}, maka r1(B)=r2(B}.

Contoh KF :Nama_kul Nim Nama_mhs Indeks_nilaiAlgorithma 980001 Ali akbar AAlghorithma 980004 Indah S BBasis data 980001 Ali akbar

Basis data 980002 Budi HBasis data 980004 Indah SPengembangan Diri 980001 Ali Akbar BBahasa Inggris I 980002 Budi H C

Gambar 5.2. Ketergantungan fungsional

Dari data diatas, Ketergantungan Fungsional yang dapat diajukan adalah :1. Nim nama_mhs, Artinya adalah atribut Nama_mhs hanya tergantung pada atribut Nim.

Faktanya adalah setiap nilai nim yang sama, maka pasti nama_mhs – nya juga sama.2. Nama_kul, Nim Indeks_nilai, Artinya adalah atribut Indeks_nilai tergantung pada atribut

Nama_kul dan Nim secara bersama – sama. KF mempunyai pengertian bahwa setiap indeks nilai diperuntukkan pada mahasiswa tertentu untuk matakuliah tertentu yang diambilnya.

Contoh Non KF :1. Nama_kul Nim, artinya adalah atribut Nim tidak tergantung pada Nama_kul. Buktinya bahwa

pada Row 1 dan row 2, dengan nilai Mata_kul sama tetapi nilai Nim – nya tidak sama.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

41

Row 1Row 2Row 3Row 4Row 5Row 6Row 7

RRRRR

Page 42: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

2. Nim Indeks_nilai, artinya adalah bahwa atribut Indeks_nilai tidak hanya tergantung pada atribut Nim. Buktinya terlihat pada row 1 dan 6, dengan nilai Nim sama, tapi nilai Indeks_nilai – nya berbeda.

5.3. Domain Atribut Domain Atribut adalah merupakan suatu gugus nilai yang mungkin dimiliki oleh suatu atribut

pada suatu table / relasi dalam database. Berikut ini adalah contoh relasi rekening pada suatu database perbankan.

No_Rekening Status Saldo1 012.145.002 Checking 8.000.000,002 012.146.013 Saving 3.000.000,003 012.146.890 Saving 4.000.000,004 210.234.956 Checking 5.000.000,005 345.120.034 Checking 4.500.000,006 123.000.021 Saving 4.800.000,00

Gambar 5.3. Domain atribut

Pada relasi rekening diatas mempunyai pengertian sebagai berikut yang berhubungan dengan domain :

Domain dari atribut Status adalah { Saving, Checking }, yang mempunyai arti adalah nilai yang mungkin diberikan pada atribut status adalah hanya Saving dan Checking

Domain dari atribut Saldo, adalah semua bilangan nyata yang positif, domain atribut ini merupakan gugus tak hingga.

Domain atribut No_Rekening adalah semua kode rekening yang meungkin dikeluarkan oleh Bank tersebut.

5.4. Integritas DataInformasi yang disimpan pada basisdata hanya bagus jika DBMS membantu mencegah

pemasukan informasi yang tidak benar. Konstrain integritas adalah syarat yang dispesifikasikan pada skema basisdata dan mebatasi data yang dapat disimpan dalam basisdata. Jika basisdata memenuhi semua konstrain integritas yang dispesifikasikan pada skema basisdata maka basis data adalah legal. DBMS memaksakan konstrain integritas sehingga hanya mengijinkan basisdata legal yang akan

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

42

44444

Page 43: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

disimpan oleh DBMS. Konstrain integritas menjamin bahwa perubahan – perubahan yang dilakukan orang yang diotorisasi tidak menghasilkan pelanggarakan konsistensi data.

Integritas data mengacu ke konsistensi dan akurasi data yang disimpan dalam basisdata. Konstrain integritas dispesifikasikan dan dipaksakan pada waktu yang berbeda, yaitu:

1. Ketika DBA mendefinisikan skema basisdata (lewat DDL), DBA menspesifikasikan konstrain integritas yang harus selalu dipenuhi basisdata.

2. Ketika aplikasi basisdata dijalankan, DBMS melakukan Pemeriksaan untuk mencegah terjadinya pelanggaran dan mencegah perubahan – perubahan yang melanggar konstrain integritas. Pada beberapa situasi, DBMS tidak melarang suatu aksi yang dapat menimbulkan pelanggaran namun kemudian DBMS membuast tindakan – tindakan otomatis untuk memenuhi konstrain integritas. Dengan demikian dijamin perubahan – perubahan pada basisdata tidak menghasilkan baisdata yang melanggar konstrain integritas.

5.4.1. Jenis konstrain integritasIntegritas dapat dikelompokkan menjadi 2 (dua), yaitu integritas didalam relasi yaitu aturan

integritas entitas dan aturan integritas domain dan integritas dengan luar relasi yaitu aturan integritas referensial.

Selain itu terdapat aturan integritas untuk memenuhi aturan – aturan yang berlaku di perusahaan yang disebut aturan integritas perusahaan atau aturan bisnis yang harus dipenuhi oleh basisdata. Dengan demikian, dapat diringkaskan integritas data di model relasional, meliputi:

1. Aturan integritas domain.2. Aturan integritas entitas.3. Aturan integritas referensial.4. Aturan integritas perusahaan (didefiniskan pemakai).

Hubungan antara domain, entitas dan referensial integritas dapat dilihat pada gambar berikut ini:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

43

44444

Domain Integrity (column)

Entity Integrity (rows)

Referensial Integrity (between tables

Page 44: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 5.4. Hubungan antar konstrain integritas

a. Integritas domainDomain adalah nilai – nilai yang dimungkinkin diasosiasikan dengan setiap atribut.

Kemungkinan beberapa atribut mempuyai domain yang sama, misalnya atribut nama_pelanggan, nama_pekerja dapat mempunyaim domain yang sama. Namun tidak jelas apakah nama_pekerja dan nama_kota seharusnya mempunyai doamin yang sama. Pada level implementasi, baik nama_pekerja dan nama_kota adalah string karakter. Namun kita tidak bisa membuat query “tampilkan nama pekerja yang namanya sama dengan nama kota” sebagai query yang mempunyai arti. Dengan demikian, jika kita memandang basisdata pada level konseptual buka level fisik, maka nama_pekerja dan nama_kota adalah mempunyai domain yang berbeda.

Konstrain domain tidak hanya memungkinkan kita menguji nilai-nilai yang dimasukkan ke basisdata tapi juga memungkinkan kita melakukan pemeriksaan query untuk menjamin perbandingan yang dibuat mempunyai arti.b. Integritas entitasNull merepresentasikan suatu nilai untuk atribut dimana pada saat itu nilainya belum

diketahui atau tidak diterapkan untuk tupel itu. Null adalah cara menanggapi ketidaklengkapan atau kondisi kekecualian yang terjadi pada data. Null tidak sama dengan nilai numerik nol (0) atai string teks spasi.

Null dapat menyebabkan masalah pada implementasi, kesulitan akan muncul karena pada model relasional berdasarkan kalkulus predikat order pertama yaitu logika bernilai dua atau logika boole-yaitu nilai yang diperbolehkan hanyalah true atau false.

Kita dapat menciptakan kalimat Create Table yang mencegah kolom yang bernilai Null dengan menggunakan konstrain Not Null, konstrain ini berlaku untuk kolom. Jika kita menempatkan Not Null segera setelah tipe data dari kolom maka peletakan nilai Null di kolom akanj ditolak. Bila tidak dinyatakan, SQL mengasumsikan Null diijinkan kecuali bila dispesifikasikan sebagai bagian dari kunci utama dengan Primary Key.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

44

Page 45: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Create Table Dosen(

nid char(10) Primary Key,nama_d varchar(50) Not Null,tempat_lhr varchar(25),tgl_lahir datetime,jkelamin varchar(10),alamat varchar(90),kota varchar(30),kodepos char(5),gajipokok numeric(9)

)

nama_d tidak boleh diisi dengan Null, sedangkan tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos, gajipokok boleh diisi dengan nilai Null pada kalimat insert ataupun update. Sementara nid dengan sendirinya adalah not null karena sebagai bagia dari kode primer yang didefinisikan dengan primary key.

c. Integritas referensialIntegritas pengacuan adalah jika foreign key terdapat di relasi maka nilai foreign key harus

cocok pada nilai candidate key suatu tupel di relasi asal (home relation) atau nilai foreign key seluruhnya Null. Kita sering berkehendak menjamin nilai yang muncul di satu relasi untuk suatu himpunan atribut tertentu juga muncul sebagai himpunan atribut tertentu pada relasi lain.

Cretae Table Mangajar(

nid char(10) not null,thn_akademik char(4) not null,smt int not null,hari varchar(10) not null,

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

45

Page 46: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

jam_ke char(1) not null,kdmk char(9),waktu char(10),kelas char(5),

kode_jur char(2),Constraint PkAjar Primary Key(nid,thn_akademik,smt,hari,jam_ke),Constraint Fkmatakuliah Foreign Key(kdmk) References Matakuliah(kdmk),Constraint Fkdosen Foreign Key(nid) References Dosen(nid),Constraint Fkjurusan Foreign Key(kode_jur) References Jurusan(kode_jur))

d. Integritas enterpriseIntegritas keperusahaan adalah aturan – aturan tambahan yang dispesifikan pemakai atau

administrator basisdata. Pemakai menspesifikasikan konstrain tambahan yang harus dipenuhi data.Konstrain tipe, domain, kunci dan referensial bersifat struktural, membatasi struktur ata.

Aturan perusahaan tidak berkaitan erat dengan struktur. Konstrain perusahaan ini disebut konstrain semantiks karena diturunkan dari domain aplikasi tertentu yang dimodelkan basidata.

Contoh : jika telah dibatasi jumlah staf di satu kantor cabang berjumlah 20 orang, maka administrator harus dapat menspesifikasikan ketentuan itu dan DBMS mampu memaksakan konstrain ketentuan ini. Anggota staf baru tidak dapat dimasukkan ke relasi staf jika jumlah staf saat itu telah mencapai 20.

Pertanyaan Soal1. Jelaskan pengertian daripada anomali dan sebutkan 3 (tiga) anomali dalam suatu database

(basis data) ?.2. Jelaskan dan berikan contoh terjadinya anomali peremajaan (update), penyisipan (insert) dan

penghapusan (delete) ?.3. Berikan contoh terjadinya ketergantungan fungsional pada suatu database ?.4. Berikan penjelasan entitas integritas, domain integritas dan referensial integritas serta berikan

contohnya ?.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

46

Page 47: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

BAB 6BENTUK – BENTUK NORMALISASI

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

47

Page 48: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Ketika merancang basisdata menggunakan model relasional, kita sering menemui beberapa alternatif dalam pendefinisian himpunan skema relasi. Beberapa pilihan lebih nyaman dibanding pilihan – pilihan lain untuk beragam alasan.

Aturan-aturan normalisasi dinyatakan dalam istilah bentuk normal. Bentuk Normal adalah suatu aturan yang dikenakan pada relasi-relasi dalam basis data dan harus dipenuhi oleh relasi tersebut pada level-level normalisasi. Suatu relasi dikatakan dalam bentuk normal tertentu jika memenuhi kondisi-kondisi tertentu.

6.1. Bentuk NormalisasiBentuk – bentuk Normalisi yang ada dalam mendesain basis data adalah sebagai

berikut :

1). Bentuk normal pertama (1NF)2). Benatuk normal kedua (2NF)3). Bentuk normal ketiga (3NF)4). Bentuk normal Boyce-Codd (BCNF)5). Bentuk normal keempat (4 NF)6). Bentuk normal kelima (5NF)

Bentuk normal pertama (1NF) s/d normal ketiga (3NF), merupakan bentuk normal yang umum dipakai. Artinya adalah pada kebanyakan relasi, bila ketiga bentuk normal tersebut telah dipenuhi, maka persoalan anomali tidak akan muncul lagi didalam kita melakukan perancangan database.

Kriteria dalam proses normalisasi adalah kebergantungan fungsional, kebergantungan banyak nilai dan kebergantungan join. Ketiga tipe kebergantungan tersebut digunakan untuk menilai relasi – relasi yang dihasilkan dari konversi diagram ER menjadi kumpulan relasi – relasi. Proses normalisasi membentuk relasi – relasi bentuk normal menggunakan dekomposisi yang memecah relasi menjadi relasi – relasi berbentuk normal lebih tinggi.

Berikut ini adalah gambar untuk langkah – langkah melakukan normalisasi data, seperti tampak berikut ini:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

48

Tabel dengan atribut bernilai jamak

Tabel bentuk normal pertama

Tabel bentuk normal kedua

Tabel bentuk normal ketiga

Tabel bentuk Normal boyce-codd

Tabel bentuk Normal keempat

Tabel bentuk Normal kelima

Menghilangkan atribut bernilai jamak

Menghilangkan ketergantungan

parsial

Menghilangkan ketergantungan

transitif

Menghilangkan anomali tersisa disebabkan

ketergantungan fungsional

Menghilangkan ketergantungan nilai

jamak

Menghilangkan anomali tersisa

Page 49: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 6.1. Langkah – langkah Normalisasi

6.1.1. Bentuk Normal Pertama (1 NF)Bentuk normal pertama dikenakan pada tabel yang belum ternormalisasi (masih memiliki atribut yang berulang).

Berikut ini adalah contoh data – data yang belum ternormalisasiNIP Nama Jabatan Keahlian Lama

(tahun)107 Daffa Analis Senior Access

Oracle61

109 Revan Analis Yunior AccessClipper

22

112 Dilla Pogrammer AccessClipperVisual Basic

111

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

49

Page 50: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 6.2. Relasi Pegawai

Keahlian menyatakan atribut yang berulang (misal, fika punya tiga keahlian, dan Rian punya 2 keahlian).

a. Definisi Bentuk Normal Pertama (1NF) Suatu relasi dikatakan bentuk normal pertama, jika dan hanya jika setiap

atribut bernilai tunggal untuk setiap baris. Tiap field hanya satu pengertian, bukan merupakan kumpulan kata yang mempunyai arti mendua, hanya satu arti saja dan juga bukanlah pecahan kata – kata sehingga artinya lain. Tidak ada set atribut yang berulang-ulang atau atribut bernilai ganda.

Pada data tabel sebelumnya, contoh data belum ternormalisasi sehingga dapat diubah ke dalam bentuk normal pertama dengan cara membuat setiap baris berisi kolom dengan jumlah yang sama dan setiap kolom hanya mengandung satu nilai.

b. Contoh Normal Pertama (1NF)Berikut ini adalah contoh data pada relasi pegawai yang telah memenuhi

bentuk normal pertama

NIP Nama Jabatan Keahlian Lama 107 Daffa Analis Senior Access 6107 Daffa Analis Senior Oracle 1109 Revan Analis Yunior Access 2109 Revan Analis Yunior Clipper 2112 Dilla Pogrammer Access 1112 Dilla Pogrammer Clipper 1112 Dilla Pogrammer Visual Basic 1

Gambar 6.3. Relasi pegawai memenuhi 1NF

Berikut ini adalah contoh data pada relasi mahasiswa yang belum memenuhi bentuk normal pertama.

NIM Nama Dosen Wali Kode_mk1 Kode_mk2 Kode_mk39820001 Nia Dela Didik 1234 1435

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

50

Page 51: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

9810004 Andik P Primadina 1234 1435 12459810006 Rini Tukino 1324 1545 12459820008 Basuki Djuwadi 1324 1545

Gambar 6.4. Relasi Mahasiswa belum 1NF

Relasi mahasiswa yang mempunyai NIM, nama dan Dosen Wali mengikuti 3 mata kuliah, tabel tersebut belum memenuhi normal pertama karena ada perulangan Kode_mk 3 kali padahal hal tersebut bisa dijadikan 1 atribut saja. Jadi bentuk normal pertama dari data di atas adalah :

NIM Nama Dosen Wali Kode_mk9820001 Nia Dela Didik 12349820001 Nia Dela Didik 14359810004 Andik P Primadina 12349810004 Andik P Primadina 14359810004 Andik P Primadina 12459810006 Rini Tukino 13249810006 Rini Tukino 15459810006 Rini Tukino 12459810006 Rini Tukino 13249820008 Basuki Djuwadi 13249820008 Basuki Djuwadi 1545

Gambar 6.5. Relasi Mahasiswa memenuhi 1NF

Berikut ini adalah contoh data pada relasi matakuliah yang telah memenuhi bentuk normal pertama.

Kode_mk Matakuliah Sks Pengasuh1234 Sistem Basis Data 2 Didik Setiyadi,M.Kom.1435 Alghoritma 4 Tukino,S.Kom,MM.Si1545 Jaringan Komputer 2 Djuwadi,M.Kom.1245 Bahasa Inggris I 2 Dra. Siti Azizah

Gambar 6.6. Relasi matakuliah memenuhi 1 NF

Relasi matakuliah tersebut merupakan bentuk 1 NF, karena tidak ada atribut yang bernilai ganda, dan tiap atribut satu pengertian yang bernilai tunggal.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

51

Page 52: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

6.1.2. Bentuk Normal Kedua (2 NF)Definisi Bentuk Normal Kedua (2 NF) adalah :1). Memenuhi bentuk 1 NF (normal pertama).2). Atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama /

primary key.

Sehingga untuk membentuk normal kedua tiap tabel / file haruslah ditentukan kunci-kunci atributnya. Kunci atribut haruslah unik dan dapat mewakili atribut lain yang menjadi anggotanya. Pada contoh tabel Mahasiswa yang memenuhi normal pertama (1 NF), terlihat bahwa NIM merupakan Primery Key (PK).NIM Nama, Dosen Wali. Artinya adalah bahwa atribut Nama dan Dosen Wali bergantung pada NIM.Tetapi NIM Kode_mk. Artinya adalah bahqa atribut Kode_mk tidak tergantung pada NIM.

Untuk memenuhi normal kedua, maka pada relasi mahasiswa tersebut dipecah menjadi 2 relasi sebagai berikut:

NIM Nama Dosen Wali 9820001 Nia Dela Didik9810004 Andik P Primadina9810006 Rini Tukino9820008 Basuki Djuwadi

Gambar 6.7. Relasi mahasiswa memenuhi 2NFNIM Kode_mk9820001 12349820001 14359810004 12349810004 14359810004 12459810006 13249810006 15459810006 12459810006 13249820008 13249820008 1545

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

52

Page 53: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

6.1.3.

Gambar 6.8. Relasi ambil_kuliah memenuhi 2NF

Bentuk Normal Ketiga (3 NF)Definisi Bentuk Normal Ketiga (3 NF) adalah:1). Memenuhi bentuk 2 NF (normal kedua).2). Atribut bukan kunci tidak memiliki dependensi transitif terhadap kunci utama / primary

key.

Berikut Contoh relasi yang memenuhi bentuk 2 NF, tetapi tidak memenuhi bentuk 3 NF.

No Pesanan No Urut Kode Item Nama Item50001 0001 P1 Pensil50001 0002 P2 Buku Tulis50001 0003 P3 Penggaris50001 0004 P4 Penghapus50002 0001 P3 Penggaris50002 0002 P5 Bulpen50002 0003 P6 Spidol50003 0001 P1 Pensil50003 0002 P2 Buku Tulis

Gambar 6.9. Relasi pesanan_barang belum memenuhi 3NF

Atribut No Pesanan dan No Urut merupakan kunci primer, baik kode item dan nama item mempunyai dependensi fungsional terhadap kunci primer tersebut.Pada relasi di atas, setiap kode item sama, maka nilai nama item juga sama, sehingga menunjukkan adanya dependensi dua atribut tersebut, tapi manakah yang menentukan, apakah kode item bergantung pada nama item, atau sebaliknya? Jadi nama item memiliki dependensi fungsional terhadap Kode item.

Pada relasi ini menunjukkan bahwa nama item tidak memiliki dependensi secara langsung terhadap kunci primer (No pesanan dan No Urut). Dengan kata lain Nama Item memiliki dependensi transitif terhadap kunci primer.

Sehingga untuk memenuhi bentuk 3 NF, maka relasi di atas didekomposisi menjadi dua buah relasi sebagai berikut:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

53

Page 54: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

No Pesanan No Urut Kode Item50001 0001 P150001 0002 P250001 0003 P350001 0004 P450002 0001 P350002 0002 P550002 0003 P650003 0001 P150003 0002 P2

Gambar 6.10. Relasi pesanan_barang memenuhi 3NF

Kode Item Nama ItemP1 PensilP2 Buku TulisP3 PenggarisP4 PenghapusP5 BulpenP6 Spidol

Gambar 6.11. Relasi barang memenuhi 3NF

6.1.4. Bentuk Normal Boyce-Codd (BCNF)Definisi Bentuk BCNF adalah :1). Memenuhi bentuk 3 NF (normal ketiga).2). Semua penentu (determinan) adalah kunci kandidat (atribut yang bersifat unik).

Setiap atribut harus bergantung fungsi pada atribut superkey.

BCNF merupakan bentuk normal sebagai perbaikan terhadap 3 NF. Suatu relasi yang memenuhi BCNF selalu memenuhi 3 NF, tetapi tidak untuk sebaliknya. Suatu relasi yang memenuhi 3 NF belum tentu memenuhi BCNF. Karena bentuk 3 NF masih memungkinkan terjadi anomali.

Pada contoh berikut ini terdapat tabel SEMINAR, kunci primer adalah no_siswa + seminar, dengan pengertian bahwa : Siswa dapat mengambil satu atau dua seminar.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

54

Page 55: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Setiap seminar membutuhkan 2 instruktur. Setiap siswa dibimbing oleh salah satu dari 2 instruktur seminar. Setiap instruktur boleh hanya mengambil satu seminar saja.

Pada contoh ini, no_siswa dan seminar menunjukkan seorang instruktur.

No_siswa Seminar Instruktur22010012201002220100322010022201004

22812281229122912291

BudiKardiJoniRahmadRahmad

Gambar 6.12. Relasi seminar

Bentuk tabel SEMINAR adalah memenuhi bentuk normal ketiga (3 NF), tetapi tidak BCNF karena nomor seminar masih bergantung fungsi pada instruktur, jika setiap instruktur dapat mengajar hanya pada satu seminar. Seminar bergantung fungsi pada satu atribute bukan superkey seperti yang disyaratkan oleh BCNF.

Maka relasi SEMINAR harus didekomposisi menjadi dua relasi, yaitu relasi pengajar dan seminar_instruktur, seperti berikut ini :

Instruktur SeminarBudiKardiJoniRahmad

2281228122912291

Gambar 6.13. Relasi pengajar

No_siswa Instruktur220100122010022201003

BudiKardiJoni

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

55

Page 56: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

22010022201004

RahmadRahmad

Gambar 6.14. Relasi seminar_instruktur

6.1.5. Bentuk normal keempat ( 4 NF )Suatu relasi dikatakan dalam bentuk normal keempat dengan ketentuan sebagai

berikut ini : Bila dan hanya bila telah berada dalam bentuk BCNF dan tidak ada

multivalued dependency nontrivial. Multivalued dependency (MVD) dipakai dalam bentuk normal keempat ( 4

NF ). Dependensi ini dipakai untuk menyatakan hubungan satu ke bantak (one to

many).

Contoh :

Matakuliah Dosen IsiPengenalan Komputer Budi

SanjayaDasar KomputerPengenalan pengolahan kataPengenalan lembaran kerja

Matematika Sugeng Paijo DifferensialIntegral

Relasi tersebut menggambarkan mengenai dosen yang mengajar matakuliah tertentu dengan isi matakuliah yang bersangkutan. Contoh dua dosen yang mengajar pengenalan komputer, yaitu Budi dan Sanjaya. Adapun isi matakuliah Pengenalan Komputer adalah Dasar Komputer, Pengenalan Pengolahan Kata dan Pengenalan Lembaran Kerja.

Relasi berikut ini memperlihatkan relasi yang telah dinormalisasikan berdasarkan relasi sebelumnya.

Matakuliah Dosen IsiPengenalan Komputer Budi Dasar KomputerPengenalan Komputer Budi Pengenalan pengolahan kataPengenalan Komputer Budi Pengenalan lembaran kerjaPengenalan Komputer Sanjaya Dasar Komputer

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

56

Page 57: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Pengenalan Komputer Sanjaya Pengenalan pengolahan kataPengenalan Komputer Sanjaya Pengenalan lembaran kerjaMatematika Sugeng Paijo DifferensialMatematika Sugeng Paijo Integral

Relasi tersebut memenuhi bentuk BCNF karena primary key nya adalah gabungan dari matakuliah, dosen dan isi. Masalah tersebut dapat dipecahkan melalui dekompoisi, hal ini disebabkan karena terdapat kenyataan bahwa antara Dosen dengan Isi tidak ada ketergantungan. Solusi masalah tersebut diajukan oleh R. Fagin melalui konsep dependensi nilai banyak. Secara umum dependensi nilai banyak muncul pada relasi yang paling tidak memiliki tiga atribut dan dua diantaranya bernilai banyak, dan nilai – nilainya tergantung hanya pada atribut ketiga.

Pada suatu relasi R dengan atribut A, B, C, atribut B dikatakan bersifat multidependen terhadap A jika : Sekumpulan nilai B yang diberikan pada pasangan ( A, C) hanya tergantung pada

nilai A, dan, tidak tergantung pada nilai C. Hubungan diatas dinyatakan dengan :

A , dibaca “ A menentukan banyak nilai B” atau “B multidependen terhadap A”

Teorema Faqin yang berkaitan dengan multivalued dependency adalah : Bila R ( A, B, C ) merupakan suatu relasi, dengan A, B, C adalah atribut – atribut

relasi tersebut, maka proyeksi dari R berupa ( A, B ) dan ( A, C ) jika R memenuhi MVD A B | C

Perlu diketahui bahwa bila terdapat : A B, A C, maka keduanya dapat ditulis menjadi : A B | CBerdasarkan teorema Faqin diatas, maka relasi tersebut diatas dapat didekomposisi

menjadi dua relasi sebagai berikut :

Matakuliah DosenPengenalan Komputer Budi Pengenalan Komputer Sanjaya

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

57

Page 58: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Matematika Sugeng Paijo

Matakuliah IsiPengenalan Komputer Dasar KomputerPengenalan Komputer Pengenalan pengolahan kataPengenalan Komputer Pengenalan lembaran kerjaMatematika DifferensialMatematika Integral

6.1.5. Bentuk normal kelima ( 5 NF )Dependensi gabungan mendasari bentuk normal kelima. Suatu relasi R ( X,W,Z)

memenuhi dependensi gabungan jika gabungan dari proyeksi A, B, C dengan A, B, C merupakan sub himpunan dari atribut – atribut R. Dependensi gabungan sesuai dengan definisi diatas dinyatakan dengan notasi :

• * (A, B, C )

• dengan A = XY, B = YZ, C = ZX

Sebagai contoh terdapat hubungan dealer yang mengageni suatu perusahaan distributor kendaraan. Dalam hal ini distributor memiliki sejumlah produk kendaraan.

Dealer Distributor KendaraanSumber Jaya Nissan Truk NissanSumber Jaya Toyota Toyota KijangSumber Jaya Toyota Truk DynaAsterindo Nissan Sedan Nissan

Relasi tersebut memenuhi dependensi gabungan :*(Dealer Distributor, Distributor Kendaraan, Dealet Kendaraan)Sehingga relasi tersebut dapat didekomposisi menjadi tiga buah relasi yaitu :

Deal_Dist (Dealer_Distributor). Dist_Kend (Distributor_Kendaraan). Deal_Kend (Dealer_Kendaraan).

Gabungan ketiga relasi tersebut akan membentuk relasi DDK dan gabungan kedua proyeksi diatas bisa jadi menghasilkan relasi antara yang salah, namum ketiganya akan menghasilkan relasi sesuai aslinya.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

58

Page 59: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Bentuk normal Kelima ( 5 NF ) yang terkadang disebut PJ/NF ( Projection Join / Normal Form ), menggunakan acuan dependensi gabungan. Suatu relasi berada dalam 5 NF jika dan hanya jika setiap dependensi gabungan dalam R tersirat oleh kunci kandidat relasi R.

Dealer DistributorSumber Jaya NissanSumber Jaya ToyotaAsterindo Nissan

Distributor KendaraanNissan Truk NissanNissan Sedan NissanToyota Toyota KijangToyota Truk Dyna

Dealer Distributor KendaraanSumber Jaya Nissan Truk NissanSumber Jaya Nissan Sedan NissanSumber Jaya Toyota Toyota KijangSumber Jaya Toyota Truk DynaAsterindo Nissan Truk NissanAsterindo Nissan Sedan Nissan

Dealer KendaraanSumber Jaya Truk NissanSumber Jaya Sedan NissanSumber Jaya Toyota Kijang

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

59

Page 60: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Sumber Jaya Truk DynaAsterindo Sedan Nissan

6.2. Dependensi Transitif Definisi bentuk dependensi transitif adalah sebagai berikut :

Atribut Z mempunyai dependensi transitif terhadap X, bila :1). Y memiliki Dependensi fungsional terhadap X.2). Z memiliki dependensi fungsional terhadap Y.

Sehingga : X Y ZBerikut ini adalah contoh tabel relasi yang menunjukkan terjjadinya dependensi transitif

pada tabel relasi kuliah berikut ini :

Kuliah Ruang Tempat WaktuJaringan Komputer Merapi Gedung Utara Senin, 08.00 – 09.50Basis Data Rama Gedung Selatan Selasa, 07.00 – 08.45Sistem Pakar Sinta Gedung Selatan Rabu, 10.00 – 11.45Sistem Operasi Merapi Gedung Utara Selasa, 08.00 – 08.50

Gambar 6.15. Relasi kuliah

Pada tabel tersebut diatas menunjukkan bahwa :

Kuliah { Ruang, Waktu }Ruang TempatTerlihat bahwa Kuliah Ruang TempatDengan demikian Tempat mempunyai dependensi transitif terhadap Kuliah.

Pertanyaan Soal1. Jelaskan pengertian bentuk normalisasi, dan sebutkan bentuk – bentuk normalisasi yang

saudara ketahui ?.2. Jelaskan dan berikan contoh bentuk normal pertama (1 NF) ?.3. Jelaskan dan berikan contoh bentuk normal kedua (2 NF) ?.4. Jelaskan dan berikan contoh bentuk normal ketiga (3 NF) ?.5. Jelaskan dan berikan contoh bentuk normal BNCF ?.6. Jelaskan dan berikan contoh bentuk normal keempat (4 NF) dan normal kelima (5 NF) ?.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

60

Page 61: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

7. Jelaskan dan berikan contoh pengertian dari ketergantungan fungsional dan ketergantungan transitif ?.

BAB 7PENERAPAN BENTUK NORMALISASI

Pada proses perancangan database dapat dimulai dari dokumen dasar yang dipakai dalam sistem sesuai dengan lingkup sistem yang akan dibuat rancangan databasenya. Berikut ini adalah contoh dokumen mengenai faktur pembelian barang pada PT. Revanda Jaya..

FAKTUR PEMBELIAN BARANGPT REVANDA JAYAJl. Bekasi Timur No. 2Bekasi Timur

Kode Supplier : G01 Tanggal : 07/02/2001Nama Supplier : Gobel Nustra Nomor : 998

Kode Nama Barang Qty Harga JumlahA01 AC Split ½ PK 10 1.350.000 13.500.000

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

61

Page 62: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

A02 AC Split 1 PK 10 2.000.000 20.000.000Total Faktur 33.500.000

Jatuh Tempo Faktur : 09/03/2001

FAKTUR PEMBELIAN BARANG

PT REVANDA JAYAJl. Bekasi Timur No. 2Bekasi Timur

Kode Supplier : S02 Tanggal : 02/02/2001Nama Supplier : Hitachi Nomor : 779

Kode Nama Barang Qty Harga JumlahR01 Rice Chocker C3 10 150.000 1.500.000

Total Faktur 1.500.000Jatuh Tempo Faktur : 09/03/2001

Gambar 7.1. Faktur pembelian barang

Sehubungan dengan dokumen dasar tersebut, tahapan yang harus dilakukan untuk melakukan normalisasi data adalah sebagai berikut:

1. Bentuk UnnormalisasiLangkah pertama dalam melakukan normalisasi data adalah dengan membentuk contoh data

tersebut didtas dengan membentuk unnormalisasi data, dengan cara mencantumkan semua atribut data yang ada apa adanya seperti terlihat berikut ini :

No Fac

Kode Supp

Nama Supp

Kode Brg

Nama Barang Tanggal Jatuh Tempo

Qty

Harga Jumlah Total

779998

S02G01

HitachiGobel Nustra

R02A01A02

Rice Chocker C3AC Split ½ PKAC Split 1 PK

02/02/0107/02/01

09/03/0109/03.01

101010

150000135000

2000000

15000001350000020000000

150000033500000

Gambar 7.2. Relasi faktur unnormalisasiPada relasi diatas adalah dengan menuliskan semua data yang ada yang akan direkam,

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

62

Page 63: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

data yang double tidak perlu ditulis. Terlihat baris / record yang tidak lengkap. Sulit dibayangkan bagaimana bentuk baris yang harus dibentuk untuk merekam data itu.

2.. Bentuk Normal Pertama (1 NF)Bentuklah menjadi bentuk normal pertama dengan memisah-misahkan data pada atribut-

atribut yang tepat dan bernilai atomik, juga seluruh record / baris harus lengkap adanya. Bentuk relasi adalah flat file. Dengan normal pertama kita dapat membuat satu tabel yang terdiri dari 11 Atribut yaitu

(No_Faktur, Kode_Supplier, Nama_Supplier, Kode_Barang, Nama_Barang, Tanggal, Jatuh_Tempo, Qty, Harga, Jumlah, Total ).

Sehingga hasil daripada pembentukan normal pertama (1 NF) adalah sebagai berikut ini :

No Fac

Kode Supp

Nama Supp Kode Brg

Nama Barang Tanggal Jatuh Tempo

Qty Harga Jumlah Total

779998998

S02G01G01

HitachiGobel NustraGobel Nustra

R02A01A02

Rice Chocker C3AC Split ½ PKAC Split 1 PK

02/02/0107/02/0107/02/01

09/03/0109/03/0109/03/01

101010

150000135000

2000000

15000001350000020000000

15000003350000033500000

Gambar 7.3. Relasi memenuhi 1 NF

Pada normal pertama tersebut masih terjadi banyak kelemahan, terutama pada proses ANOMALI insert, update dan delete berikut ini:

a). Inserting / PenyisipanKita tidak dapat memasukkan kode dan nama supplier saja tanpa adanya transaksi pembelian, sehingga supplier baru bisa dimasukkan kalau ada transaksi pembelian.

b). Deleting / PenghapusanBila satu record / baris di atas dihapus, misal nomor faktur 779, maka berakibat pada

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

63

Page 64: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

penghapusan data supplier S02 (Hitachi) padahal data tersebut masih diperlukan.

c). Updating / PengubahanKode dan nama supplier terlihat ditulis berkali-kali, bila nama supplier berubah, maka di setiap baris yang ada harus dirubah, bila tidak menjadi tidak konsisten.

Atribut jumlah (merupakan atribut turunan) seharusnya tidak perlu, karena setiap harga dikali kuantitas akan menghasilkan jumlah, sehingga hasilnya akan menjadi lebih konsisten.

3. Bentuk Normal Kedua (2 NF)Bentuk normal kedua dengan melakukan dekomposisi relasi diatas menjadi beberapa

relasi dan mencari kunci primer dari tiap-tiap relasi tersebut dan atribut kunci haruslah unik.Melihat permasalahan faktur di atas, maka dapat diambil beberapa kunci kandidat : ( No_Faktur, Kode_Supplier, dan Kode_Barang ). Kunci kandidat tersebut nantinya bisa menjadi kunci primer pada relasi hasil dekomposisi.

Dengan melihat normal pertama, kita dapat mendekomposisi menjadi tiga relasi berserta kunci primer yang ada yaitu : relasi Supplier (Kode_Supplier), relasi Barang (Kode_Barang), dan Relasi Faktur (No_Faktur). Dengan melihat ketergantungan fungsional atribut-atribut lain terhadap atribut kunci, maka didapatkan 3 (tiga) relasi sebagai berikut :

Relasi SupplierKode_Supplier Nama _SupplierS02G01G01

HitachiGobel NustraGobel Nustra

Relasi BarangKode_Barang Nama_Barang HargaR02A01A02

Rice Chocker C3AC Split ½ PKAC Split 1 PK

150000135000

2000000

Relasi FakturNo_Faktur (Kode_Barang) (Kode _Supplier) Tanggal Jatuh_tempo Qty

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

64

Page 65: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

779998998

R02A01A02

S02G01G01

02/02/0107/02/0107/02/01

09/03/0109/03/0109/03/01

101010

Gambar 7.4. Relasi memenuhi 2 NF

Kamus Data dari masing-masing relasi tersebut diatas adalah sebagai berikut: Supllier = { Kode_Supplier, Nama_Supplier }Barang = { Kode_Barang, Nama_Barang, Harga }Faktur = { No Faktur, Kode Barang Kode_Supplier, Tanggal, Jatuh_Tempo, Qty }

Dengan pemecahan relasi di atas, maka untuk pengujian bentuk normal kesatu (1 NF) yaitu insert, update, dan delete akan terjawab. Kode dan nama supplier baru dapat masuk kapanpun tanpa adanya transaksi pada tabel faktur. Demikian pula untuk proses update dan delete untuk tabel Supplier dan Barang.

Pada bentuk normal kedua tersebut masih terjadi permasalahan yaitu pada relasi Faktur, yaitu :1). Atribut Quantitas pada relasi Faktur, tidak tergantung pada kunci utama, atribut tersebut

bergantung fungsi pada Kode Barang + no_faktur, hal ini dinamakan ketergatungan transitif dan haruslah dipilah menjadi dua relasi.

2). Masih terdapat pengulangan, yaitu setiap kali satu faktur yang terdiri dari 5 macam barang maka 5 kali juga dituliskan no_faktur, tanggal, dan jatuh_tempo. Hal ini harus dipisahkan bila terjadi penggandaan tulisan berulang-ulang.

4. Bentuk Normal Ketiga (3 NF)Bentuk normal ketiga mempunyai syarat, setiap relasi tidak mempunyai atribut yang

bergantung transitif, harus bergantung penuh pada kunci utama dan harus memenuhi bentuk normal kedua (2 NF).

Untuk emmenuhi bentuk normal ketiga (3 NF), maka pada relasi faktur harus didekomposisi (dipecah) lagi menjadi dua relasi yaitu relasi faktur dan relasi transaksi barang, sehingga hasilnya adalah sebagai berikut ini:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

65

Page 66: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Relasi Supplier Relasi BarangKode_Supplier Nama Supplier Kode_Barang Nama_Barang HargaG01S02

Gobel NustraHitachi

R01A01A02

Rice Cooker CC3AC Split ½ PKAC Split 1 PK

150.0001.350.0002.000.000

Relasi FakturNo_Faktur Tanggal Jatuh_Tempo Kode_Supplier779998

02/02/200107/02/2001

09/03/200109/03/2001

S02G01

Relasi Transaksi_BarangNo_Faktur Kode_Barang Qty779998998

R01A01A02

101010

Gambar 7.5. Relasi memenuhi 3 NF

Kamus Data dari masing-masing relasi tersebut diatas adalah sebagai berikut: Supllier = { Kode_Supplier, Nama_Supplier }Barang = { Kode_Barang, Nama_Barang, Harga }Faktur = { No Faktur, Kode_Supplier, Tanggal, Jatuh_Tempo }Transaksi_Barang = { No Faktur, Kode Barang Qty }

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

66

Page 67: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Primary key pada relasi Supplier adalah Kode_Supplier, Primary key pada relasi Barang adalah Kode_Barang, Primary key pada relasi Faktur adalah No_Faktur dan Foreign key nya adalah Kode_Supplier, Primary key pada relasi Transaksi_Barang adalah No_Faktur, Kode_Barang dan keduanya juga menjadi Foreign key.

5. ERD (Entity Relationship Diagram)Gambaran hubungan antar entitas / relasi yang terbentuk, adalah seperti terlihat pada

gambar berikut ini :

Keterangan : * = Primary Key, ** =Foreign Key

Gambar 7.6. ERD (Entity Relationship Diagram)

Pengertian Hubungan (Relation) antar pada gambar ERD (entity relationship diagram)

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

67

* No_faktur Tanggal Jatuh_tempo** Kode_supplier

Barang* Kode_barang Nama_barang Harga

Supplier

* Kode_supplier nama_supplier

Memiliki Faktur1 N

Terdiri Dari

1

TransaksiBarang

NDigunaka

n

1N

* No_faktur *** Kode_barang ** Qty

Page 68: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

pada gambar di atas adalah sebagai berikut:

a). Supplier ke Faktur relasinya adalah one to many, artinya adalah satu supplier mempunyai banyak faktur, faktur punya relasi terhadap supplier.

b). Faktur ke Transaksi_Barang relasinya adalah one to many, artinya adalah satu faktur mempunyai beberapa transaksi barang (satu faktur terdiri dari satu atau lebih transaksi barang).

c). Barang ke Transaksi_Barang relasinya adalah one to many, artinya adalah satu barang bisa terjadi beberapa kali transaksi pembelian barang.

Implementasi ERD (entity relationship diagram) physical pada contoh diatas, bisa dituangkan kedalam database MS-Access aatau SQL Server, seperti terlihat pada gambar beikut ini:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

68

Page 69: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 7.7. ERD dengan database MS-Access 2000

Gambar 7.8. ERD dengan database SQL Server 2000

Pertanyaan Soal 1. Carilah dokumen dasar seperti dalam contoh faktur diatas, setelah saudara temukan,

kemudian lakukan langkah – langkah normalisasi data ?.2. Setelah model ERD terbentuk, buatlah ERD physical tersebut dengan menggunakan

database MS-Access atau SQL Server ?.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

69

Page 70: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

BAB 8MODEL DATA DAN ENTITY-RELATIONSHIP MODEL

8.1. Model DataModel data adalah sekumpulan konsep yang terintegrasi untuk mendiskripsikan data,

hubungan antar data dan batasan – batasannya dalam suatu organisasi. Model data merepresentasikan suatu organisasi. Model data harus menyediakan konsep dasar dan notasi yang memungkinkan perancang basis data dan pemakai utuk dapat mengkomunikasikan pemahamannya mengenai organisasi data.

8.1.1. Komponen model data.Komponen model data dapat dikategorikan menjadi 3 (tiga) bagian yang meliputi:

Bagian struktural, memuat sekumpulan aturan untuk melakukan konstruksi basis data ( database). Bagian manipulasi, melakukan definisi tipe operasi yang diijinkan pada data, termasuk operasi yang digunakan untuk melakukan perubahan (update), atau

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

70

Page 71: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

membaca data (retrieve) dari basis data dan untuk melakukan perubahan struktur basis data. Sekumpulan aturan mengenai integritas, yang akan menjaga keakuratan dari data dalam basis data (database).

8.1.2. Kelompok Model DataTerdapat 3 (tiga) kelompok model data, yaitu model data berbasis objek, model data

berbasis record dan model data fisikal.a. Model data berbasis objek.

Pada model ini menjelaskan data pada tingkat konsepsi dan view. Pada model ini terdapat beberapa macam model, yaitu :

ER model (Entity relationship Model). OO model (Objek Oriented Model). Binary Model. Model data semantik. Model data infologikal, dan Model data fungsional.

b. Model data berbasis record.

Pada model ini menjelaskan data pada tingkat konsepsi dan view, memakai seluruh struktur lojik basis data dan menyediakan uraian tingkat tinggi dari implementasi. Terdiri dari sejumlah fixed format record dengan berbagai tipe. Pada model ini teradapat 3 (tiga) macam tipe,yaitu :

Model data relational. Model data nerwork, dan Model data hirarki.

b.1. Model relational.Pada model ini menggambarkan data dan relationship diantara data oleh suatu koleksi tabel, contoh nya:Customer

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

71

Page 72: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Name Street City NumberLowery Maple Queens 900Shiver Nort Bronx 556Shiver Nort Bronx 647Hodges Sidehill Brooklyn 801Hodges Sidehill Brooklyn 647

AccountNumber Balance900 55556 100000647 1005366801 10533

Gambar 8.1. Model Relational

b.2. Model network (jaringan)Pada model ini menggambarkan koleksi record – record dan relationship diantara data ditunjukkan oleh link (penghubung) yang dapat dipandang sebagai pointer

(penunjuk), contoh nya:

Lowery Maple

Shiver Nort

Hodges Sidehill

Gambar 8.2. Model Network

b.3. Model hirarkiPada model ini sama seperti pada model network dalam hal data dan relationship diantara data digambarkan oleh record dan link. Perbedaannya adalah record disusun sebagai “collection of tree” dengan sembarang grafik. contoh nya:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

72

90055

556100000

647105366

80110533

B5…London B3…Glasgow B4…Bristol

SL41Julie…Assistant9000

SL41Julie…Assistant9000

SL41Julie…Assistant9000

SL41Julie…Assistant9000

Page 73: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 8.3. Model Hirarki

8.1.3. Database Instance & Schema

Database instance adalah data yang berada dalam basis data pada suatu saat tertentu. Database schema merupakan rancangan (deskripsi) keseluruhan database. Skema dispesifikasikan selama proses desain basis data yang tidak diharapkan untuk selalu berubah, tetapi data aktual yang berada dalam basis data bisa selalu berubah (misalkan dengan adanya penambahan data (insert), penghapusan data (delete) dan lain sebagainya.

Skema kadang disebut juga sebagai intension dari database, sedangkan instance

disebut dengan extention atau state dari dabase.

Konsep database schema berhubungan dengan definisi type (bentuk) dalam bahasa pemrograman, sedangkan konsep database instance berhubungan dengan definisi variable

dalam bahasa pemrograman. Sistem basis data mempunyain banyak schema berdasarkan tingkat abstraksi yaitu:

Physical schema tingkat terendah. Conceptual schema tingkat menengah. Eksternal schema (subschema) tingkat tertinggi.

Sistem basis data sangat mendukung semua tingkat pada ketiga schema tersebut. Pada schema conseptual menggambarkan semua item data dan relationship diantara item – item data serta batasan – batasan integritasnya, hanya terdapat satu conceptual schema didalam suatu database. Skema internal merupakan gambaran lengkap dari model internal,

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

73

Page 74: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

maliputi definisi dari stored record, metode representasi, data field dan indeks serta skema hashing jika ada, hanya terdapat satu schema dalam suatu databse.

8.1.4. Mapping.

DBMS (database management system) bertanggung jawab didalam pemetaan diantara tiga tipe skema tersebut dan DBMS menguji skema untuk konsistensi yang berarti harus menguji bahwa setiap skema eksternal diturunkan dari skema konseptual, dan harus menggunakan informasi didalam skema konseptual untuk memetakan antara masing – masing skema eksternal dan skema internal.

Skema konseptual berhubungan dengan skema internal yang melalui conceptual /

internal mapping. Hal ini memungkinkan DBMS untuk menemukan aktual record atau kombinasi record dalam penyimpanan fisik yang merupakan sebuah logical record dalam skema konseptual, bersama dengan batasan – batasan yang harus dijaga dalam operasi untuk logical record tersebut.

Dimungkinkan juga perbedaan – perbedaan dalam nama entitas, nama atribut, urutan atribut, tipe data dan lain sebagainya. Setiap skema eksternal berhubungan dengan skema konseptual melalui eksternal / konseptual mapping. Hal ini memungkinkan DBMS memetakan nama – nama dalam pandangan pemakai kedalam bagian yang relevan dalam skema konseptual.

8.2. Entity Relationship ModelModel data entity relationship (E-R) adalah berdasarkan pada persepsi dari dunia nyata yang

terdiri dari sekumpulan objek – objek dasar yang desebut entity, dan relationship antara objek – objek tersebut. Pembentuk Model E-R (Entity Relationship) pada dasarnya terdiri dari 2 komponen, yaitu : Entiti (Entity) / entitas dan Relasi (Relation) atau hubungan.

8.2.1. EntitiMerupakan suatu objek yang dapat diidentifikasi secara unik dalam lingkungan

pemakai, suatu yang penting bagi pemakai dalam konteks sistem yang akan dibuat.Sekelompok entiti yang sejenis dan berada dalam lingkup yang sama membentuk

sebuah Himpunan Entiti.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

74

Page 75: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Contoh Himpunan Entiti Mahasiswa atribut entiti

NIM Nama Alamat Tgl Lahir980001 Ali Akbar Jl. Merdeka No.10, Jakarta 40121 02-01-1979980002 Budi Haryanto Jl. Gajah Mada No.2, Jakarta 45123 06-10-1978980003 Rini Susanti Jl. Adil No.123, Bogor 43123 27-07-1977Himpunan Entiti Mahasiswa

Gambar 8.4. Himpunan entiti mahasiswa

8.2.2. AtributMerupakan elemen bagian dari entiti yang berfungsi menjelaskan karakter entiti.

Contoh dalam Entiti Mahasiswa ada atribut : Nim, Nama, Alamat, Telpon dan Tgl Lahir. Dimana Nim merupakan PK (Primery Keys) dan Nama, Alamat, Telpon dan Tgl Lahir merupakan atribut Deskriptif.

8.2.3. Relasi / HubunganRelasi menunjukkan adanya hubungan di antara sejumlah entiti yang berada dalam

sejumlah himpunan entiti yang berbeda. Misalkan himpunan entiti Mahasiswa berhubungan dengan himpunan entiti Matakuliah.Himpunan Relasi : kumpulan semua relasi diantara entiti – entiti yang terdapat pada himpunan entiti – himpunan entiti tersebut. Istilah Himpunan relasi jarang digunakan, dan lebih sering disingkat dengan Relasi saja.

8.2.4. Varian RelasiRelasi berfungsi menghubungkan antar entiti. Entiti yang berelasi tidak hanya terdiri

dari dua relasi saja. Tetapi entiti bisa berelasi dengan dirinya sendiri atau berelasi lebih dari 2 entiti. Relasi ini dapat dikelompokkan menurut varian sebagai berikut :

Relasi Unary

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

75

Page 76: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Relasi yang terjadi dari sebuah himpunan entiti ke himpunan entiti yang sama. Sering disebut sebagai Relasi Tunggal. Misalkan relasi yang terjadi pada Pasien dan Syarat. Relasi ini menunjukkan adanya persyaratan menjadi pasien rawat inap. Misalkan pasien hanya boleh mengikuti rawat inap bila telah terdaftar menjadi pasien rawat jalan.

Gambar 8.5. Relasi Unary

Relasi BinaryRelasi yang terjadi dari dua himpunan entiti. Relasi ini kerap terjadi dan paling banyak

digunakan. Contoh relasi biner adalah relasi antara Pasien dengan Obat.

Gambar 8.6. Relasi Biner

Relasi TreenaryRelasi yang terjadi dari hubungan3 (tiga) buah entiti. Contoh relasi ini adalah

hubungan antara Pasien, Tindakan dan Dokter.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

76

PasienMemakai Obat

Pasien Syarat

PasienDilakukan Tindakan

Dokter

Page 77: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 8.7. Relasi Treenary

Relasi N-naryRelasi yang menghubungkan lebih dari 3 (tiga) buah entiti, dimasukkan dalam relasi

multi entiti. Bentuk relasi semacam ini sedapat mungkin dihindari karena akan mengaburkan derajat relasi yang ada dan juga akan menyebabkan desain databasenya semakin kompleks.

8.2.5. Kardinalitas Relasi BinerModel relasi entiti didasarkan pada persepsi dunia nyata yang terdiri dari himpunan

obyek dasar yang disebut entiti dan relasi antar entiti. Entiti dapat diartikan suatu obyek yang dapat diidentifikasi secara unik, obyek dapat berupa orang, benda, peristiwa dan lainnya.

Entiti dikarakteriasi dan direpresentasikan dengan suatu gugus atribut. Contoh atribut dari Mahasiswa adalah : Nim, Nama, Alamat, Telpon, Tgl Lahir dan lainnya.Sekelompok entiti yang mempunyai karakteristik entiti yang sama disebut Himpunan Entiti. Contoh himpunan entiti adalah, himpunan entiti Kustomer, himpunan entiti Rekening, himpunan entiti Bank, dan lainnya. Dari beberapa himpunan tadi mungkin terjadi relasi, misalkan relasi Kustomer dengan Rekening ( Kustomer mempunyai rekening )Khusus Relasi Biner, relasi antar anggota dari dua himpunan entiti yang terlibat dapat bersifat :

Relasi 1-1 ( one to one relationship )Setiap entiti dari suatu himpunan entiti tertentu diasosiasikan atau direlasikan dengan tepat satu entiti dari himpunan yang lain.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

77

Kustomer R1 Rekening11

Page 78: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

R1 = Mempunyai

Gambar 8.8. Relasi 1 - 1

Relasi 1 – m ( one to many relationship )Setiap entiti dari suatu himpunan entiti direlasikan dengan satu atau lebih entiti anggota himpunan yang lain. Sebaliknya satu entiti himpunan yang lain direlasikan tepat dengan satu entiti anggota himpunan pasangannya.

R1 = Mempunyai

Gambar 8.9. Relasi 1 – m

Relasi m - n ( many to many relationship )Setiap entiti dari suatu himpunan entiti direlasikan dengan satu atau lebih entiti dari himpunan yang lain dan berlaku pula sebaliknya.

R1 = Pinjam

Gambar 8.10. Relasi m – n

Sifat ketiga relasi tersebut disebut sebagai kardinalitas relasi biner. Alat bantu yang banyak dipakai dalam mendiskripsikan pola hubungan (relasi) antar entiti adalah Entity Relationship Diagram atau Diagram Relasi Entiti atau lebih sering disingkat dengan ERD.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

78

Kustomer R1 Rekeningm1

Kustomer R1 Banknm

Page 79: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

8.2. 6. Entity Relationship Diagram ( ERD )ERD berisi komponen - komponen himpunan entiti dan himpunan relasi yang masing - masing dilengkapi dengan atribut – atribut yang merepresentasikan seluruh fakta dari “ dunia nyata “.

Nomor Simbol Nama Simbul1. ENTITI

Digunakan untuk menggambarkan obyek yang dapat diidentifikasi dalam lingkungan pemakai.

2. ATRIBUTUntuk menggambarkan elemen – elemen dari suatu entiti, yang menggambarkan karakter entiti.

3. HUBUNGANMenggambarkan relasi ( hubungan ) antar entiti

4. GARISDigunakan untuk menghubungkan entiti dengan entiti, atau entiti dengan atribut.

Gambar 8.11. Notasi – notasi dalam ERD

Berikut ini dalah contoh penerapan model ER yang dapat ditaungkan kedalam Diagram – ER ( ERD ) :

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

79

Page 80: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

80

Mahasiswa

Mempelajari

m

alamatnim

namatelp

Tglhir

Nim

Kode

nilai

MatakuliahNamamk

Kode

smester

sksn

Mengajar

mKode

NID

hari

DosenNamads

NID

telpon

alamatd

1

waktu

Page 81: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 8.12. Contoh ERD

Hubungan (relasi) antar tabel yang terjadi pada ERD tersebut diatas adalah sebagai berikut :

Relasi Dosen dengan Matakuliah adalah one to many, dengan pengertian bahwa seorang dosen bisa mengajarkan satu atau lebih matakuliah.

Relasi Mahasiswa dengan Matakuliah adalah many to many, dengan pengertian bahwa seorang mahasiswa bisa mempelajari satu atau lebih matakuliah, demikian juga untuk sebaliknya, bahwa satu matakuliah bisa dipelajari oleh satu atau lebih mahasiswa.

Diagram – ER (ERD / entity relationship diagram) tersebut diatas dapat dituangkan kedalam kamus data berikut ini :

Kamus Data :Mahasiswa = { Nim, nama, alamat, telp, tglhir }Matakuliah = { Kode, namamk, sks, smester }Dosen = { NID, namads, alamatd, telpon }Mempelajari = { Nim, Kode, nilai }Mengajar = { NID, Kode, hari, waktu }

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

81

Mahasiswa Mempelajari

Matakuliahnm

MengajarDosen1

m

Page 82: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 8.13. Contoh ERD dengan kamus data

Primary key untuk masing – masing entiti tersebut diatas adalah sebagai berikut : Entiti mahasiswa = nim, karena pasti unik, tidak mungkin nim : mhs0001 misalkan dipakai

oleh lebih dari 2 orang mahasiswa. Entiti matakuliah = kode, karena pasti unik, tidak mungkin kode matakuliah : mk001

misalkan dipakai oleh lebih dari 2 matakuliah. Entiti dosen = nid, karena pasti unik, tidak mungkin nid : ds0001 misalkan dipakai oleh

lebih dari 2 orang dosen. Entiti mempelajari = nim dan kode ( dimana kedua atribut tersebut adalah sebagai foreign

key jadi dua atribut tersebut bisa dijadikan primary key pada entiti mempelajari, karena tidak ada satu atribut yang menyatakan unik pada entiti tersebut.

Entiti mengajar = nid dan kode ( dimana kedua atribut tersebut adalah sebagai foreign key jadi dua atribut tersebut bisa dijadikan primary key pada entiti mengajar, karena tidak ada satu atribut yang menyatakan unik pada entiti tersebut.Berikut ini adalah implementasi pembentukan ERD (entity relationship diagram)

tersebut dengan menggunakan software ERWIN (Entity relationship for windows) Erx.3.0

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

82

Page 83: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Gambar 8.14. Contoh ERD dengan ERWIN ERX.3.0

Pertanyaan Soal1. Jelaskan dan berikan contoh model data network dan hirarki ?.2. Jelaskan pengertian entiti, atribut dan relasi dan berikan contohnya ?.3. Jelaskan dan berikan contoh relasi unary dan binary ?.4. Jelaskan dan berikan contoh kardinalitas relasi biner untuk one to one, one to many dan many

to many ?.5. Jelaskan dan gambarkan simbol – simbol yang digunakan didalam ERD, dan berikan contoh

ERD dalam suatu database ( minimal 3 entitas / tabel / file ) ?.

BAB 9ALJABAR RELASIONAL DAN KALKULUS RELASIONAL

Bahasa query formal basis data relasional adalah bahasa untuk meminta informasi dari basis data. Sebelum basis data relasional, query terhadap basis data merupakan tugas yang sangat sukar. Pemogram harus berususan dengan skema fisik internal dari basis data.

Bahasa query relasional misalkan SQL (sructured query language) berbeda dengan bahasa pemrograman konvensional. Di SQL, kita menspesifikasikan properti – properti informasi yang hendak diambil tapi tidak mencantumkan rincian algoritma pengambilan. SQL adalah deklaratif, yaitu pada query dideklarasikan informasi yang merupakan jawaban yang dikehendaki bukan cara komputasi.

Query kompleks yag diperlukan pada kebanyakan aplikasi nyata memerlukan pengetahuan mendalam mengenai bahasa da semantiknya. Bahasa query relasional formal merupakan bahasa antara yang digunakan basis data, yaitu SQL dikonversi menjadi bahasa rlasional formal sehingga dapa diterapkan sekumpulan informasi untuk memperoleh query paling efisien. Terdapat dua jenis bahasa query relasional formal yang utama, yaitu:

1. Aljabar relasional.2. Kalkulus relasional.

9.1. Aljabar relasional

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

83

Page 84: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Relational Algebra (aljabar relasional) merupakan kumpulan operasi terhadap relasi dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru dan termasuk kategori prosedural dan juga menyediakan seperangkat operator untuk memanipulasi data.

Terdapat lima operasi dasar dalam aljabar relasional, yaitu:

1. Selection ( σ )

2. Projection ( π )

3. Cartesian – product ( X, juga disebut sebagai cross product )

4. Union ( ∪ )

5. Set – difference ( - )

6. Rename ( ρ )

Operasi – operasi turunan dari operasi – operasi dasar tersebut adalah:

1. Set intersection ( ∩ )

2. Theta join ( θ )

3. Natural-join ( )4. Outer-join ( )

5. Division ( ÷ )

Semua operasi tersebut menghasilkan relasi baru. Bahasa disebut aljabar relasional karena bahasa berdasar sejumlah operator yang beroperasi pada relasi – relasi (tabel – tabel). Masing – masing operator beroperasi pada satu relasi atau lebih atau menghasilkan relasi – relasi lain sebagai hasil. Query adalah sekedar ekspresi yang melibatkan operator – operator itu. Hasil ekspresi adalah relasi yaitu jawaban terhadap query.

SQL adalah bahasa yang deklaratif yang berarti tidak menspesifikasikan algoritma yang digunakan untuk pengolahan query. Ekspresi relasional dapat dipandang sebagai spesifikasi algoritma (meskipun dalam level lebih tinggi dibanding algoritma untuk bahasa pemrograman konvensional).

Pemrogram menggunakan query SQL, DBMS menggunakan aljabar relasional sebagai bahasa antara dalam spesifikasi algoritma query. Langkah – langkah dalam DBMS untuk pengolahan query adalah:

1. DBMS melakukan parsing terhadap string dari query SQL dan menerjemahkannya menjadi ekspresi aljabar relasional yang dapat menuntun kedalam algoritma sederhana yang tidak efisien.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

84

Page 85: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

2. Setelah itu, bagian query optimizer mengkonversi ekspresi aljabar relasional ini menjadi ekspresi lain yang ekvivalen nemun lebih efisien untuk dieksekusi.3. Berdasarkan ekpresi aljabar relasional yang telah dioptimasi, query optimizer mempesiapkan rencana eksekusi query (query execution plan) yang kemudian ditransformasikan menjadi kode yang dapat dieksekusi pembangkit kode di DBMS.4. Karena ekspresi aljabar mempunyai semantik matematika yang presisi maka sistem dapat memferifikasi ekvivalensi ekspresi yang dioptimasi yang dihasilkan dari manipulasi ekpresi asal. Semantiks ini juga memungkinkan pembandingan rencana – rencana evaluasi query yang berbeda.

Aljabar relasional merupakan kunci pemahaman kerja internal DBMS relasional, pemahaman aljabar relasional merupakan hal yang esensi dlam merancang query SQL yang diolah secara efisien. Aljabar relasional banyak digunakan pada optimasi query dan pengolahan query tersebar. Aljabar relasional mendefinisikan sekumpulan operator dan rumus untuk memanipulasi himpunan data.

9.1.1. Operasi aljabar relasionalUntuk mengimplementasikan kedalam operasi aljabar relasional, berikut ini diberikan relasi –

relasi dari database Penjadwalan_mengajar_dosen pada STMIK ‘Revanda Jaya’ Bekasi. Relasi – relasi tersebut meliputi:

5. Dosen Dosen ={nid,nama_d,tempat_lhr,tgl_lahir,jkelamin,alamat,kota,kodepos,gpokok}Primary key relasi Dosen adalah nid, karena tidak ada seorang dosen yang nid (nomor induk dosen) sama dengan dosen yang lainnya.Dengan data value sebagai berikut:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

85

Page 86: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

6. MatakuliahMatakuliah ={kdmk , nama_mk,sks,semester}Primary key relasi Matakuliah adalah kdmk, karena tidak ada kode suatu matakuliah yang kdmk (kode matakuliah) sama dengan matakuliah yang lainnya.Dengan data value sebagai berikut:

7. JurusanJurusan ={kode_jur,nama_jur,sjenjang,nama_kajur}Primary key relasi Jurusan adalah kode_jur, karena tidak ada kode_jur (kode jurusan) yang sama dengan jurusan yang lainnya.Dengan data value sebagai berikut:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

86

Page 87: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

8. MengajarMengajar ={nid,thn_akademik,smt , hari,jam_ke ,kdmk,waktu,kelas,kode_jur}Primary key relasi Matakuliah adalah nid,thn_akademik,smt,hari,jam_ke, kondisi :

• Bila primary key nid,thn_akademik, maka tidak bisa karena seorang dosen pada tahun akademik yang sama bisa mengajar lebih dari satu matakuliah.

• Bila primary key nid,thn_akademik,smt, maka tidak bisa karena seorang dosen pada tahun akademik dan semester yang sama bisa mengajar lebih dari satu matakuliah.

• Bila primary key nid,thn_akademik,smt,hari, maka tidak bisa karena seorang dosen pada tahun akademik, semester dan hari yang sama bisa mengajar lebih dari satu matakuliah.

• Sehingga primary key pada relasi mengajar adalah nid,thn_akademik,smt,hari,jam_ke, maka unik dan dijadikan primary key pada relasi tersebut.

Dengan data value sebagai berikut:

9.1.2. Operasi Selection ( σ )

Selection / Select (σ ), adalah operasi untuk menyeleksi tupel – tupel yang memenuhi suatu predikat, kita dapat menggunakan operator perbandingan (<,>,>=,<=,=,#) pada predikat. Beberapa

predikat dapat dikombinasikan menjadi predikat manjemuk menggunakan penghubung AND ( ∧ ) dan

OR ( ∨ ).

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

87

Page 88: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Contoh operasi Select:a. Contoh 11. Query : Tampilkan daftar dosen yang tempat lahirnya di ‘Bekasi’.2. Aljabar relasional:

σtempat_lhr=’Bekasi’ (Dosen)

3. Hasilnya adalah:

b. Contoh 21. Query : Tampilkan daftar dosen yang tempat lahirnya di ‘Jakarta’ atau ‘Bogor’2. Aljabar relasional:

σtempat_lhr=’Jakarta’ ∨ tempat_lhr=’Bogor’ (Dosen)

3. Hasilnya adalah:

c. Contoh 31. Query : Tampilkan daftar dosen yang tempat lahirnya di ‘Bogor’ dan jenis kelaminnya ‘Pria’2. Aljabar relasional:

σtempat_lhr=’Bogor’ ∧ jkelamin=’Pria’ (Dosen)

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

88

Page 89: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

3. Hasilnya adalah:

9.1.3. Operasi Projection ( π )

Projection / Project ( π ), adalah operasi untuk memperoleh kolom – kolom tertentu. Operasi project adalah operasi unary yang mengirim relasi argumen dengan kolom – kolom tertentu. Karena relasi adalah himpunan, maka baris – baris duplikasi dihilangkan.

Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut :

π colum1,…,column ( tabel)

Contoh operasi Project:a. Contoh 11. Query : Tampilkan nid,nama_d,alamat,kota dari relasi Dosen2. Aljabar relasional:

π nid,nama_d,alamat,kota(Dosen)

3. Hasilnya adalah:

b. Contoh 21. Query : Tampilkan nid,nama_d,alamat,kota,gajipokok dari relasi Dosen, dimana gaji

pokoknya lebih besar dari Rp.12000002. Aljabar relasional:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

89

Page 90: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

π nid,nama_d,alamat,kota,gajipokok( σgajipokok>1200000 (Dosen))

3. Hasilnya adalah:

c. Contoh 34. Query : Tampilkan nid,nama_d,alamat,kota,gajipokok dari relasi Dosen, dimana kota

alamatnya ‘Cibitung’ dan gaji pokoknya lebih besar dari Rp.10000005. Aljabar relasional:

π nid,nama_d,alamat,kota,gajipokok( σkota=’Cibitung’ ∧ gajipokok>1000000 (Dosen))

6. Hasilnya adalah:

9.1.4. Operasi Cartesian-product ( X )Cartesian-product ( X ), adalah operasi untuk menghasilkan table hasil perkalian kartesian.

Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut :

R X S = {(x,y) | x∈R dan y∈S}

Operasi cartesian-product memungkinkan kita mengkombinasikan informasi beberapa relasi, operasi ini adalah operasi biner. Sebagaimana telah dinyatakan bahwa relasi adalah subset hasil cartesian-product dan himpunan domain relasi – relasi tersebut. Kita harus memilih atribut – atribut untuk relasi yang dihasilkan dari cartesian-product.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

90

Page 91: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Contoh operasi Cartesian-product:a. Contoh 11. Query : Tampilkan nid,nama_d (dari relasi Dosen), nama_mk (dari relasi Matakuliah),

thn_akademik,smt,hari,jam_ke,waktu,kelas (dari relasi Mengajar) dimana semester mengajar adalah pada semester ‘1’.

2. Aljabar relasional:

π nid,nama_d,nama_mk, thn_akademik,smt,hari,jam_ke,waktu,kelas ( σ smt=1 ∧

Dosen.nid=Mengajar.nid ∧ Mengjar.kdmk=Matakuliah.kdmk(DosenxMatakuliahxMengajar))

atau:

σ (Mengajar.nid=Dosen.nid ∧ Mengajar.kdmk=Matakuliah.kdmk) ∧ smt=1 ((( π

nid,nama_d (Dosen)) X (π nama_mk (Matakuliah)) X (π

thn_akademik,smt,hari,jam_ke,waktu,kelas (Mengajar)))))

3. Hasilnya adalah:

b. Contoh 21. Query : Tampilkan nama_d (dari relasi Dosen), nama_mk,sks (dari relasi Matakuliah),

hari,jam_ke,waktu (dari relasi Mengajar) dimana sks matakuliah >3 atau hari mengajar = ‘Jumat’.

2. Aljabar relasional:

π nama_d,nama_mk,sks,hari,jam_ke,waktu ( σ sks>3 ∨ hari=’Jumat’ ∧

Mengajar.nid=Dosen.nid ∧ Mengajar.kdmk=Matakuliah.kdmk(MengajarxDosenxMatakuliah))

atau:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

91

Page 92: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

σ (Mengajar.nid=Dosen.nid ∧ Mengajar.kdmk=Matakuliah.kdmk) ∧ (sks>3 ∨ hari=’Jumat’

((( π nama_d (Dosen)) X (π nama_mk,sks (Matakuliah)) X (π hari,jam_ke,waktu (Mengajar)))))

3. Hasilnya adalah:

b. Contoh 31. Query : Tampilkan kdmk,nama_mk,sks (dari relasi Matakuliah), smt,hari,jam_ke,waktu

(dari relasi Mengajar) dimana semester (smt) yang diajar dosen pada semester ‘1’ dan jam_ke ‘1’

2. Aljabar relasional:

π kdmk,nama_mk,sks,smt,hari,jam_ke,waktu ( σ smt=1 ∧ jam_ke=’1’ ∧

Mengajar.kdmk=Matakuliah.kdmk(MengajarxMatakuliah))

atau:

σ Mengajar.kdmk=Matakuliah.kdmk ∧ smt=1 ∧ jam_ke=’1’ (( π kdmk,nama_mk,sks (Matakuliah)) X ( π hari,jam_ke,waktu (Mengajar)))

3. Hasilnya adalah:

9.1.5. Operasi Union ( ∪ )

Union ( ∪ ), adalah operasi untuk menghasilkan gabungan table degan syarat kedua table memiliki atribut yangsama, yaitu domain atribut ke-i masing – masing table harus sama. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

92

Page 93: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

R ∪ S = {x | x∈R atau X ∈S}

Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang sama sehingga jumlah komponennya sama.

R S

A B A BD A D AC F H TG H G H

R ∪ S adalah:A BD AC FG HH T

Contoh operasi Union: a. Contoh 11. Query : Tampilkan nid (dari relasi Dosen) Union dari nid (dari relasi Mengajar) .2. Aljabar relasional:

π nid (Dosen) ∪ nid (Mengajar)

3. Hasilnya adalah:

9.1.6. Set-difference ( --- )Set-difference ( -- ), adalah operasi untuk mendapatkan table pada suatu relasi, tapi tidak

ada pada relasi yang lainnya. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

93

Page 94: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

R – S = { x | x∈R dan X ∉ S}

Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang tidak sama yang akan ditampilkan, artinya adalah atribut R yang tidak ada di S akan ditampilkan, sedangkan atribut yang sama tidak ditampilkan.

a. Contoh 11. Query : Tampilkan nid (dari relasi Dosen) Set-difference dari nid (dari relasi Mengajar).2. Aljabar relasional:

π nid (Dosen) -- nid (Mengajar)

3. Hasilnya adalah:

9.1.7. Rename ( ρ )

Rename ( ρ ), adalah operasi untuk menyalin table lama kedalam table yang baru. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :

ρ [nama_table] (table_lama)

a. Contoh 11. Query : Salinlah table baru dengan nama DosenNew dari table Dosen, dimana jenis

kelaminnya adalah ‘Pria’.2. Aljabar relasional:

ρ DosenNew ( σ jkelamin=’Pria’) (Dosen))

3. Hasilnya adalah:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

94

Page 95: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Untuk operasi rename ini hasil dari perintah tersebut adalah membentuk table baru dengan nama DosenNew beserta datanya dimana jenis kelaminnya adalah ‘Pria’

9.1.8. Set-intersection ( ∩ )

Set-intersection / Intersection ( ∩ ) termasuk kedalam operator tambahan, karena operator ini dapat diderivikasi dari operator dasar seperti berikut:

A ∩ B = A - ( A – B ), atau A ∩ B = B - ( B – A )

Operasi ini merupakan operasi binary, yang digunakan untuk membentuk sebuah relasi baru dengan tuple yang berasal dari kedua relasi yang dihubungkan, misalkan:

R1 R2

X Y X YA C D FB F A C

H I

R1 ∩ R2 adalah:

A BA C

a. Contoh 11. Query : Tampilkan nid (dari relasi Dosen) Set-intersection dari nid (dari relasi Mengajar).2. Aljabar relasional:

π nid (Dosen) ∩ nid (Mengajar)

3. Hasilnya adalah:

9.1.9. Theta-join ( θ ) / Equi-join ( )

Theta-join ( ) dan equi-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteria

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

95

Page 96: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

a. Contoh 11. Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar2. Aljabar relasional:

Matakuliah Mengajar.kdmk=Matakuliah.kdmk Mengajar

3. Hasilnya adalah:

9.1.10. Natural-join ( )Natural-join ( ) sama seperti operasi equi-join adalah operasi untuk menggabungkan

operasi selection dan cartesian-product dengan suatu kriteria pada kolom yang sama.

a. Contoh 11. Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi

Mengajar2. Aljabar relasional:

Matakuliah Mengajar.kdmk=Matakuliah.kdmk Mengajar

3. Hasilnya adalah:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

96

Page 97: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

9.1.11. Outer-join ( )Outer-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product

dengan suatu kriteria pada kolom yang sama.

a. Contoh 11. Query : Tampilkan nid_nama_d (dari relasi Dosen) dan thn_akademik,smt,hari,jam_ke,waktu (dari relasi Mengajar) dengan outer join, artinya adalah pada kolom nid,nama_d pada relasi Dosen akan ditampilkan walaupun dosen tersebut tidak melakukan transaksi mengajar.2. Aljabar relasional:

π nid,nama_d (Dosen) π thn_akademik,smt,hari,jam_ke,waktu (Mengajar)

3. Hasilnya adalah:

9.1.12 Devision ( ÷)

Devision ( ÷ ) adalah operasi yang banyak digunakan dlam query yang mencakup frase “setiap” atau “untuk semua”, operasi ini juga merupakan pembagian atas tuple – tuple dari dua relasi.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

97

Page 98: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

a. Contoh 11. Query : Tampilkan nid,hari, waktu (dari relasi Mengajar) dan nid (dari relasi Dosen) dimana dosen yang jenis kelaminnya ‘Pria’ dan lakukan devision pada kedua relasi tersebut.2. Aljabar relasional:

π nid,hari,waktu (Mengajar)) ÷ ( π nid (σ jkelamin=’Pria’ (Dosen)))

4. Hasilnya adalah:

π nid,hari,waktu (Mengajar) π nid (σ gajipokok>1300000 (Dosen))

Hasil akhir adalah:

9.2. Kalkulus relasionalPemakai mendiskripsikan informasi yang dikehendaki tanpa memberikan prosedur (deret

operasi) spesifik untuk memperoleh informasi. Pada model relasional, bahasa formal non prosedural adalah bahasa kalkulus (predikat( relasional yaitu diekspresikan dengan menspesifikasikan predikat terhadap tuple atau domain yang harus dipenuhi. Kalkulus relasional dibagi menjadi 2 (dua) yaitu:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

98

Page 99: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

1. Kalkulus relasional tupel (tuple relational calculus).2. Kalkulus relasional domain (domain relational calculus).

9.2.1. Kalkulus Relasional TupelKalkulus relasional tupel mendiskripsikan informasi tanpa perlu memberikan prosedur / cara

spesifik untuk memperoleh informasi tersebut. Konsep dasar kalkulus relasional tupel adalah konsep variable tupel. Variable ini merepresentasikan tupel – tupel pada relasi dan digunakan untuk mengekstrak data dari relasi. Komponen - komponen lain rumus kalkulus tupel adalah kualifikasi data dengan membatasi nilai – nilai dari atribut – atribut yang dispesifikasikan.

Query pada kalkulus relasional tupel dapat diekspresikan dengan:{ t | P(t) }

yaitu himpunan semua tupel t sehingga predikat P bernilai True untuk t, notasi t[A] untuk

menunjukkan nilai tuple t pada atribut A. dan menggunakan t∈r untuk menunjukkan nilai tupel t di relasi r. predikat P adalah berupa rumus, beberapa variable tupel dapat muncul di rumus.

Variable tupel dikatakan variable bebas kecuali dikuantifikasi ∃ atau ∀.

Maka:

r ∈ R ∧ ∃s ∈ S (r[a]=S[a])

t adalah variable bebas, variable tupel s dikatakan sebagai variable terikat.

Berikut ini contoh kalkulus relasional tupel yang diterapkan pada SQL:

SELECT Dosen.nid,Dosen.nama_d,Dosen.gajipokokFROM DosenWHERE

Dosen.jkelamin=’Pria’ AND Dosen.gajipokok>1000000

Pada query diatas sebenarnya menyatakan dua hal yaitu:1. Kita berkehandak mengekstrak tupel – tupel pada relasi Dosen yang mempunyai atribut jkelamin adalah ‘Pria’ dan memiliki atribut gajipokok adalah lebih besar dari 1000000.

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

99

Page 100: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

2. Dari tupel – tupel ini, kita berkehendak menampilkan atribut tertentu yaitu nid,nama_d,gajipokok.

Dengan demikian atribut Dosen.nid,Dosen.nama_d,Dosen.gajipokok adalah variable – variable tupel. Bentuk umum dari kalkulus relasional tupel adalah:

TupleVariable1 operator [TupleVariable2 | constant]

Dimana :TupleVariablen adalah variable tupel dimana i=1 sampai n variable tupel.Operator adalah +,>,<,>=,<=,<>Constant adalah sembarang nilai numerik atau string.

Konstrain yag berlaku adalah variable – variable tupel dan konstanta harus mempunyai domain yang sama antara bagian kiri operator dan bagian kanan operator.

Rumus dapat dikoneksikan operator boolean AND, OR, dan NOT sehingga bentuk umumnya adalah:

TupleVariable1 operator [TupleVariable2 | constant3]ANDTupleVariable4 operator [TupleVariable5 | constant6]

AND..ORTupleVariablem operator [TupleVariablen | constantp]

Bentukan tersebut digunakan SQL pada klausa SELECT serta WHERE. Dengan demikian dapat disimpulkan bahwa SQL juga dikembangkan berbasis pada kalkulus relasional tupel.

Rumus kalkulus relasional tupel dibangun dari atom – atom, atom mempunyai salah satu bentuk berikut:

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

100

Page 101: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

• s ∈ R, dimana s adalah variable tupel dan R adalah relasi, kita tidak mengijinkan

operasi ∉.

• S[x] u[y], dimana s dan u adalah variable tupel, x adalah atribut yang didefinisikan di s,

y adalah atribut didefinisikan di u. Θ adalah operator perbandingan (<, <=,=, >=, ≠). Kita perlu atribut x dan y yang mempunyai domain – domain yang anggotanya dapat

dibandingkan dengan Θ.

• s[x] Θ c, dimana s adalah variable tupel , x adalah atribut yang didefinisikan di s. Θ

adalah operator pembanding dan c adalah konstanta dari domain atribut x.

Rumus dapat dibangun menggunakan aturan – aturan berikut:

• atom adalah rumus.

• Jika P1 adalah rumus, maka ¬P1 dan (P1)

• Jika P1 ddddan P2 adalah rumus, maka P1 ∨ P2, P1 ∧ P2, dan P1 ⇒ P2.

• Jika P1(x) adalah rumus di x, dimana x adalah vaariable tupel x, maka r ∈ R ∧ ∃s ∈

S (rr[a]=s[a])

Contoh : Cari semua nid,nama_d,gajipokok dari semua dari semua dosen yang gaji

pokoknya > 1000000:

{ D.nid \ D.nama_d \ D.gajipokok>1000000 } dimana D ∈ Dosen.

Cari semua nid,nama_d dari semua dosen yang mengajar pada ttahun akademik 2004 dan semester 1:

{ D.nid \ D.nama_d \ M.thn_akademik=2004 ∧ semester=1 ∧ Dosen.nid = Mengajar.nid }

9.2.2. Kalkulus Relasional Domain

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

101

Page 102: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

Kalkulus relasional domain menggunakan variable – variable pada nilai - nilai domain atribut, bukan nilai – nilai untuk sebuah tupel. Ekspresi pada kalkulus relasional domain berbentuk:

{ < X1, X2, …, Xn > | P (X1, X2, …, Xn)}

Dimana : X1, X2, …,Xn menyatakan variable – variable domain.P menyatakan rumus – rumus yang disusun dari atom – atom sebagaimana pada kalkulus relasional tupel.

Atom pada kalkulus relasional domain adalah salah satu dari:

• < X1, X2, …, Xn > ∈ r, dimana r adalah relasi dengan n atribut dan X1, X2, …, Xn adalah variable – variable domain atau konstanta – konstanta domain.

• x Θ y, dimana x dan y adalah variable domain, Θ adalah operasi pembandingan (<,

<=,=, >=, ≠). Variable x dan y harus merupakan domain – domain yang dapat

dibandingkan dengan Θ.

• x Θ c, dimana x dalah variable domain. Θ adalah operator pembandingan (<, <=,=,

>=, ≠) dan c adalah konstanta.

Contoh : Cari nip,nama_d,gajipokok daridosen, dimana jenis kelaminnya adalah Pria dan

gaji pokoknya lebih besar 1200000

{ nip | ∃ nam_d | ∃ gajipokok

(Dosen(nid,nama_d,gajipokok) AND jkelamin=’Pria’ AND gajipokok > 1200000) }

Berdasarkan acuan model relasional, ada 2 bahasa query komersial yang tersedia,yaitu SQL dan QBE.9.2.3. QBE (Query By Example)

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

102

Page 103: Sistem Basis Data

Bahan Kuliah:Sistem Basis Data

QBE masing-masing mewakili bahasa query prosedural dan non-prosedural. SQL dibangun dengan basis aljabar relasional yang dijelaskan bab sebelumnya. SQL memberikan bahasa query tingkat tinggi ( a high level query language ) dengan struktur sederhana dengan kosakata dan gramatika yang sederhana pula, seperti berikut :

Select A1, A2, …, An

From T1, T2 ,…, Tn

Where P Dimana :

A1,A2,…,An : himpunan dari semua atribut yang hendak ditampilkan.T1,T2,…,Tn : himpunan dari semua tabel yang terlibat (diperlukan) dalam query.

P : predikat / kriteria yg diinginkan tentang informasi yg dicari.

Struktur dasar SQL tersebut equvalen dengan operasi pada aljabar relasional berikut:

π A1,A2,…An (σ P(T1 X …X Tn))

Beberapa operator SQL yang berkorespondensi dengan operator aljabar relasional :

Aljabar Relasional SQL∧ AND∨ OR≠ <> or ><≥ >=≤ <=

FTI –Teknik Informatika URINDO :Edisi 1 Tahun 2007 – [email protected] Refisi : 1

-

103

Page 104: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

BAB 10SQL (Structured Query Language)

RDBMS adalah proram komputer yang dirancangan untuk pengelolaan data dengan melakukan penyimpanan, pembaruan dan pengambilan data. SQL adalah bahasa khusus yang digunakan untuk mengakses dan mengelola RDBMS. Bahasa SQL telah distandarkan, namun demikian telah berkembang banyak varian dan bentuk sesuai dengan kebutuhan vendor RDBMS.

SQL adalah bahasa yang mulanya berorientasi pada basia data relasional. Bahasa ini menghilangkan banyak pekerjaan yang perlu dilakukan pemrogram / pengembang berkaitan dengan operasi – operasi terhadap data bgila dibanding denan menggunakan bahasa general purpose. SQL adalah bahasa yang menggabungkan fitur – fitur bahasa query formal aljabar relasional dan bahasa query formal kalkulus relasional. Meski SQL diacu sebagai bahasa query (yaitu bahasa untuk meminta data) namun sesungguhnya SQL bukan hanya sekedar bahasa query terhadap basis data. SQL juga berisi fasilitas untuk mendifinisikan struktur data, modifikasi struktur data, serta digunakan menspesifikasikan constraint – constraint integritas dan keamanan data.

10.1. Sejarah SQLSQL diawali publikasi makalah E.F. Codd (1970) mengenai model relasional :”A Relational

Model of Data for Large Shared Data Banks”. Pada tahun 1974, D.Chamberlin an R.F. Boyce mengembangkan bahasa query untuk memanipulasi dan mengekstrak data dari basis data relasional, dan definisi dengan “Structured English Query Language” yang disingkat sebagai SEQUEL, yang dikemukakan dalam makalah berjudul “SEQUEL = A Structured English Query Language”. Kemudian SEQUEL berevolusi menjadi versi revisi yaitu SEQUEL/2 pada tahun 1976. Orang mengejanya dengan SQL dan menyebutkan dengan “si-quel” meski ejaan resminya adalah “s-q-l”.

Bahasa SQL mempunyai beberapa bagian yaitu:1. Bahasa pendifinisian data (DDL-Data Definition Language) untuk pendifinisian skema

relasi, penghapusan relasi dan memodifikasi skema relasi.2. Bahasa manipulasi data interaktif (DML-Data Manipulation Language), berisi bahasa query berbasis aljabar relasional dan kalkulus relasional tupel, memasukkan tupel, menghapus tupel dan melakukan modifikasi tupel.3. Pendifinisian View untuk mendifiniskan View.

4. Kendali transaksi untuk menspesifikasikan permulaan dan akhir transaksi.5. Embedded SQL dan dynamic SQL yang mendifiniskan cara kalimat SQL ditempelkan dibahasa pemrograman umum seperti C, C++, Java, PL/1, Cobol, Pascal dan Fortran.

Sistem Basis Data – [email protected] 96

Page 105: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

6. Integritas, bagian dari DDL untuk menspesifikasikan konstrain – konstrain integritas dimana data disimpan yang harus dipenuhi basis data. Pembaruan yang melanggar konstrain – kontrain integritas ditolak.7. Otoriasi, bagian DDL uang menspesifikasikan hak – hak akses terhadap relasi dan view.

Bahasa basis data harus memungkinkan pemakai melakukan hal – hal sebagai berikut:1. mencipakan baisis data dan struktur – struktur relasi.2. Melakukan manajemen data tingkat dasar seperti penyisipan (insertion), modifikasi (modification) struktur dan data, serta penghapusan (deletion).3. Membentuk query sederhana dan kompleks yang mentransformasi data di basis data menjadi informasi.4. melakukan tugas – tugas dengan seminimal mungkin memakai struktur dan sintaks perintah relatif mudah dipelajari.5. harus portabel, yaitu memenuhi suatu standard sehingga dapat menggunakan struktur dan sintaks perintah beragamam DBMS lain.

10.2. Subdivisi SQLSQL (Structured Query Language) dapat dikelompokkan menjadi 3 (tiga), yaitu DDL (Data

Definition Language), DML (Data Manipulation Language) dan DCL (Data Control Language).a. DDL (Data Definition Language)

DDL disebut sebagai bahasa untuk pendefinisian skema (Schema Definition Language) yag berisi perintah – perintah untuk menciptakan objek – objek basis data (table, indeks, view dan lainnya).b. DML (Data Manipulation Language)

DML adalah sekelompok perintah yang menentukan dan melakukan manipulasi nilai – nilai didalam suatu table pada suatu waktu yang diinginkan.c. DCL (Data Control Language)

DCL berisi fitur – fitur yang menentukan aksi yang dapat dilakukan pemakai terhadap objek basis data seperti basisdata, tale, view dan lainnya. Pada ISO, DCL termasuk sebagai bagian dari DDL, selain itu dapat ditambahkan bagian berikut:

• View definiton, SQL DDL untuk perintah mendifinisikan View.

• Transaction control, untuk menspesifikasikan awal an akhir transaksi dan melakukan pengendalian transaksi.

Sistem Basis Data – [email protected] 97

Page 106: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

• Embedded SQL dan dynamic SQL, mendifiniskan cara kalimat SQL dapat ditempelkan dibahasa pemrograman umum seperti C, C++, Java, PL/1, Cobol, Pascal, Fortran dan sebagainya.• Integrity, perintah untuk menspesifikasikan konstrain – konstrain integritas dimana data disimpan di basisdata yang harus dipenuhi DBMS. Pembaruan yang melanggar konstrain – kontrain integritas ditolak.

10.3. SQL – DDLDDL (Data Definition Language) memungkinkan kita membuat dan menghancurkan objek –

objek basis data (database/schema, domain, table, view, dan index). DBMS akan menggunakan informasi deskripsi struktur basis data saat menterjemahkan kalimat DML menjadi perintah – perintah ke manajer basis data. Informasi ini diperoleh dari data dictionary / directory. Setiap kalimat terdapat kalimat DDL yang baru maka terdapat perubahan pada data dictionary / directory. System catalog

akan secara otomatis dibuat pada saat pembuatan basis data, serta kemudian diperbaharui begitu terdapat eksekusi kalimat DDL.

DDL berbeda untuk dialek – dialek SQL yang berbeda, dibawah ini kita akan menggunakan ISO SQL sebagai acuan. Kalimat DDL mendefiniskan struktur data dengan menciptakan dan mengelola basis data dan objek – objek basis data seperti table dan store procedure. Kebanyakan kalimat DDL mempunyai bentuk sebagai berikut

• CREATE object_name• ALTER object_name• DROP object_name

Secara default, hanya anggota administrator yang dapat mengeksekusi kalimat DDL. Jika pemakai – pemakai berbeda menciptakan objek-objeknya sendirin di basidata maka masing – masing pemilik objek perlu memberikan wewenang yang cocok untuk masing – masing pemakai objek. Keperluan pemberian wewenang ini menyebabkan halangan administratif sehingga kita seharusnya menghindari pemakai – pemakai berbeda menciptakan objeknya sendiri.

10.3.1 Identifier SQLIdentifier SQL digunakan untuk mengidentifikasi objek – objek di basis data seperti nama

table, view dan kolom. Karakter – karakter yang dapat digunakan harus terdapat pada himpunan karakter (character set). Standard ISO menyediakan himpunan karakter default terdiri – dari karakter

Sistem Basis Data – [email protected] 98

Page 107: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

huruf kapital (A .. Z), huruf kecil (a .. z) dan karakter garis bawah (_). Berikut ini adalah batasan – bataan penamaan untuk identifier SQL, yaitu:

• Identifier tidak boleh lebih panjang dari 148 karakter (kebanykaan dialek lebih pendek).

• Identifier harus dimulai dengan huruf.

• Identifier tidak boleh berisi spasi.

10.3.2. Tipe data ISO SQLPada saat menciptkan tabel, kita harus mendifiniskan tipe data dari msing – masing kolom

(field) pada tabel tersebut. Tipe data menspesfikasikan tipe informasi (karakter, angka atau tanggal) yang dapat ditangani kolom termasuk cara data tersebut disimpan.

a. ISO SQLAda 6 (enam) tipe data dalam standard ISO, yaitu:

No Tipe Data Deklarasi1. Karakter CHAR VARCHAR2. Bit BIT BIT

VARYING3. Numerik eksak NUMERIC DECIMAL INTEGER

SMALLINT4. Numerik riil FLOAT REAL DOUBLE PRICISION5. Waktu tanggal DATE TIME6. interval INTERVAL

Tabel 10.1. Tipe data ISO

b. MS SQL ServerMS SQL Server mendukung beragam tipe – tipe data sistem. SQL Server juga

memungkinkan tipe data yang didefinisikan pemakai yang dibangun berdasarkan tipe – tipe data yang disediakan sistem.

Pada persoalan DDL ini, meskipun hampir seluruh RDBMS mengaku memenuhi standard misalnya ANSI SQL, maka perluasan yang dilakukan dari masing – masing RDBMS itu menjadikan RDBMS – RDBMS tersebut menjadi tidak kompatible satu dengan lainnya.

Saran praktis alam melakukan pendefinisian basis data adalah sebaiknya kita melakukan seluruh proses ini menggunakan tools otomatis seperti ER-WIN atau Power Designer dari Powersoft Inc. dan sebagainya. Dengan menggunakan tools yang netral terhadap vendor ini, kita dapat membangkitkan beraneka ragam sql script yang dapat

Sistem Basis Data – [email protected] 99

Page 108: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

dieksekusi pada beraneka ragam RDBMS dengan hanya mendefinisikan taarget RDBMS yang dikehendaki.

b.1. Didefiniskan SistemPada MS SQL Server menyediakan berbagai tipe data yang berbeda, tipe – tipe data

tertentu mempunyai beberapa tipe dengan asosiasinya denan tipe – tipe data yang diberikan SQL Server. Contohnya kita dapat menggunakan tipe data int, decimal atau float untuk menyiman data numeric.

Tabel berikut memetakan tipe data yang umum ke tipe data yang didukung SQL Server, tabel juga berisi sinonim tipe data untuk kompatibilitas ANSI.

Tipe data Tipe data disediakan sistem

Sinonim dengan ANSI Jumlah byte

Binary Binary[(n])Varbinary[(n])

-binary varying[(n])

1-8000

Character Char[(n)]Varchar[[n)]

Character[(n)]char[acter]varying[(n)]

1-8000(8000 characters)

Unicode character

Nchar[(n)]Nvarchar[(n)]

National char[acter][(n)]National char[acter]varying[(n)]

2-8000(1-4000 characters)

Date and time Datetime, smalldatetime

- 8 (24 byte integers)4 (22 byte integers)

Exact numeric Decimal[(p[,s])]numeric[(p[,s])]

dec 5-17

Approximate numeric

Float[(n)]Real

Double precision orFloat[(n)]

4-84

Global identifier Uniqueidentifier - 16Integer Int

smallint, tinyintInteger-

42,1

Monetary Money, smallmoney - 8,4Special Bit, cursor,sysname,

timestamp- 1, 0-8

Text and image Text, image - 0-2 GBUnicode text Ntext National text 0-2 GB

Tabel 10.2. Tipe data SQL Serverb.2. Didefiniskan Pemakai

Tipe data yang didefiniskan pemakai (user-defined data type) berdasarkan tipe data yang disediakan sistem. Kita dimungkinkan mendefiniskan sendiri tipe data untuk menjamin konsistensi saat bekerja pada table – tabel atau basisdata – basisdata berbeda. Tipe data didefinisikan pemakai tidak mengijikan pendifinisian struktur atau tipe data kompleks.

SQL server menyediakan stored procedure sebagai berikut:1. sp_addtype, untuk menciptakan tipe data yag didefinisikan pemakai.2. sp_droptype, untuk menghapus tipe data yag didefinisikan pemakai.b.2.1. Penciptaan tipe data

Sistem Basis Data – [email protected] 100

Page 109: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Sintaksnya adalah:Sp_addtype type, system_data_type [,’NULL,I,NOT NULL’]

Berikut ini adalah contoh 3 (tiga) tipe data yang didefiniskan oleh pemakai melalu store procedure.

EXEC sp_addtype isbn,’smallint’,NOT NULLEXEC sp_addtype zipcode,’char(10)’,NULLEXEC sp_addtype alamat,’varchar(90)’,NULL

Terdapat beberapa petunjuk penciptaan tipe data oleh pemakai dan menyeimbangkan ukuran penyimpanan:

1. Jika panjang kolom beragam, gunakan salah satu dari tipe data variable, misalkan kolom alamat kita gunakan varchar bukan char(fixed) untuk menghemat penggunaan ruang penyimpanan.

2. Tipe data integer, date dan time dan monetary mendukung jangkauan berbeda berdasarkan ukuran penyimpanan. Jika kita menggunakan tipe data tinyint untuk menyimpan identifier dalam basisdata, maka kita akan bermasalah saat memutuskan penyimpanan data angka 256.

3. Tipe data numeric, ukuran dan level presisi yang diperlukan membantu menentukan piihan, umumnya kita menggunakan decimal.

4. Jika penyimpanan lebih dari 8000 byte, gunakan text atau image, jika kurang dari 8000 gunakan char , varchar, atau binary.

b.2.2. Penghilangan tipe dataUntuk menghilangkan tipe data yang telah dibuat dengan prosedur

sebelumnya, unutk melakukan penghapusan, sintaksnya adalah:Sp_droptype type

Berikut ini adalah contoh untuk melakukan drop untuk tipe data isbn yang telah didefinisikan sebelumnya:

Sp_droptype isbn

10.3.3. Pendifinisian Basis DataSistem Basis Data – [email protected] 101

Page 110: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Dalam pendefinisan basis data ini meliputi pembuatan basis data, pembuatan table, indeks

dan aturan penamaan.

a. Pembuatan database

Proses pembuatan basis data sangat berbeda antara DBMS satu dengan lainnya. Pada sistem multiuser, otoritas penciptaan basis data biasanya berada pada DBMS (Database Adminstrator). Standard ISO tidak menspesifikasikan cara penciptaan basis data dan masing – masing dialek SQL mempunyai pendekatan berbeda. Teknik yang digunakan INGRES dan ORACLE atau SQL Server adalah sebagai berikut:

• INGRES menyediakan program utilitas khusus untuk meng CREATEDB, yaitu DESTROYDB.

• ORACLE dan SQL SERVER menciptakan basis data sebagai bagian proses instalasi. Untuk kebanyakan bagian, tabel – tabel pemakai ditempatkan pada bais data tunggal, pembuatan database harus unik dalam suatu server database.

Menurut standard ISO, relasi – relasi dan objek – objek basis data lain berada disatu lingkungan (environment). Tiap lingkungan berisi satu katalog atau lebih, dari masing – masing katalog berisi satu himpunan skema (schema).

Skema adalah kumpulan objek basis data bernama yang saling berhubungan satu dengan lain (satu basis data dapat dideskripsikan di satu skema atau skema yang lain). Objek – objek dari skema bisa berupa table, view, domain, assertion, collation, translation, dan character set. Semua objek di satu skema mempunyai pemilik yang sama dan berbagi sejumlah default.

Berikut ini adalah sintaks untuk membuat database (baik di MS SQL Server ,MySQL

Server ataupun Oracle:

Create Database [Database_name]

Sebagai contoh, misalkan kita akan membuat database baru dengan menggunakan MS SQL Server atau MYSQL dengan nama database NilaiMahasiswa pada bab 2, maka perintahnya adalah:

Create Database NilaiMahasiswa

Sistem Basis Data – [email protected] 102

Page 111: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Untuk melakukan penghapusan database pada MS SQL Server atau MySQL, sintaknya adalah:

Drop Database [Database_name]

Misalnya kita akan melakukan penghapusan pada database NilaiMahasiswa, maka perintahnya adalah:

Drop Database NilaiMahasiswa

Sedangkan untuk melakukan perubahan nama database pada MS SQL Server, sintaknya adalah:

Sp_RenameDB “[Database_lama], “[Database_baru]”

Misalnya kita akan melakukan perubahan nama database NilaiMahasiswa menjadi NilaiMHS, maka perintahnya adalah:

Sp_RenameDB “NilaiMahasiswa”, “NilaiMHS”

b. Pembuatan table

Setelah dilakukan proses penciptaan database, kemudian kita dapat menciptakan struktur table untuk relasi – relasi pada basis data terebut.

Sintaks SQL untuk melakukan pembuatan tabel baru didalam basis data :

Create Table table_name{ column_name data_type [NULL | NOT NULL]}

dimana :table_name adalah nama tabel yang akan dibuat.Column_name adalah nama-nama atribut yang akan terdapat di dalam tabel_name.

Sistem Basis Data – [email protected] 103

Page 112: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Data_type adalah domain nilai masing-masing atribut tersebut yang di tentukan berdasarkan tipe datanya.NULL menspesifikasikan apakah kolom tersebut boleh kosong datanya. NOT NULL menspesifikasikan kolom tersebut tidak boleh kosong (harus isi datanya) dan biasanya untuk identifikasi primary key pada table bentukan.

Pada perintah Create Table, minimal kita harus mendefinisikan nama tabel, kolom-kolom dan tipe datanya. Misalnya kita akan membuat tabel Mahasiswa pada database NilaiMahasiswa yang telah kita buat sebelumnya, dengan struktur table sebagai berikut:

Catatan : struktur table SQL ServerTabel 10.3. Struktur table Mahasiswa

Untuk membuat perintah SQl untuk membuat table Mahasiswa tersebut adalah sebagai berikut:1. Membuat table belum ada primary keynya.

Create Table Mahasiswa(nim char (9) not null,nama_m varchar (35) not null,tpt_lhr_m varchar(26),tgl_lhr_m datetime,j_kelamin varchar(10),alm_m varchar(90),kota_m varchar (20),agama_m varchar(10),telpon_m char (13),kode_jur char (2))

Sistem Basis Data – [email protected] 104

Page 113: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Perintah diatas adalah membuat table baru dengan nama Mahasiswa, dimana pada saat membuat table kita belum menentukan primary key pada table tersebut, untuk itu field nim harus didefinisikan not null. Untuk membuat primary key setelah table terbentuk, akan tetapi belum dibuat primary key nya maka perintahnya adalah sebagai berikut :

Alter Table MahasiswaAdd Constraint PkMahasiswa Primary Key(nim)

Perintah diatas adalah membuat primary key pada table Mahasiswa, di8mana primary key

nya adalah nim, dengan nama constraintnya adalah PkMahasiswa. Untuk nama constraint ini tidak harus PkMahasiswa, kita bisa mendefinisikan dengan PkMHS atau lainnya.

2. Membuat table langsung dibentuk primary keynya.

Kita juga bisa membentuk table Mahasiswa tersebut dengan langsung membentuk primary keynya pada saat mengcreate table tersebut, perintahnya adalah:

Create Table Mahasiswa(nim char (9) Primary Key,nama_m varchar (35) not null,tpt_lhr_m varchar(26),tgl_lhr_m datetime,j_kelamin varchar(10),alm_m varchar(90),kota_m varchar (20),agama_m varchar(10),telpon_m char (13),kode_jur char (2))

atau :Create Table Mahasiswa(nim char (9),nama_m varchar (35) not null,tpt_lhr_m varchar(26),tgl_lhr_m datetime,j_kelamin varchar(10),alm_m varchar(90),kota_m varchar (20),agama_m varchar(10),telpon_m char (13),kode_jur char (2),Constraint PkMHS Primary Key (nim))

Sistem Basis Data – [email protected] 105

Page 114: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

c. Merubah struktur table

Dengan perintah ALTER TABLE kita dapat melakukan menambah kolom (ADD) pada table, menghapus kolom dan indeks (DROP).

1. Menambah kolomMisalkan kita akan menambahkan kolom pada table mahasiswa dengan

nama kolom email, varchar (30) null, maka perintahnya adalah:

ALTER TABLE MahasiswaAdd email varchar(30)

2. Merubah kolomMisalkan kita akan merubah kolom email tipe datanya diganti menjadi

char(40) pada table mahasiswa, maka perintahnya adalah:

ALTER TABLE MahasiswaALTER Column email Char(40)

3. Menghapus kolomMisalkan kita akan menghapus kolom email yang kita tambahkan pada

table mahasiswa, maka perintahnya adalah:

ALTER TABLE MahasiswaDROP Column email

d. Penghapusan table

Setelah dilakukan proses penciptaan table, kita dapat melakukan penghapusan table baik dari sisi isi dan struktur tablenya. Terdapat DBMS yang melarang drop terhadap table yang masih berisi data, dengan demikian kita harus melakukan proses 2 (dua) langkah, yaitu:

• Kita harus mengosongkon isi table dengan mengggunakan perintah DELETE.• Kita menghapus definisi table menggunakan perintah DROP TABLE.

Sintaks untuk melakukan penghapusan tble adalah sebagai berikut:

Sistem Basis Data – [email protected] 106

Page 115: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Drop Table [table_name] [RESTRICT | CASCADE]

Klausa Restrict atau Cascade mengacu pada apa yang terjadi pada objek – objek basis data lain yang bergantung pada table ini, misalkan VIEW. Restrict berarti akan tidak mengijinkan atau membatalkan drop table, sementara Cascade, maka objek – objek basis data yang bergantung pada table akan ikut terhapus juga. Restrict dan Cascade ini dapat saja tidak diimplementasikan oleh Vendor DBMS.

Misalkan kita akan melakukan penghapusan data pada table Mahasiswa maka perintahnya adalah:

Delete * From Mahasiswa Atau :Delete from Mahasiswa

Untuk melakukan penghapusan table Mahasiswa berserta strukturnya, maka perintahnya adalah:

Drop Table Mahasiswa

e. Manipulasi terhadap definisi kolomPenambahan (insert), penghapusan (drop), dan pengubahan (update) terhadap kolom

(field) pada table dengan menggunakan perintah ALTER TABLE.

ADD

UPDATE DROP

Sistem Basis Data – [email protected] 107

ALTER TABLE MahasiswaADD email varchar(30) null

ALTER TABLE MahasiswaAlter Column email char(25) null

ALTER TABLE MahasiswaDrop Column email

Page 116: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.1. Skema manipulasi definisi table

Keterangan :ADD, pada perintah tersebut adalah menambahkan field baru dengan nama

email, tipe data varchar(30) null pada table Mahasiswa.UPDATE, pada perintah tersebut adalah merubah tipe data dan lebar untuk field

email dengan tipe data dirubah menjadi char(25) null pada table

Mahasiswa.DROP, pada perintah tersebut adalah menghapus field email pada table

Mahasiswa.

Kebanyakan vendor mengimplementasikan ALTER TABLE sebelum kalimat ini masuk dalam standard SQL. Kalimat ALTER TABLE baru dimasukkan kedalam SQL pada SQL92. terdapat beberapa perbedaan mengenai cara kerja kalimat ini antara vendor – vendor. Pada SQL92 ALTER TABLE dapat melakukan hal – hal berikut ini:

1. Menambahkan kolom kedalam table.

2. Menghapus kolom dari table.

3. Menambahkan constraint kedalam table.

4. Menghapus constraint dari table.

5. menambahkan nilai default kedalam kolom pada table.

6. menghapus nilai default dari kolom pada table.

ALTER TABLE sangat berharga saat kita perlu mendifinisi ulang table, namun kita seharusnya merancang database dengan sebesar mungkin tidak bergantung pada kalimat ini. Perubahan struktur table yang telah atau sedang digunakan operasional penuh berisiko bencana. View yang diturunkan dari table tidak berfungsi dan aplikasi berjalan tidak benar atau tidak berjalan sama sekali. Dengan demikian, kita seharusnya meranang database sehingga ALTER TABLE

merupakan pilihan terakhir yang dapat digunakan.Jika sistem tidak mendukung ALTER TABLE, atau jika kita akan menghindari

penggunaannya, kita tinggal menciptakan table baru yang dikehendaki perubahannya dan mentransfer table lama kedalam table baru. Kemudian, kita memberikan wewenang pengaksesan pemakai table

lama kedalam table baru.

10.3.4. Pembuatan IndeksSistem Basis Data – [email protected] 108

Page 117: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Indeks adalah struktur yang memberikan pengaksesan cepat ke baris – baris (record) pada table berdasarkan nilai satu kolom atau lebih. Keberadaan indeks dapat meningkatkan efisiensi pengambilan data secara berarti. Tetapi karena indeks harus diperbarui sistem setiap kali terjadi perubahan table maka indeks juga memberi overhead (operasional) yang tinggi.

Pembentukan indeks tidak distandarkan, kebanyakan dialek mempunyai format berikut:

CREATE [UNIQUE] INDEX nama_indeksON nama_table (nama_kolom [ASC|DESC] [,…])

Nama_kolom, merupakan kunci indeks dimulai dari yang paling utama. Indeks hanya dapat iciptakan pada table – table dasar bukan view. Jika option UNIQUE digunakanm keunikan kolom atau kombinasi kolom yang diindeks akan dipakai sistem. Kemampuan ini diperlukan untuk kunci utama atau alternate key. Merupakan praktek bagus untuk membuat indeks – indeks unik setidaknya untuk kolom - kolom kunci utama pada saat table dasar dibuat dan sistem tidak secar otomatis memaksakan keunikan kunci utama.

Berikut ini contoh pembuatan indeks pada table Mahasiswa dimana kolom indeksnya adalah nim dengan nama indeks MhsIdx, maka perintahnya adalah:

CREATE INDEX MhsIdxON Mahasiswa

Bentuk Index pada atribute nim pada table Mahasiswa pada databse NilaiMahasiswa, sekali nim ditambahkan data baru, maka akan secara otomatis terurut datanya secara assending, setiap kali dilakukan update, delete atau insert data, oleh karena itu Index diperlukan .

Jika kita membuat indeks untuk table dasar dan kemudian ingin menghilangkan, dapat menggunakan pernyataan DROP INDEX dengan format sintaks sebagai berikut:

DROP INDEX nama_index

Misalkan kita akan menghapus indeks yang telah dibuat sebelumnya dengan nama indeks

MhsIdx, maka perintahnya adalah:

DROP INDEX MhsIdx

10.3.5. Aturan Penamaan

Sistem Basis Data – [email protected] 109

Page 118: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

MS SQL Server menyediakan aturan penamaan identifier objek dan penggunaan pembatas untuk identifier tidak standard. Kita disarankan menamai objek menggunakan identifier standard.

a. Identifier standard.

Identifier standard panjangnya 1 sampai 128 karakter dan dapat berisi huruf, simbol (@, #, _, or $), dan angka, spasi tidak diijinkan. Aturan penggunaan identifier adalah:

• Karakter pertama harus berupa karakter a-z atau A-Z atau salah satu simbol @, #, or _.

• Setelah karakter pertama, identtifier dapat huruf, angka, atau simbol @, #, _, aatau $.

• Nama identifier yang dimulai simbol mempunyai penggunaan khusus : identifier dimulai dengan @ menunjukkan variable atau parameter lokal, banyak identifier fungsi SQL Server dimulai @@ sehingga kita seharusnya tidak menciptakan identifier yang dimulai @@, identifier yang dimulai # menunjukkan table atau prosedur lokal, identifier yag dimulai ## menunjukkan objek temporer.

b. Delimited Identifier.

Jika identifier memenuhi semua aturan utuk format identifier, maka identifier dapat digunakan dengan atau tanpa delimiter. Jika identifier tidak memenuhi salah satu aturan atau lebih, maka identifier harus selalu diberi delimiter.

Delimited identifier dapat digunakan pada situasi – situasi berikut ini:

• Ketika nama berisi spasi atau karakter lain yang tidak diijinkan pada identifier standard.

• Ketika kata kunci digunakan untuk nama objek atau bagian – bagian dari nama objek.

• Delimated identifier diapit tanda kurung atau tanda petik ganda ketika digunakan pada kalimat Transact-SQL, contohnya:

- Bracketed identifier diberi delimiter dengan tanda kurung siku ( [ ] )-

SELECT * FROM [Blanks In Table Name]- Quoted identifier diberi delimiter by double quotation marks ( “ ” )

SELECT * FROM “Blanks In Table Name”

Sistem Basis Data – [email protected] 110

Page 119: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Ketika melakukan penamaan objek – objek basis data, kita seharusnya:1. Agar menggunakan nama yang pendek.2. Gunakan nama – nama yang berarti apabila memungkinkan.3. Gunakan konvensi penamaan yang jelas dan sederhana. Putuskan apa yang terbaik

untuk situasi yang dihadapi dan berlakulah konsisten, cobalah tidak membuat konvensi penamaan yang komplek karena akan sulit dimengerti.

4. Gunakan identifier yang membedakan tipe objek, khususnya untuk view dan store procedure. Administrator sering salah antara view dengan table, awali nama view name dengan vw.

5. Jaga agar nama – nama objek dan pemakai adalah unik .

10.4. SQL - DMLDML adalah subset SQL untuk melakukan manipulasi tupel – tupel pada basis data

relaasional. DML mendefinisikan kalimat pengambilan, penyisipan, pembaruan dan penghapusan data. Pengembang akan sering menggunakan kalimat – kalimat DML dibandingkan kalimat – kalimat jenis ain.

10.4.1. Konsep DMLDML menyediakan 4 (empat) pernyataan untuk melakukan manipulasi data dalam database,

yaitu:1. SELECT, untuk query (meminta informasi) dari database.2. INSERT, untuk melakukan penyisipan data pada table dalam suatu database.

3. UPDATE, untuk melakukan perubahan data pada suatu table dalam suatu database.

4. DELETE, untuk melakukan penghapusan data pada suatu table dalam suatu database.

SQL merupakan bahasa manipulasi data yang lengkap dan dapat digunakan untuk mengelola data basisdata. Perintah untuk melakukan modifikasi basis data tidak sekompleks kalimat SELECT yang digunakan untuk query. Pada sesi ini, kita mendeskripsikan tiga pernyataan SQL yaitu:

1. INSERT, untuk menambah baris baru kedalam table.

2. UPDATE, untuk memodifikasi (update) data yag telah ada pada table.

3. DELETE, untuk menghilangkan baris data pada suatu table.

Sistem Basis Data – [email protected] 111

Page 120: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Kalimat SELECT merupakan kalimat kompleks bila dibandingkan kalimat – kalimat DML yang lain. Pemahaman terhadap kalimat SELECT akan mempermudah pemahaman kalimat lain. Perintah SELECT mengambil data dari table tanpa mempengaruhi / mengubah data yang disimpan. Perintah ini hanya digunakan untuk mengirim atau mengambil data tanpa mengubahnya. Sementara itu, kalimat UPDATE, INSERT dan DELETE digunakan untuk mempengaruhi / mengubah data pada table. Penggunaan yang tidak tepat dari perintah UPDATE, INSERT dan DELETE dapat menyebabkan kehilangan data atau terjadi korupsi data. Kalimat UPDATE, INSERT dan DELETE juga mempengaruhi / mengubah indeks. Sistem basis data akan mengubah indeks saat terjadi perubahan record atau penambahan data baru pada table.

Berikut ini adalah skema relasi untuk kasus SQL, yaitu pada database NilaiMahasiswa, beserta isi data dari masing – masing relasi:

Mahasiswa : (nim, nama_m, tpt_lahir_m, tgl_lhr_m, j_kelamin, alm_m, kota_m, agama_m, telpon_m, kode_jur)

Jurusan : kode_jur, nama_jur, jenjang, nama_kajur)Matakuliah : (kdmk, nama_mk, sks, semester)Dosen : (nid, nama_d, pendidikan_d, agama_d, alamat_d, kota_d, telpon_dNilai : (nim, kdmk, smt, nid, nilai_absen, nilai_tugas, nilai_uts, nilai_uas)

Tabel 10.4. Data value Mahasiswa

Sistem Basis Data – [email protected] 112

Page 121: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Tabel 10.5. Data value dan struktur table Jurusan

Tabel 10.6. Data value dan struktur table Matakuliah

Tabel 10.7. Data value dan struktur table Dosen

Sistem Basis Data – [email protected] 113

Page 122: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Tabel 10.8. Data value dan struktur table Nilai10.4.2. Kalimat Insert

Terdapat 2 (dua) bentuk pernyataan kalimat INSERT, yaitu:1. Bentuk pertama INSERT, dimana memungkinkan satu baris tunggal disisipkan kealam

table.2. Bentuk kedua INSERT, dimana memungkinkan banyak baris sekaligus dikopikan

kesatu table atau lebih.

Bentuk pertama INSERT: Setelah Struktur tabel terbentuk, data dapat dimasukkan ke dalam tabel dengan

perintah Insert dengan menggunakan Query, baik menggunakan database MS Access, SQL Server, MySQL ataupun Oracle.Sintaks untuk melakukan insert data kealam suatu table adalah sebagai berikut:

Sistem Basis Data – [email protected] 114

Page 123: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

INSERT [ INTO] NAMA TABEL [Daftar_Kolom] Value DAFTAR_NILAI

INSERT : Klausa ini menspesifikasikan nama tabel dimana data bisa ditambahkanVALUE : Klausa ini menspesifikasikan nilai data yang akan disisipkan ke dalam kolom

pada tabelDaftar_Kolom : Merupakan daftar kolom yang dipisahkan oleh tanda koma menyatakan kolom-

kolom yang akan diisi data. Jika tidak ada kolom yang dinyatakan, berarti semua kolom di dalam akan diisi data. Jika hanya sebagian daftar yang dinyatakan, nilai null atau nilai default akan diisikan ke kolom yang tidak disebutkan dalam daftar kolom.

Daftar Nilai : Daftar nilai untuk kolom tabel yang akan disisipkan sebagai sebuah baris data dalam tabel. Data yang diberikan pada daftar nilai harus sesuai dengan daftar kolom. Banyak data harus sama dengan banyak kolom, tipe data, presisi, dan skala dari setiap data harus sesuai dengan kolomnya.

Contoh : Misalkan kita akan menyisipkan data pada ke 5 (lima) table pada database NilaiMahasiswa tersebut diatas untuk masing – masing table 1 (satu) record untuk record pertama, maka perintahnya adalah:

1. Table MahasiswaINSERT INTO MahasiswaValues (‘I01031001’,’Dewi Nurbaini’,’Bekasi’,’12/10/87’, ’Wanita’,’Jl. Dahlia I Blok BC 2/3’,’Bekasi Utara’, ’Hindu’,’021-8791290’,’TI’)

2. Table JurusanINSERT INTO JurusanValues (‘KA’,’Komputerisasi Akuntansi’,’Diploma 3’, ’Rini Wulandari,MM,MMSi’)

3. Table Matakuliah

Sistem Basis Data – [email protected] 115

Page 124: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

INSERT INTO MatakuliahValues (‘MKB331201’,’PENGANTAR TEKNOLOGI INFORMASI’,3,1)

4. Table DosenINSERT INTO DosenValues (‘D01’,’Amir Mahmud,SE’,’S1’,’Islam’, ’Jl. Nagka Permai No.17’, ’Bekasi’,’021-8712311’)

5. Table NilaiINSERT INTO NilaiValues (‘M01031001’,’MPK131201,1,’D02’,12,78,89,55)

Catatan :1. Perhatikan untuk pemakaian tanda petik ( ‘ ‘), untuk tipe data

int,number,money, dan lainnya yang bisa digunakan untuk proses kalkulasi tidak perlu ditambahkan tanda petik terebut.

2. Kita dapat memasukan seluruh record sekaligus jika menggunakan database MS-SQL Server, MySQL dan Oracle kecuali untuk MS-Access harus dimasukkan per record datanya.

Kita juga dapat melakukan pengisian data untuk kolom tertentu pada suatu table, sebagai contoh berikut ini adalah memasukkan data pada record kedua untuk masing – masing table diatas untuk kolom tertentu yang diisi datanya:

1. Table MahasiswaINSERT INTO Mahasiswa (nim,nama_m,tpt_lhr_m,tgl_lhr_m,j_kelamin)Values (‘I01031002’,’Deni Hermawan’,’Jakarta’,’1/17/80’, ’Pria’)Artinya adalah kita memasukkan data untuk kolom nim,nama_m,tpt_lhr_m,tgl_lhr_m,j_kelamin pada table Mahasiswa

2. Table JurusanINSERT INTO Jurusan (kode_jur,nama_jur,jenjang)Values (‘MI’,’Manajemen Informatika’,’Diploma 3’)

Sistem Basis Data – [email protected] 116

Page 125: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

3. Table MatkuliahINSERT INTO Matakuliah (kdmk,nama_mk)Values (‘MKB331203’,’PRAKTIKUM PAKET PROGRAM APLIKASI I’)

4. Table DosenINSERT INTO Dosen(nid,nama_d,pendidikan_d,agama_d,telpon_d)Values (‘D02’,’Susilo Wibowo,M.Kom’,’S2’,’Islam’,’021-8723122’)

5. Table NilaiINSERT INTO Nilai (nim,kdmk,smt,nid,nilai_absen)Values (‘M01031002’,’MPK131201,1,’D02’,14)

Catatan :1. Untuk kolom primary key table dan kolom lainnya yang nilai datanya Not Null (harus isi),

maka kita harus memasukkan datanya kalau tidak maka data yang kit insert tidak akan bisa.

2. Urutan nilai data (isi data) haarus sesuai dengan urutan kolom yang ada pada table

tersebut.

Bentuk kedua INSERT: Sintaks untuk melakukan insert untuk melakukan copy data kedalam suatu table adalah

sebagai berikut:

INSERT INTO nama_table [(daftar_kolom)]SELECT …

Nama_table dan daftar_kolom didefiniskan sebelum satu baris tunggal disisipkan. Klausa SELECT berupa sembarang pernyataan SELECT sah. Baris disisipkan kedalam table yang identik dan table hasil yang diproduksi subselect. Batasan pada bentuk pertama dapat diterapkan pada bentuk kedua ini.

Kalimat INSERT mempunyai batasan – batasan dalam penggunaannya, yaitu:1. Kita harus selalu menspesifikasikan nilai – nilai untuk kunci utama dan

kolom - kolom yang dinyatakan sebagai NOT NULL.Sistem Basis Data – [email protected] 117

Page 126: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

2. Data baru harus sesuai dengan tipe data untuk kolom yang dimaksud.3. Ketika menggunakan foreign key, kita harus memasukkan nilai – nilai

absah pada table relasional.

RDBMS melakukan pemeriksaan untuk menjamin ketentuan – ketentuan diataas dipenuhi. Jika kita memberikan perintah kalimat insert yang tidak absah, RDBMS akan memberikan kesalahan dan tidak mengijinkan perubahan.

Sebagai contoh kita akan mengkopi (duplikasi) table baru dengan nama MahasiswaNew hasil copy dari table Mahasiswa pada database NilaiMahasiswa:

1. Kita harus membuat table baru dengan nama table MahasiswaNew

Create Table MahasiswaNew(nimb char (9) Primary Key,nama_mb varchar (35) not null,tpt_lhr_mb varchar(26),tgl_lhr_mb datetime,j_kelaminb varchar(10),alm_mb varchar(90))

2. Lalu lakukan pembuatan query berikut ini:

INSERT INTO MahasiswaNew (nimb,nama_mb,tpt_lhr_mb, tgl_lhr_mb, j_kelaminb,alm_mb)SELECT nim,nama_m,tpt_lhr_m, tgl_lhr_m, j_kelamin, alm_m FROM Mahasiswa

Artinya adalah, kita melakukan pemasukan data baru kedalam table

MahasiswaNew, dimana dataya diambilkan dari data yang ada pada table

Mahasiswa untuk kolom tertentu yang dilakukan copy datanya.

Contoh berikut ini adalah melakukan pengcopian (duplikasi data), dimana data yang dicopy adalah seluruh record dan seluruh kolom yang ada pada table tersebut.

SELECT *INTO MatakuliahBaruFROM Matakuliah

Sistem Basis Data – [email protected] 118

Page 127: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Artinya adalah, kita melakukan copy data beserta struktur tablenya untuk table

Matakuliah kedalam tale MatakuliahBaru pada database NilaiMahasiswa.

Kita juga bisa melakukan copy pada suatu table ke dalam table yang baru,

dimana yang dicopy adalah struktur table beserta isi datanya untuk 2 (dua) atau

lebih table dalam suatu database.

Misalkan kita akan mengcopy table lama Mahasiswa dan Jurusan pada

database NilaiMahasiswa kedalam table baru dengan nama MahasiswaJurusan,

maka perintahnya adalah:

SELECT nim,nama_m,j_kelamin,alm_m,nama_jur,jenjangINTO MahasiswaJurusanFROM Mahasiswa inner join Jurusan on Mahasiswa.kode_jur = Jurusan.kode_jur

Atau kita akan membuat duplikasi dengan nama MHSJurMI, dimana yang

dicopy jurusannya adalah ’Manajemen Informatika, maka perintahnya adalah:

SELECT nim,nama_m,j_kelamin,alm_m,nama_jur,jenjangINTO MahasiswaJurusanFROM Mahasiswa inner join Jurusan on Mahasiswa.kode_jur = Jurusan.kode_jurWhere nama_jur=’Manajemen Informatika’

10.4.3. Kalimat UpdateKalimat UPDATE memungkinkan kita memodifikasi satu nilai kolom atau lebih unuk data table yang

telah ada. Kita dapat menerapkan perubahan kesemua baris di table, satu subset baris, atau satu baris. Sintaks dari kalimat UPDATE tersebut adalah sebagai berikut:

UPDATE table_nameSET column_1 = value_1[,column_2 = value_2 [,…]]WHERE condition

Sebagaimana kalimat INSERT, beberapa batasan juga diterapkan terhadap kalimat UPDATE dan juga menjadi sasaran bataan – batasan pada INSERT. Kita dapat menggunakan kalusa WHERE untuk membatasi baris – baris yang dilakukan perubahan. Ini memungkinkan kita menerapkan perubahan – perubahan secara selektif. Update memungkinkan kita memodifikasi kolom – kolom yang berisi kunci utama atau foreign key sepanjang hasil perubahan memenuhi constraint integritas yang diberlakukan.

Sistem Basis Data – [email protected] 119

Page 128: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Pada sub bab 10.4.2 kita telah mencoba untuk memasukkan data dengan kalimat insert, pada insert record kedua ada beberapa kolom yang belum dimasukkan datanya, untk memasukkan data pada record kedua terebut adalah sebagai berikut:

1. Table MahasiswaUPDATE Mahasiswa set alm_m=’Jl.Seruni Raya No.3’, kota_m=’Cikarang’,agama_m=’Islam’,telpon_m=’02-9897119’, kode_jur=’TI’WHERE nim=’I01031002’

2. Table JurusanUPDATE Jurusan set nama_kajur=’Wahono Diprodjo,MM,MKom.’WHERE kode_jur=’MI’

3. Table MatakuliahUPDATE Matakuliah set sks=1, semester=1WHERE kdmk=’MKB331203’

4. Table DosenUPDATE Dosen set alamat_d=’Jl. Bambu Apus No.24’, kota_d=’BekasiWHERE nid=’D02’

5. Table NilaiUPDATE Nilai set nilai_tugas=67, nilai_uts=78, nilai_uas=87WHERE nim=’M01031002’,kdmk=’MPK131201’,smt=1

10.4.4. Kalimat DeleteKalimat DELETE memungkinkan kita menghapus satu record ataulebih pada suatu table dlam

database. Sintaks dari kalimat DELETE tersebut adalah sebagai berikut:

DELETE FROM table_nameWHERE condition

Kalimat DELETE hanya bisa dijalankan bila perubahan – perubahan yang ditimbulkan tidak membuat basis data melanggar integritas yang telah ditetapkan sebelumnya.

Table_name, dapat berupa table dasar atau view yang dapat diperbaharui, syarat adalah optional. Jika tidak ada klausa WHERE, maka semua baris akan terhapus dari table. Penghapusan semua baris di table

Sistem Basis Data – [email protected] 120

Page 129: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

bukan berarti menghapus table, jika akan menghapus table dan definisi table maka menggunakan perintah DROP TABLE.

Jika klausa WHERE dispesifikasikan, maka hanya baris – baris yang memenuhi syarat akan dihapus.1. Menghapus seluruh baris (record.).

Misalkan kita akan menghapus seluruh record pada table MahasiswaNew yang telah kita buat dengan cara duplikasi (copy) sebelumnya, maka perintahnya adalah:

DELETEFROM MahasiswaNew

2. Menghapus baris (record) tertentu.Misalkan kita akan menghapus record tertentu dimana sks nya adalah = 1, pada table

MatakuliahBaru yang telah kita buat dengan cara duplikasi (copy) sebelumnya, maka perintahnya adalah:

DELETEFROM MatakuliahBaruWhere sks=1

10.4.5. Kalimat Select

SQL menyediakan perintah select untuk mengakses dan mengeluarkan data dari database

server. Dengan sintaks sebagai berikut :

Select [All | Distinct ] Pilih_daftar_kolom [ Into [ Nama_tabel baru] ]

From Nama_tabel / Nama View[ Where Klausa ][ Group By Klausa ][ Having Klausa ][ Order By Klausa ][ Compute Klausa ]

Keterangan :Pilih_daftar_kolom : Menyatakan pilihan terhadap kolom atau atribut dari data yang dipilih.Nama_tabel : Tabel yang akan diambil datanya.

a. Perintah Select untuk Memilih Semua KolomPerintah select untuk menampilkan semua data dan kolom pada suatu table pada database.

sebagai contoh misalkan akan menampilkan data pada table Jurusan pada database NilaiMahasiswa, dapat menggunakan 2 (dua) cara:

Sistem Basis Data – [email protected] 121

Page 130: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

1. Dengan menggunakan tanda (*)

SELECT *From Jurusan

Hasil dari pernyataan query tersebut adalah:

Tabel 10.9. Select * table Jurusan

2. Dengan memilih seluruh kolom

SELECT kode_jur,nama_jur,jenjang,nama_kajurFrom Jurusan

Maka hasilnya sama seperti tampak pada table 10.9 diatas (jumlah kolom 4 (empat) dan record / barisnya adalah 5 (lima)

b. Menampilkan data dengan kolom/atribute tertentuUntuk menampilkan data pada kolom tertentu pada suatu table dalam database sintaksnya

adalah sebagai berikut:

Select nama_kolom,[nama_kolom,….]From Nama_tabel

Berikut ini adalah akan menampilkan data dalam kolom nim, nama_m, alm_m, kota_m, telpon_m dari table Mahasiswa, maka perintah SQL nya adalah:

SELECT nim, nama_m, alm_m, kota_m, telpon_m From Mahasiswa

Sistem Basis Data – [email protected] 122

Page 131: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah (5 (lima) kolom dan record / barisnya adalah 16 (enambelas), karena datanya hanya 16 (enambelas record pada table

mahasiswa tersebut:

Gambar 10.10. Query untuk menampilkan data dengan kolom tertentu

c. Mengganti Nama KolomKetika Query menampilkan hasil perintah select, nama kolom yang ditampilkan sesuai dengan

nama kolom yang dispesifikasikan dalam table. Untuk mengganti nama kolom yang dihasilkan sesuai dengan keinginan kita, sintaks perintahnya adalah :

Select nama_kolom kolom alias ,[nama_kolom kolom alias] From nama_tabel

Keterangan : Kolom alias merupakan judul kolom yang diinginkan user.

Sebagai contoh, misalkan kita akan menampilkan nim, nama_m tampilan kolomnya menjadi ‘Nama Mahasiswa’, tpt_lhr_m menjadi ‘Tempat Lahir’, tgl_lhr_m menjadi ‘Tanggal Lahir dan telpon_m menjadi ‘Telpon’, maka perintah query nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa',tpt_lhr_m 'Tempat Lahir',tgl_lhr_m 'Tanggal Lahir',telpon_m 'Telpon'

FROM Mahasiswa

Sistem Basis Data – [email protected] 123

Page 132: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah (5 (lima) kolom dan record / barisnya adalah 16 (enambelas), seperti tampak pada gambar berikut:

Gambar 10.11. Query untuk menampilkan data dengan kolom tertentu dan alias

d. Operator AritmatikaPernyatan SQL mendukung operator yang menampilkan operasi aritmatika seperti,

penjumlahan, pengurangan, pembagian, perkalian, dan modulus pada kolom dengan jenis data numeric. Jenis data numeric adalah INT, Smallint, Decimal, Numeric, Float, Real, Money, SmallMoney

dan lainnya tergantung DBMS yang digunakan.Operator yang didukung oleh pernyataan SQL adalah :

+ untuk penjumlahan

- untuk pengurangan

/ untuk pembagian

* untuk perkalian

% untuk modulus

Keterangan : semua operator aritmatika dapat digunakan dalam perintah Select .

d.1. Operator penjumlahan ( + )Tampilkan kdmk,nama_mk,sks dari table Matakuliah, dimana kolom kdmk diganti

menjadi ’Kode Matakuliah, kolom nama_mk diganti menjadi ’Matakuliah’ serta kolom sks + 2, maka perintahnya adalah:

SELECT kdmk 'Kode Matakuliah', nama_mk 'Matakuliah', sks,sks+2 'SKS + 2'

FROM Matakuliah

Sistem Basis Data – [email protected] 124

Page 133: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah (4 (lima) kolom dan record / barisnya adalah 19 (sembilan belas) karena data table matakuliah baru diisi 19 (sembilan belas) record, seperti tampak pada gambar berikut:

Gambar 10.12. Query dengan operator aritmatika penjumlahan

d.2. Operator pengurangan ( - )Tampilkan kdmk,nama_mk,sks dari table Matakuliah, dimana kolom kdmk diganti

menjadi ’Kode Matakuliah, kolom nama_mk diganti menjadi ’Matakuliah’ serta kolom sks - 2, maka perintahnya adalah:

SELECT kdmk 'Kode Matakuliah', nama_mk 'Matakuliah', sks,sks-1 'SKS-1'

FROM Matakuliah

Hasil dari pernyataan query tersebut adalah (4 (lima) kolom dan record / barisnya adalah 19 (sembilan belas) karena data table matakuliah baru diisi 19 (sembilan belas) record, seperti tampak pada gambar berikut:

Gambar 10.13. Query dengan operator aritmatika pengurangan

Sistem Basis Data – [email protected] 125

Page 134: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

d.3. Operator pembagian ( / )Tampilkan kdmk,nama_mk,sks dari table Matakuliah, kolom sks / 2, maka perintahnya

adalah:

SELECT kdmk, nama_mk,sks,sks/2 'SKS/2'FROM Matakuliah

Hasil dari pernyataan query tersebut adalah (4 (lima) kolom dan record / barisnya adalah 19 (sembilan belas) karena data table matakuliah baru diisi 19 (sembilan belas) record, seperti tampak pada gambar berikut:

Gambar 10.14. Query dengan operator aritmatika pembagian

d.4. Operator perkalian ( * )Tampilkan kdmk,nama_mk,sks dari table Matakuliah, kolom sks * 2, maka

perintahnya adalah:

SELECT kdmk, nama_mk,sks,sks * 2 'SKS * 2'FROM Matakuliah

Hasil dari pernyataan query tersebut adalah (4 (lima) kolom dan record / barisnya adalah 19 (sembilan belas) , seperti tampak pada gambar berikut:

Sistem Basis Data – [email protected] 126

Page 135: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.14. Query dengan operator aritmatika perkalian

d.5. Operator modulus ( % )Tampilkan kdmk,nama_mk,sks dari table Matakuliah, kolom sks % 2, maka

perintahnya adalah:

SELECT kdmk, nama_mk,sks,sks % 2 'SKS % 2'FROM Matakuliah

Hasil dari pernyataan query tersebut adalah (4 (lima) kolom dan record / barisnya adalah 19 (sembilan belas) , seperti tampak pada gambar berikut:

Gambar 10.15. Query dengan operator aritmatika modulus (sisa bagi)

e. Menyeleksi Baris dengan KondisiAdakalanya hanya beberapa baris saja yang perlu diretrieved dari sebuah table. Clausa

Where disediakan oleh SQL untuk menspesifikasikan kondisi tersebut. Sintaks dari pernyataan tersebut adalah:

Select Daftar_kolomFrom nama_tabelWhere kondisi

Pada metode, klausa where dapat dibagi dalam beberapa kategori seperti berikut:1. Comparison operator : seperti =,>,<,>=,<=,!=/<>

2. Range operator : seperti Between dan Not Beetween3. List operator : seperti In dan Not In4. String operator : seperti Like dan Not Like5. Logical Operator : seperti And, Or, Not.

Sistem Basis Data – [email protected] 127

Page 136: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

e.1. Operator ComparisonPada operator comparison operator ini dapat dikelompokkan menjadi operator =

(sama dengan), > (lebih besar), < (lebih kecil), >= (lebih besar sama dengan), <= (lebih kecil sama dengan), != / <> (tidak sama dengan).

1. Operator = 1.a. Untuk 1 (satu) table

Tampilkan nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas dari table Nilai, dimana nilai_uas>80, maka perintah nya adalah:

SELECT nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas

FROM NilaiWHERE nilai_uas=80

Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya adalah 1 (satu) , seperti tampak pada gambar berikut:

Gambar 10.16. Query Comparison operator = untuk 1 table

1.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_mk,sks (dari table matakuliah), nilai_uts,nilai_uas (dari table nilai),, dimana nilai_uts=78, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',nama_mk 'Matakuliah', sks,nilai_uts,nilai_uas

FROM Nilai INNER JOIN Mahasiswa ON Nilai.nim = Mahasiswa.nim INNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmk

WHERE nilai_uts=78

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 5 (lima) , seperti tampak pada gambar berikut:

Sistem Basis Data – [email protected] 128

Page 137: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.17. Query Comparison operator = untuk join table

2. Operator >2.a. Untuk 1 (satu) table

Tampilkan nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas dari table Nilai, dimana nilai_uas>88, maka perintah nya adalah:

SELECT nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas

FROM NilaiWHERE nilai_uas>88

Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya adalah 5 (lima) , seperti tampak pada gambar berikut:

Gambar 10.18. Query Comparison operator > untuk 1 table

2.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_mk,sks (dari table matakuliah), nilai_uts,nilai_uas (dari table nilai),, dimana nilai_uts>89, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',nama_mk 'Matakuliah', sks,nilai_uts,nilai_uas

FROM Nilai INNER JOIN Mahasiswa ON Nilai.nim = Mahasiswa.nim INNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmk

WHERE nilai_uts>89

Sistem Basis Data – [email protected] 129

Page 138: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 3 (tiga), seperti tampak pada gambar berikut:

Gambar 10.19. Query Comparison operator > untuk join table

3. Operator <3.a. Untuk 1 (satu) table

Tampilkan nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas dari table Nilai, dimana nilai_uas<70, maka perintah nya adalah:

SELECT nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas

FROM NilaiWHERE nilai_uas<70

Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.20. Query Comparison operator < untuk 1 table

3.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_mk,sks (dari table matakuliah), nilai_uts,nilai_uas (dari table nilai),, dimana nilai_uts<80, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',nama_mk 'Matakuliah', sks,nilai_uts,nilai_uas

FROM Nilai INNER JOIN Mahasiswa ON Nilai.nim = Mahasiswa.nim INNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmk

Sistem Basis Data – [email protected] 130

Page 139: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

WHERE nilai_uts<65

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 5 (lima), seperti tampak pada gambar berikut:

Gambar 10.21. Query Comparison operator < untuk join table

4. Operator >=4.a. Untuk 1 (satu) table

Tampilkan nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas dari table Nilai, dimana nilai_uas>90, maka perintah nya adalah:

SELECT nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas

FROM NilaiWHERE nilai_uas>=90

Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.22. Query Comparison operator >= untuk 1 table

4.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_mk,sks (dari table matakuliah), nilai_uts,nilai_uas (dari table nilai), dimana nilai_uts>=85, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',nama_mk 'Matakuliah', sks,nilai_uts,nilai_uas

FROM Nilai INNER JOIN Mahasiswa ON Nilai.nim = Mahasiswa.nim INNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmk

WHERE nilai_uts>=85

Sistem Basis Data – [email protected] 131

Page 140: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 6 (enam), seperti tampak pada gambar berikut:

Gambar 10.23. Query Comparison operator >= untuk join table

5. Operator <=5.a. Untuk 1 (satu) table

Tampilkan nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas dari table Nilai, dimana nilai_uas<=70, maka perintah nya adalah:

SELECT nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas

FROM NilaiWHERE nilai_uas<=70

Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.24. Query Comparison operator <= untuk 1 table

5.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_mk,sks (dari table matakuliah), nilai_uts,nilai_uas (dari table nilai), dimana nilai_uts>=85, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',nama_mk 'Matakuliah', sks,nilai_uts,nilai_uas

FROM Nilai INNER JOIN Mahasiswa ON Nilai.nim = Mahasiswa.nim INNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmk

WHERE nilai_uts<65

Sistem Basis Data – [email protected] 132

Page 141: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 5 (lima), seperti tampak pada gambar berikut:

Gambar 10.25. Query Comparison operator <= untuk join table

6. Operator != /<>6.a. Untuk 1 (satu) table

Tampilkan nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas dari table Nilai, dimana nilai_absen<>13 and nilai_absen !=14, maka perintah nya adalah:

SELECT nim,kdmk,nilai_absen,nilai_tugas,nilai_uts, nilai_uas

FROM NilaiWHERE nilai_absen<>13 and nilai_absen!=14

Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya adalah 8 (delapan) , seperti tampak pada gambar berikut:

Gambar 10.24. Query Comparison operator <> untuk 1 table

6.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_mk,sks (dari table matakuliah), nilai_uts,nilai_uas (dari table nilai), dimana nilai_uts>=85, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',nama_mk 'Matakuliah', sks,nilai_absen,nilai_uts,nilai_uas

FROM Nilai INNER JOIN Mahasiswa ON Nilai.nim = Mahasiswa.nim INNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmk

WHERE nilai_absen<>13 and nilai_absen!=14 and nilai_absen<>12

Sistem Basis Data – [email protected] 133

Page 142: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 5 (lima), seperti tampak pada gambar berikut:

Gambar 10.25. Query Comparison operator <> untuk join tablee.2. Range Operator

Operator Range digunakan untuk meretrieved data yang dapat diperoleh dalam range tersebut, operator tersebut meliputi Between dan Not Between.

Sintaks untuk operator range tersebut adalah:

Select Daftar_kolomFrom nama_tabelWhere nama_kolom [not] Between expresi1 and expresi 2

1. Operator Between1.a. Untuk 1 (satu) table

Tampilkan nim,nama_m,tgl_lhr_m untuk kolom nama_m diganti ’Nama Mahasiswa’, kolom tgl_lhr_m diganti ’Tanggal Lahir’ dimana mahasiswa yang tanggal lahirnya antara ’11/17/1977’ sampai ’10/19/1980, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa',tgl_lhr_m 'Tanggal Lahir'

FROM MahasiswaWhere tgl_lhr_m BETWEEN '11/17/1977' and '10/19/1980'

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 9 (sembilan) , seperti tampak pada gambar berikut:

Gambar 10.26. Query Range operator Between untuk 1 table

Sistem Basis Data – [email protected] 134

Page 143: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

1.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_mk,sks (dari table matakuliah), nilai_uts,nilai_uas (dari table nilai), dimana nilai_uts nya antara 79 sampai 90, maka perintah nya adalah:

SELECT nama_m,nama_mk,sks,nilai_uts,nilai_uasFROM Nilai INNER JOIN Mahasiswa ON Nilai.nim =

Mahasiswa.nim INNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmk

WHERE nilai_uts BETWEEN 79 and 90

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 5 (lima) , seperti tampak pada gambar berikut:

Gambar 10.27. Query Range operator Between untuk join table

2. Operator Not Between2.a. Untuk 1 (satu) table

Tampilkan kdmk,nama_mk,sks dari table matakuliah, untuk kolom kdmk diganti menjadi ’Kode Matakuliah’ kolom nama_mk diganti ’Matakuliah’. Dimana matakuliah yang sks nya bukan antara 1 dan 2, maka perintah nya adalah:

SELECT kdmk 'Kode Matakuliah',nama_mk 'Matakuliah',sksFROM MatakuliahWHERE sks Not BETWEEN 1 and 2

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 3 (tiga) , seperti tampak pada gambar berikut:

Gambar 10.28. Query Range operator Not Between untuk 1 table

Sistem Basis Data – [email protected] 135

Page 144: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

1.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_mk (dari table matakuliah), nilai_uas (dari table nilai), dimana kolom nama_m diganti menjadi ’Nama Mahasiswa’, kolom nama_mk diganti ’Matakuliah’ dan nilai_uas nya bukan antara 70 sampai 90, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',nama_mk 'Matakuliah', sks,nilai_uas

FROM Nilai INNER JOIN Mahasiswa ON Nilai.nim =Mahasiswa.nim

INNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmkWHERE nilai_uas NOT BETWEEN 70 and 90

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.29. Query Range operator Not Between untuk join table

e.3. List Operator Operator List digunakan untuk menampilkan data yang dapat diperoleh dalam daftar

(batasan) tertentu, operator tersebut meliputi In dan Not In.Sintaks untuk operator list tersebut adalah:

Select Daftar_kolomFrom nama_tabelWhere nama_kolom operator List (‘Daftar_value’)

1. Operator In1.a. Untuk 1 (satu) table

Tampilkan nim,nama_m,tpt_lhr_m,telpon_m untuk kolom nama_m diganti ’Nama Mahasiswa’, kolom tpt_lhr_m diganti ’Tempat Lahir’, kolom telpon_m diganti ’Telepon’. Dimana mahasiswa yang tempat lahirnya di Bogor, Surabaya dan Solo, maka perintah nya adalah:

Sistem Basis Data – [email protected] 136

Page 145: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

SELECT nim,nama_m 'Nama Mahasiswa',tpt_lhr_m 'Tempat Lahir',telpon_m 'Telepon'FROM MahasiswaWHERE tpt_lhr_m IN ('Bogor','Surabaya','Solo')

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.30. Query List operator In untuk 1 table

1.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_jur,jenjang (dari table jurusan), dimana kolom nama_m diganti ’Nama Mahasiswa’, kolom nama_jur diganti ’Jurusan’, untuk mahasiswa yang nama_jur nya adalah ’Sistem Informasi’ dan ’Teknik Informatika’, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',nama_jur 'Jurusan', jenjangFROM Mahasiswa INNER JOIN Jurusan ON Mahasiswa.

kode_jur=Jurusan.kode_jurWHERE nama_jur IN ('Sistem Informasi',

'Teknik Informatika')

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 8 (delapan) , seperti tampak pada gambar berikut:

Gambar 10.31. Query Range operator In untuk join table

Sistem Basis Data – [email protected] 137

Page 146: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

2. Operator In2.a. Untuk 1 (satu) table

Tampilkan nim,nama_m,tpt_lhr_m,telpon_m untuk kolom nama_m diganti ’Nama Mahasiswa’, kolom tpt_lhr_m diganti ’Tempat Lahir’, kolom telpon_m diganti ’Telepon’. Dimana mahasiswa yang tempat lahirnya Bukan di Bekasi, Bogor dan Jakarta, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa',tpt_lhr_m 'Tempat Lahir', telpon_m 'Telepon'

FROM MahasiswaWHERE tpt_lhr_m NOT IN ('Bekasi','Bogor','Jakarta')

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 6 (enam) , seperti tampak pada gambar berikut:

Gambar 10.32. Query List operator Not In untuk 1 table

2.b. Untuk join table

Tampilkan nama_m (dari table mahasiswa), nama_jur (dari table jurusan), dimana kolom nama_m diganti ’Nama Mahasiswa’, kolom nama_jur diganti ’Jurusan’, untuk mahasiswa yang nama_jur nya adalah bukan ’Sistem Informasi’, ’Teknik Informatika’ dan ’Manajemen Informatika’, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',nama_jur 'Jurusan'FROM Mahasiswa INNER JOIN Jurusan ON

Mahasiswa.kode_jur=Jurusan.kode_jurWHERE nama_jur NOT IN ('Sistem Informasi', 'Teknik Informatika','Manajemen Informatika')

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 6 (enam) , seperti tampak pada gambar berikut:

Sistem Basis Data – [email protected] 138

Page 147: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.33. Query Range operator Not In untuk join tablee.4. String Operator

Key Word Like digunakan untuk memilih baris-baris yang sesuai dengan karakter yang digunakan. Like menggunakan karakter Wildcard yang bisa digunakan sebagai expresi.

% Wildcard Deskripsi%

_ Garis Bawah[ ]

[ ^ ]

String KarakterKarakter TunggalKarakter tunggal dalam range tertentuKarakter tunggal yang tidak dalam range tertentu

1. Wildcard %1.a. Untuk 1 (satu) table

a. Tampilkan nim,nama_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, dimana nama mahasiswanya untuk 2 huruf pertama adalah ’De’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa'FROM MahasiswaWHERE nama_m LIKE 'De%'

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 2(dua) , seperti tampak pada gambar berikut:

Gambar 10.34. Query String operator Wildcard % untuk 1 table (a)

Sistem Basis Data – [email protected] 139

Page 148: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

b. Tampilkan nim,nama_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, dimana nama mahasiswanya untuk 2 huruf terakhirnya adalah ’An’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa'FROM MahasiswaWHERE nama_m LIKE '%An'

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 2(dua) , seperti tampak pada gambar berikut:

Gambar 10.35. Query String operator Wildcard % untuk 1 table (b)

c. Tampilkan nim,nama_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, dimana nama mahasiswanya mengandung huruf ’An’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa'FROM MahasiswaWHERE nama_m LIKE '%An%'

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 6 (enam) , seperti tampak pada gambar berikut:

Gambar 10.36. Query String operator Wildcard % untuk 1 table (c)

2. Wildcard _2.a. Untuk 1 (satu) table

Sistem Basis Data – [email protected] 140

Page 149: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

a. Tampilkan nim,nama_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, dimana nama mahasiswanya setelah 3 huruf pertama mengandung huruf ’a’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa'FROM MahasiswaWHERE nama_m LIKE '___a%'

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 2(dua) , seperti tampak pada gambar berikut:

Gambar 10.37. Query String operator Wildcard _ untuk 1 table (a)

b. Tampilkan nim,nama_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, dimana nama mahasiswanya sebelum 2 huruf terakhir mengandung huruf ’i’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa'FROM MahasiswaWHERE nama_m LIKE '%i__'

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 2(dua) , seperti tampak pada gambar berikut:

Gambar 10.35. Query String operator Wildcard _ untuk 1 table (b)

3. Wildcard []3.a. Untuk 1 (satu) table

Sistem Basis Data – [email protected] 141

Page 150: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

a. Tampilkan nim,nama_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, dimana nama mahasiswanya pada huruf pertama mengandung huruf ’a’ atau ’d’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa'FROM MahasiswaWHERE nama_m LIKE '[ad]%'

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 5(lima) , seperti tampak pada gambar berikut:

Gambar 10.37. Query String operator Wildcard [] untuk 1 table (a)

b. Tampilkan nim,nama_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, dimana nama mahasiswanya 1 huruf terakhir mengandung huruf ’i’, ’k’ atau ’a’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa'FROM MahasiswaWHERE nama_m LIKE '%[ika]'

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 9 (sembilan) , seperti tampak pada gambar berikut:

Sistem Basis Data – [email protected] 142

Page 151: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.35. Query String operator Wildcard [] untuk 1 table (b)

4. Wildcard ^4.a. Untuk 1 (satu) table

a. Tampilkan nim,nama_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, dimana nama mahasiswanya pada huruf pertama bukan mengandung huruf ’d’, ’f’, ’c’, ’a’ dan ’y’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa'FROM MahasiswaWHERE nama_m LIKE '[^dfcay]%'

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 6 (enam) , seperti tampak pada gambar berikut:

Gambar 10.37. Query String operator Wildcard ^ untuk 1 table (a)

b. Tampilkan nim,nama_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, dimana nama mahasiswanya 1 huruf terakhir tidak mengandung huruf ’i’, ’n’, ’a’ atau ’k’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa'FROM MahasiswaWHERE nama_m LIKE '%[^inak]'

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.35. Query String operator Wildcard ^ untuk 1 table (b)

Sistem Basis Data – [email protected] 143

Page 152: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

e.5. Logical OperatorOperator Logika yang umum disediakan didalam SQL adalah sebagai berikut:

OR Memberikan nilai True bila kondisi yang dispesifikasikan TrueNOT Membalikkan nilai expresi yang mengikutinyaAND Memberikan hasil True bila semua kondisi yang dispesifikasikan True.

Sintaks untuk operator logika terebut adalah:

Select daftar_kolomFrom nama_tabelWhere conditional expresi {AND/OR} [Not] conditional expresi

1. Operator OROpertor ini digunakan untuk menguji apakah salah satu kedua ekspresi logika yang

diberikan memiliki nilai TRUE, dengan aturan penulisan:

Ekspriesi1 OR Ekspresi2

Operator OR pada SQL akan menghasilkan nilai sesuai dengan table berikut:

Ekspresi1 Ekspresi2 HasilTrue True TrueTrue False TrueTrue Null TrueFalse True TrueFalse False FalseFalse Null FalseNull True TrueNull False FalseNull Null Null

1.a. Untuk 1 (satu) table

Tampilkan nim,nama_m,tpt_lhr_m,alm_m,kota_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, kolom tpt_lhr_m diganti ’Tempat Lahir’, kolom alm_m diganti ’Alamat’ dan kolom kota_m diganti ’Kota’. Dimana mahasiswa yang tempat lahirnya di ’Bekasi’ atau kota alamatnya adalah ’Cikarang’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa',tpt_lhr_m 'Tempat Lahir', alm_m 'Alamat',kota_m 'Kota'

Sistem Basis Data – [email protected] 144

Page 153: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

FROM MahasiswaWHERE tpt_lhr_m='Bekasi' OR kota_m='Cikarang'

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 6 (enam) , seperti tampak pada gambar berikut:

Gambar 10.36. Query Logical operator OR untuk 1 table

1.b. Untuk join table

Tampilkan nama_m,j_kelamin (dari table mahasiswa), nama_jur,jenjang (dari table jurusan), dimana kolom nama_m diganti ’Nama Mahasiswa’, kolom j_kelamin diganti ’Jenis Kelamin, kolom nama_jur diganti ’Jurusan’, untuk mahasiswa yang j_kelamin nya ’Wanita’ atau nama_jur = ’Teknik Informatika’, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',j_kelamin 'Jenis Kelamin',nama_jur 'Jurusan',jenjangFROM Mahasiswa INNER JOIN Jurusan ON Mahasiswa.kode_jur=Jurusan.kode_jurWHERE j_kelamin='Wanita' OR nama_jur='Teknik Informatika'

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 11 (sebelas) , seperti tampak pada gambar berikut:

Gambar 10.37. Query Logical operator OR untuk join table

Sistem Basis Data – [email protected] 145

Page 154: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

2. Operator NOTOpertor ini digunakan untuk mendapatkan nilai kebalikan dari suatu logika atau

ekspresi. Dengan demikian akan dihasilkan nilai TRUE hanya jika nilai ekspresi bernilai FALSE, serta nilai akan menghasilkan NULL jika ekspresi memiliki nilai NULL, dengan aturan penulisan:

NOT Ekspresi

Operator NOT pada SQL akan menghasilkan nilai sesuai dengan table berikut:

Ekspresi HasilTrue FalseFalse TrueNull Null

2.a. Untuk 1 (satu) table

Tampilkan nim,nama_m,tpt_lhr_m,alm_m,kota_m, untuk kolom nama_m diganti ’Nama Mahasiswa’, kolom tpt_lhr_m diganti ’Tempat Lahir’, kolom alm_m diganti ’Alamat’ dan kolom kota_m diganti ’Kota’. Dimana mahasiswa yang tempat lahirnya bukan di ’Bekasi’ ,’Cikarang,’Jakarta’ dan ’Bogor’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa',tpt_lhr_m 'Tempat Lahir',alm_m 'Alamat',kota_m 'Kota'

FROM MahasiswaWHERE tpt_lhr_m NOT in ('Bekasi','Cikarang',

'Jakarta','Bogor')

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 6 (enam) , seperti tampak pada gambar berikut:

Gambar 10.38. Query Logical operator NOT untuk 1 table

1.b. Untuk join tableSistem Basis Data – [email protected] 146

Page 155: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Tampilkan nama_m (dari table mahasiswa), nama_jur,jenjang (dari table jurusan), dimana kolom nama_m diganti ’Nama Mahasiswa’, kolom nama_jur diganti ’Jurusan’, untuk mahasiswa yang nama_jurusannya bukan ’Teknik Informatika’ dan ’Teknik Komputer’, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa', nama_jur 'Jurusan',jenjangFROM Mahasiswa INNER JOIN Jurusan ON Mahasiswa.kode_jur=Jurusan.kode_jurWHERE nama_jur NOT in('Teknik Informatika','Teknik Komputer')

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 6 (enam) , seperti tampak pada gambar berikut:

Gambar 10.39. Query Logical operator NOT untuk join table

3. Operator ANDOpertor ini digunakan untuk menguji beberapa ekspresi logika yang diberikan

memiliki nilai TRUE, dengan aturan penulisan:

Ekspriesi1 AND Ekspresi2

Operator AND pada SQL akan menghasilkan nilai sesuai dengan table berikut:

Ekspresi1 Ekspresi2 HasilTrue True TrueTrue False FalseFalse True FalseFalse False FalseNull True/False/Null NullTrue/False/Null Null Null

Sistem Basis Data – [email protected] 147

Page 156: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

3.a. Untuk 1 (satu) table

Tampilkan nim,nama_m,tpt_lhr_m,j_kelamin untuk kolom nama_m diganti ’Nama Mahasiswa’, kolom tpt_lhr_m diganti ’Tempat Lahir’ dan kolom j_kelamin diganti ’Jenis Kelamin’. Dimana mahasiswa yang tempat lahirnya di ’Bekasi’ dan jenis kelaminnya aalah ’Wanita’, maka perintah nya adalah:

SELECT nim,nama_m 'Nama Mahasiswa',tpt_lhr_m 'Tempat Lahir',j_kelamin 'Jenis Kelamin'

FROM MahasiswaWHERE tpt_lhr_m='Bekasi' AND j_kelamin='Wanita'

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.40. Query Logical operator AND untuk 1 table

3.b. Untuk join table

Tampilkan nama_m,j_kelamin (dari table mahasiswa), nama_jur,jenjang (dari table jurusan), dimana kolom nama_m diganti ’Nama Mahasiswa’, kolom j_kelamin diganti ’Jenis Kelamin’, kolom nama_jur diganti ’Jurusan’, untuk mahasiswa yang jenis kelaminnya ’Wanita’ dan nama_jurusannya ’Teknik Informatika’ dan ’Teknik Komputer’, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',j_kelamin 'Jenis Kelamin',nama_jur 'Jurusan',jenjangFROM Mahasiswa INNER JOIN Jurusan ON Mahasiswa.kode_jur=Jurusan.kode_jurWHERE j_kelamin='Wanita' AND nama_jur IN('Teknik Informatika','Teknik Komputer')

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 6 (enam) , seperti tampak pada gambar berikut:

Sistem Basis Data – [email protected] 148

Page 157: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.41. Query Logical operator AND untuk join table

f. Menguji Nilai NullUnknown Values atau lebih dikenal dengan Null, akan diberikan apabila tidak ada input data.

Nilai Null dapat ditampilkan dari tabel dengan menggunakan kunci Is Null dalam Klausa Where.Sintaks untuk ekspresi ini adalah sebagai berikut:

Select Daftar_kolomFrom nama_tabelWhere nama_kolom . operator_Unknown_Values

f.1. Untuk 1 (satu) table

Tampilkan seluruh kolom pada table Mahasiswa, dimana untuk kolom telepon berisi data NULL., maka perintah nya adalah:

SELECT *FROM MahasiswaWHERE telpon_m IS NULL

Hasil dari pernyataan query tersebut adalah 10 (sepuluh) kolom dan record / barisnya adalah 0 (nol) karena tidak ada kolom telpon_m berisi NULL, seperti tampak pada gambar berikut:

Gambar 10.42. Query Logical operator NULL untuk 1 table

Sistem Basis Data – [email protected] 149

Page 158: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

f.2. Untuk join table

Tampilkan nama_m,j_kelamin (dari table mahasiswa), nama_jur,jenjang (dari table jurusan), dimana kolom nama_m diganti ’Nama Mahasiswa’, kolom j_kelamin diganti ’Jenis Kelamin’, kolom nama_jur diganti ’Jurusan’. Dimana pada kolom jenjang berisi NULL, maka perintah nya adalah:

SELECT nama_m 'Nama Mahasiswa',j_kelamin 'Jenis Kelamin',nama_jur 'Jurusan',jenjangFROM Mahasiswa INNER JOIN Jurusan ON Mahasiswa.kode_jur=Jurusan.kode_jurWHERE jenjang IS NULL

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 0 (nol) karena tidak ada kolom jenjang yang nilainya NULL, seperti tampak pada gambar berikut:

Gambar 10.43. Query Logical operator NULL untuk join table

g. Fungsi AgregateTerdapat beberapa fngsi agregate atau fungsi untuk melakukan suatu operasi terhadap

himpunan data yang dapat digunakan dalam perintah query. Hasil dari penggunaan fungsi ini merupakan nilai perolehan yang dapat diolah lebih lanjut. Fungsi Agregate yang tersedia sebagai berikut :

Fungsi PenjelasanSUM Menjumlahkan NilaiMIN Mencari nilai minimumMAX Mencari Nilai MaximumAVG Mencari Nilai Rata rataCOUNT Menghitung jumlah data

Fungsi AVG, SUM, MIN, MAX dan COUNT meng Ignore nilai Null sedangkan fungsi COUNT() menghitung nilai Null.

1. Fungsi SUM

Sistem Basis Data – [email protected] 150

Page 159: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Fungsi ini mempunyai bentuk SUM(X), digunakan untuk menghasilkan nilai penjumlahan dari suatu data bilangan, dimana X adalah nilai numerik atau nama field yang memiliki nilai numerik atau rumus yang menghasilkan nilai numerik.

1.a. Untuk 1 (satu) table

Tampilkan kolom ’Total SKS Semester 1’ dari table Matakuliah dan hitung jumlah sks nya pada semester 1, maka perintah nya adalah:

SELECT SUM(sks) 'Total SKS Semester 1'From MatakuliahWhere semester=1

Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya adalah 1 (satu) , seperti tampak pada gambar berikut:

Gambar 10.44. Query Fungsi SUM untuk 1 table2. Fungsi MIN

Fungsi ini mempunyai bentuk MIN(X), digunakan untuk menghasilkan nilai terkecil dari suatu data bilangan, dimana X adalah nilai numerik atau nama field yang memiliki nilai numerik atau rumus yang menghasilkan nilai numerik.

2.a. Untuk 1 (satu) table

Tampilkan kolom ’SKS Terkecil Semester 2’ dari table Matakuliah pada semester 2, maka perintah nya adalah:

SELECT MIN(sks) 'SKS Terkecil Semester 2'From MatakuliahWhere semester=2

Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya adalah 1 (satu), seperti tampak pada gambar berikut:

Gambar 10.45. Query Fungsi MIN untuk 1 table

Sistem Basis Data – [email protected] 151

Page 160: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

3. Fungsi MAXFungsi ini mempunyai bentuk MAX(X), digunakan untuk menghasilkan nilai terbesar

dari suatu data bilangan, dimana X adalah nilai numerik atau nama field yang memiliki nilai numerik atau rumus yang menghasilkan nilai numerik.

3.a. Untuk 1 (satu) table

Tampilkan kolom ’SKS Terbesar Semester 1’ dari table Matakuliah pada semester 1, maka perintah nya adalah:

SELECT MAX(sks) 'SKS Terbesar Semester 1'From MatakuliahWhere semester=1

Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya adalah 1 (satu), seperti tampak pada gambar berikut:

Gambar 10.46. Query Fungsi MAX untuk 1 table

4. Fungsi AVGFungsi ini mempunyai bentuk AVG(X), digunakan untuk menghasilkan nilai rata - rata

dari suatu data bilangan, dimana X adalah nilai numerik atau nama field yang memiliki nilai numerik atau rumus yang menghasilkan nilai numerik. Nilai perhitungan AVG adalah nilai seluruh data dibagi dengan jumlah data, apabila terdapat nilai NULL pada satu atau lebih data, nilai NULL tersebut tidak digunakan dalam perhitungan dan jumlah data tidak ditambahkan.

4.a. Untuk 1 (satu) table

Tampilkan kolom ’SKS Rata – rata Semester 2’ dari table Matakuliah pada semester 2, maka perintah nya adalah:

SELECT AVG(sks) 'SKS Rata - rata Semester 2'From MatakuliahWhere semester=2

Sistem Basis Data – [email protected] 152

Page 161: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya adalah 1 (satu), seperti tampak pada gambar berikut:

Gambar 10.47. Query Fungsi AVG untuk 1 table

5. Fungsi COUNTFungsi ini mempunyai bentuk COUNT(field), digunakan untuk menghitung banyaknya

data dalam suatu table dari hasil query. Dengan fungsi ini dapat dihitung jumlah data yang diperoleh atas dasar field tertentu atau seluruh field pada query. Dengan menyertakan nama field, nilai NULL pada field yang disebutkan tidak akan dimasukkan dalam kalkulasi.

5.a. Untuk 1 (satu) table

Tampilkan kolom ’Jumlah Seluruh Mahasiswa’ dari table Mahasiswa, maka perintah nya adalah:

SELECT ’Jumlah Seluruh Mahasiswa'=count(nim)From Mahasiswa

Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya adalah 1 (satu), seperti tampak pada gambar berikut:

Gambar 10.48. Query Fungsi COUNT untuk 1 table (a)

5.b. Untuk 1 (satu) table

Tampilkan kolom ’Jumlah Seluruh Mahasiswa Wanita’ dari table Mahasiswa dimana j_kelamin nya ’Wanita’, maka perintah nya adalah:

Sistem Basis Data – [email protected] 153

Page 162: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

SELECT ’Jumlah Seluruh Mahasiswa Wanita'=count(nim)From MahasiswaWhere j_kelamin=’Wanita’

Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya adalah 1 (satu), seperti tampak pada gambar berikut:

Gambar 10.49. Query Fungsi COUNT untuk 1 table (b)

h. Fungsi Tanggal dan WaktuFungsi tanggal merupakan fungsi yang diperuntukkan bagi data, variable atau field yang

berkaitan dengan data tanggal. Demikian pula untuk fungsi waktu yaitu fungsi yang diperuntukkan bagi data, variable atau field yang berkaitan dengan data waktu. Fungsi tanggal dan waktu dapat pula diterapkan untuk data dari tanggal sistem komputer yang sedang aktif.

Beberapa fungsi tanggal antara lain :

Fungsi Sintaks KeteranganDATEADD ( Datepart, number, Date ) Menambah datepart ke tanggal sesuai

dengan besar numberDATEDIFF ( Datepart, date, date2) Mengkalkulasi angka datepart antara

dua tanggal DATEPART ( Datepart, date ) Mengembalikan datepart dari daftar

tanggal sebagai integerDATENAME ( Datepart, date ) Mengembalikan datepart dari daftar

tanggal sebagai nilai Asci (contoh October)

GetDate ( ) Tanggal dan Waktu sekarang

Komponen tanggal yang disebut Datepart digunakan untuk menentukan elemen nilai tanggal untuk Aritmatika tanggal. Datepart dapat berupa :

Datepart Singkatan Nilai KeteanganYear Tahun YY 1753-9999 8246 ThnQuarter Kwartel QQ 1-4 4 Kwartal 1thnMonth Bulan MM 1-12 12 bln setahunDay Of Year Hari ke DY 1-366 366 hari setahun

Sistem Basis Data – [email protected] 154

Page 163: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Day Tanggal DD 1-31 31 hari sebulanWeek Minggu WW 0-51 52 mingg se thn

Weekday Hari DW1-7 (1=Sunday)

7 hari semingguHour Jam HH 0-23 24 jam sehariMinute Menit MI (0-59) 60 mnt sejamSecond Detik SS (0-59) 60 detik semenitMilisecond Milidetik MS (0-999) 1000 mili sedetik

1. Fungsi DateAddFungsi ini mempunyai bentuk DateAdd(DatePart,Number,Date), merupakan fungsi

yang menambah datepart ke tanggal sesuai dengan besar number yang diberikan (DD,MM,YY).

1.a. DDTampilkan kolom nama_m,tgl_lhr_m, dan kolom ’30 Hari Setelah Tanggal Lahir’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Bogor’, maka perintah nya adalah:

SELECT nama_m, tgl_lhr_m,"30 Hari Setelah Tanggal Lahir"=DATEADD(dd,30,tgl_lhr_m)FROM MahasiswaWhere tpt_lhr_m=’Bogor’

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 2 (dua) , seperti tampak pada gambar berikut:

Gambar 10.50. Query Fungsi DadeAdd DD 1.b. MMTampilkan kolom nama_m,tgl_lhr_m, dan kolom ’5 Bulan Setelah Tanggal Lahir’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Jakarta’, maka perintah nya adalah:

Sistem Basis Data – [email protected] 155

Page 164: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

SELECT nama_m, tgl_lhr_m,"5 Bulan Setelah Tanggal Lahir"=DATEADD(mm,5,tgl_lhr_m)FROM MahasiswaWhere tpt_lhr_m='Jakarta'

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.51. Query Fungsi DadeAdd MM

1.c. YYTampilkan kolom nama_m,tgl_lhr_m, dan kolom ’5 Tahun Setelah Tanggal Lahir’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Jakarta’ dan ’Bekasi’, maka perintah nya adalah:

SELECT nama_m, tgl_lhr_m,"5 Tahun Setelah Tanggal Lahir"=DATEADD(yy,5,tgl_lhr_m)FROM MahasiswaWhere tpt_lhr_m in ('Jakarta',’Bekasi’)

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 8 (delapan) , seperti tampak pada gambar berikut:

Gambar 10.52. Query Fungsi DadeAdd YY

Sistem Basis Data – [email protected] 156

Page 165: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

2. Fungsi DateIIFFungsi ini mempunyai bentuk DateDIFF(DatePart,Date,Date2), merupakan fungsi

yang melakukan kalkulasi angka datepart antara dua tanggal yang diberikaan (DD,MM,YY).

2.a. DDTampilkan kolom nama_m,tgl_lhr_m, ’Tanggal dan Waktu Sekarang’, ’Jumlah Hari’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Jakarta’, maka perintah nya adalah:

SELECT nama_m, tgl_lhr_m,getdate() 'Tanggal dan Waktu Sekarang',"Jumlah Hari"=DATEDIFF (dd,tgl_lhr_m,getdate())FROM MahasiswaWhere tpt_lhr_m='Jakarta'

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.53. Query Fungsi DadeDIIF DD

2.b. MMTampilkan kolom nama_m,tgl_lhr_m, ’Tanggal dan Waktu Sekarang’, ’Jumlah Bulan’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Jakarta’, maka perintah nya adalah:

SELECT nama_m, tgl_lhr_m,getdate() 'Tanggal dan Waktu Sekarang',"Jumlah Bulan"=DATEDIFF (mm,tgl_lhr_m,getdate())FROM MahasiswaWhere tpt_lhr_m='Jakarta'

Sistem Basis Data – [email protected] 157

Page 166: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.54. Query Fungsi DadeDIFF MM

2.c. YYTampilkan kolom nama_m,tgl_lhr_m, ’Tanggal dan Waktu Sekarang’, ’Jumlah Tahun’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Jakarta’, maka perintah nya adalah:

SELECT nama_m, tgl_lhr_m,getdate() 'Tanggal dan Waktu Sekarang',"Jumlah Tahun"=DATEDIFF (yy,tgl_lhr_m,getdate())FROM MahasiswaWhere tpt_lhr_m='Jakarta'

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.55. Query Fungsi DadeDIFF YY

3. Fungsi DatePartFungsi ini mempunyai bentuk DatePart(DatePart,Date), merupakan fungsi yang

mengembalikan datepart dari daftar tanggal sebagai integer sesuai tanggal yang diberikaan (DD,MM,YY).

3.a. DDTampilkan kolom nama_m,tgl_lhr_m, ’Tanggal Lahir’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Bogor’, maka perintah nya adalah:

Sistem Basis Data – [email protected] 158

Page 167: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

SELECT nama_m, tgl_lhr_m,"Tanggal Lahir"=DATEPART(dd,tgl_lhr_m)FROM MahasiswaWhere tpt_lhr_m='Bogor'

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 2 (dua) , seperti tampak pada gambar berikut:

Gambar 10.56. Query Fungsi DatePart DD3.b. MMTampilkan kolom nama_m,tgl_lhr_m, ’Bulan Lahir’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Bogor’, maka perintah nya adalah:

SELECT nama_m, tgl_lhr_m,"Bulan Lahir"=DATEPART(mm,tgl_lhr_m)FROM MahasiswaWhere tpt_lhr_m='Bogor'

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 2 (dua) , seperti tampak pada gambar berikut:

Gambar 10.57. Query Fungsi DadePart MM

3.c. YYTampilkan kolom nama_m,tgl_lhr_m, ’Tahun Lahir’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Bogor’, maka perintah nya adalah:

Sistem Basis Data – [email protected] 159

Page 168: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

SELECT nama_m, tgl_lhr_m,"Tahun Lahir"=DATEPART(yy,tgl_lhr_m)FROM MahasiswaWhere tpt_lhr_m='Bogor'

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 2 (dua) , seperti tampak pada gambar berikut:

Gambar 10.58. Query Fungsi DadePart YY

4. Fungsi DateNameFungsi ini mempunyai bentuk DateName(DatePart,Date), merupakan fungsi yang

mengembalikan datepart dari daftar tanggal sebagai nilai ASCII (misal October), funsi ini hanya bergungsi untuk bulan (MM).

Tampilkan kolom nama_m,tgl_lhr_m, ’Nama Bulan Lahir’ dari table Mahasiswa dimana mahasiswa yang tempat lahirnya ’Jakartar’, maka perintah nya adalah:

SELECT nama_m, tgl_lhr_m,"Nama Bulan Lahir"=DATENAME(mm,tgl_lhr_m)FROM MahasiswaWhere tpt_lhr_m='Jakarta'

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 4 (empat) , seperti tampak pada gambar berikut:

Gambar 10.59. Query Fungsi DateName

5. Fungsi GetDateFungsi ini mempunyai bentuk GetDate(), merupakan fungsi yang digunakan untuk

mengetahui tanggal dan waktu sekarang.

Sistem Basis Data – [email protected] 160

Page 169: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Tampilkan kolom ’Tanggal Hari Ini’ dan ’15 Hari Dari Sekarang’, maka perintah nya adalah:

SELECT "Tanggal Hari Ini"=GetDate(),"15 Hari Dari Sekarang"=Getdate()+5

Hasil dari pernyataan query tersebut adalah 2 (kolom) kolom dan record / barisnya adalah 1 (satu) , seperti tampak pada gambar berikut:

Gambar 10.60. Query Fungsi GateDate

i. DistinctKey Word Distinct menghilangkan duplikasi pada baris baris sebagai Default, Query

menampilkan semua baris termasuk duplikasinya. Baris-baris yang memiliki duplikasi dapat dieleminasi dengan menggunakan key word Distinct dalam pernyataan Select .

Sintaks dalam pernyataan ini adalah:

Select [ All | Distinct ] nama_kolomFrom nama_tabelWhere Kondisi

i.1. Untuk 1 (satu) table

Tampilkan kolom kota_m dari table Mahasiswa, dimana kolom kota_m diganti menjadi ’Kota Alamat Mahasiswa’ dengan Distinct, maka perintah nya adalah:

SELECT Distinct kota_m 'Kota Alamat Mahasiswa'FROM Mahasiswa

Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya adalah 9 (sembilan), seperti tampak pada gambar berikut:

Sistem Basis Data – [email protected] 161

Page 170: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.62. Query operator Distinct untuk 1 table

j. TopPredikat ini digunakan untuk mengambil sejumlah record yang berada pada jangkauan atas

atau bawah dari seluruh data yang diperoleh. Argumen numerik yang diberikan pada predikat Top defaulnya dalam bentuk jumlah record pada jangkauan atas yang ditampilkan. Sedang untuk mengambul n percent dari selumlah record yang didapat, gunakan argumen Percent.

j.1. Untuk 1 (satu) table

Tampilkan kolom nim,nama_m,telpon_m dari table Mahasiswa, dimana kolom kota_m diganti menjadi ’Kota Alamat Mahasiswa’ dengan data yang ditampilkan 7 record pertama, maka perintah nya adalah:

SELECT TOP 7 nim,nama_m 'Nama Mahasiswa',telpon_mFROM Mahasiswa

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 7 (tujuh), seperti tampak pada gambar berikut:

Gambar 10.63. Query operator Top untuk 1 table

Sistem Basis Data – [email protected] 162

Page 171: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Bila anda ingin mengambil data dalam bentuk prosentasi dari seluruh data yang akan ditampilkan, gunakan argumen Percent setelah argumen numerik.

j.2. Percent untuk 1 (satu) table

Tampilkan kolom nim,nama_m,telpon_m dari table Mahasiswa, dimana kolom kota_m diganti menjadi ’Kota Alamat Mahasiswa’ dengan data yang ditampilkan 25 % dari seluruh data yang ada, maka perintah nya adalah:

SELECT TOP 25 PERCENT nim,nama_m 'Nama Mahasiswa', telpon_m

FROM Mahasiswa

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 4 (empat), seperti tampak pada gambar berikut:

Gambar 10.64. Query operator Top Percent untuk 1 tablek. Operator Join

SQL memiliki metode untuk mengambil data dari suatu tabel dengan menggunakan Join. Join dipakai untuk mencari data dari beberapa tabel berdasarkan hubungan yang logis dari tabel-tabel tersebut. Join menyatakan cara SQL memakai data dari sebuah tabel untuk memilih data dari tabel lain. Sintaks untuk melakukan operasi join ini adalah:

Select nama_kolom,nama_kolom,[nama_kolom] From nama_tabel, [ Cross / Inner / [ Left / Right ] Outer ]

Join nama_tabel On nama_tabel.Ref_nama_kolom OperatorJoin Nama_tabel.Ref_nama_kolom.

Keterangan :Nama_kolom : menspesidikasikan nama kolom dari satu atau beberapa tabel yang

ditampilkan.

Sistem Basis Data – [email protected] 163

Page 172: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Nama_tabel : adalah nama tabel dari tabel yang diambil Ref.nama_kolom : adalah nama_kolom yang digunakan menggabungkan dua tabel dengan

menggunakan kunci yang umum. Operator Join menspesifikasikan operator yang digunakan untuk menggabungkan tabel.

Join dapat dikelompokkan menjadi Inner Join danOuter Join.

k.1. Inner JoinInner Join adalah sebuah Join yang menghasilkan baris-baris, minimal ada sebuah baris di

kedua tabel yang sesuai dengan kondisi Join. Baris-baris yang tidak sesuai dengan sebuah baris dari tabel lain tidak ditampilkan, defaultnya adalah Inner Join.

a. 3 (tiga) tableTampilkan nama_m (dari table mahasiswa),nama_mk,semester (dari table

Matakuliah),nilai_uts,nilai_uas(dari table Nilai), dimana mahasiswa yang kode_jur =’MI’ dan nilainya pada semester=1, maka perintahnya adalah:

SELECT nama_m,nama_mk,semester,nilai_uts, nilai_uasFROM Nilai INNER JOIN Mahasiswa ON Nilai.nim=Mahasiswa.nimINNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmkWhere semester=1 and kode_jur='MI'

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 7 (tujuh), seperti tampak pada gambar berikut:

Gambar 10.65. Query operator inner join 3 table

b. 4 (empat) tableTampilkan nama_m (dari table mahasiswa),nama_mk,semester (dari table

Matakuliah),nilai_uts,nilai_uas(dari table Nilai), nama_d (dari table Dosen), dimana

Sistem Basis Data – [email protected] 164

Page 173: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

mahasiswa yang kode_jur =’SI’ atau ‘TI’ dan nilainya pada semester=1, maka perintahnya adalah:

SELECT M.nama_m,MK.nama_mk,MK.semester, N.nilai_uts, N.nilai_uas,D.nama_dFROM Nilai N INNER JOIN Mahasiswa M ON N.nim=M.nimINNER JOIN Matakuliah MK ON N.kdmk=MK.kdmkINNER JOIN Dosen D ON N.nid=D.nidWhere semester=1 and kode_jur in('SI','TI')

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 7 (tujuh), seperti tampak pada gambar berikut:

Gambar 10.66. Query operator inner join 4 tablek.2. Outer Join

Outer Join akan menghasilkan semua data dari sebuah tabel dan membatasi data dari tabel lain. SQL mempunyai tiga buah tipe Outer Join yaitu Left, Right dan Full. Semua baris dari tabel sebelah kiri diacu oleh sebuah left outer join, dan sebuah baris dari tabel kanan diacu dengan Right outer join. Kegunaan dari outer join adalah mencari record-record piatu, artinya record yang ada disebuah tabel tetapi tidak ada pasangannya pada pada tabel lain.

a. Left Outer JoinTampilkan nama_m (dari table mahasiswa),nama_mk,semester (dari table

Matakuliah),nilai_uts,nilai_uas(dari table Nilai), dimana mahasiswa yang kode_jur =’MI’ dan nilainya pada semester=1, maka perintahnya adalah:

SELECT nama_mk,semester,sks,nilai_uts,nilai_uasFROM Matakuliah LEFT OUTER JOIN Nilai ON Matakuliah.kdmk=Nilai.kdmkWhere semester=2

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 13 (tigabelas), seperti tampak pada gambar berikut:

Sistem Basis Data – [email protected] 165

Page 174: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.67. Query operator left outer join

b. Right Outer JoinTampilkan nama_mk,semester,sks (dari table Matakuliah),nilai_uts,nilai_uas(dari

table Nilai), dimana sks matakuliahnya tidak sama dengan 2 (<>2), maka perintahnya asalah:

SELECT MK.nama_mk,MK.semester,MK.sks,N.nilai_uts, N.nilai_uasFROM Nilai N RIGHT OUTER JOIN Matakuliah MK ON N.kdmk=MK.kdmkWhere sks<>2

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 7 (tujuh), seperti tampak pada gambar berikut:

Gambar 10.68. Query operator right outer join

c. Full Outer JoinTampilkan nama_mk,semester,sks (dari table Matakuliah),nilai_uts,nilai_uas(dari

table Nilai), dimana matakuliah yang berada pada semester 2, maka perintahnya adalah:

Sistem Basis Data – [email protected] 166

Page 175: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

SELECT MK.nama_mk,MK.semester,MK.sks, N.nilai_uts,N.nilai_uasFROM Nilai N FULL OUTER JOIN Matakuliah MK ON N.kdmk=MK.kdmkWhere semester=2

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 13 (tigabelas), seperti tampak pada gambar berikut:

Gambar 10.68. Query operator right outer join

i. Pengelompokan DataPemakaian perintah select selain dapat digabungkan dengan anak kalimat ORDER BY yang

bertujuan untuk mengurutkan data, juga dapat digabungkan dengan anak kalimat GROUP BY yang bertujuan untuk mengelompokkan data (record) yang sama. Pada kasus sederhana anak kalimat GROUP BY berfungsi seperti perintah DISTINCT, kelebihan GROUP BY adalah dapat digunakan bersama dengan fungsi agregate yang beroperasi pada seluruh record yang akan digabung untuk membentuk satu record (baris) tunggal.

a. Order ByTampilkan nim,nama_m (dari table mahasiswa),nama_jur,jenjang (dari table Jurusan),

dimana nama jurusannya bukan ‘Teknik Komputer dan diurutkan berdasarkan nama mahasiswa secara Descending, maka perintahnya adalah:

SELECT nim,nama_m,nama_jur,jenjangFROM Mahasiswa INNER JOIN Jurusan ON Mahasiswa.kode_jur=Jurusan.kode_jurWHERE nama_jur <>'Teknik Komputer'ORDER BY nama_m DESC

Sistem Basis Data – [email protected] 167

Page 176: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 13 (tigabelas), seperti tampak pada gambar berikut:

Gambar 10.69. Query operator Order Byb. Group By

b.1. Tampilkan nama_jur (dari table Jurusan), jumlahkan tiap jurusan dan ditampung pada kolom ‘Jumlah Mahasiswa’ dan dikelompokkan berdasarkan nama jurusan serta diurutkan berdasarkan nama jurusan secara Ascending, maka perintahnya adalah:

SELECT nama_jur 'Jurusan',count(nim)'Jumlah Mahasiswa'FROM Mahasiswa INNER JOIN Jurusan ON Mahasiswa.kode_jur=Jurusan.kode_jurGROUP BY nama_jurORDER BY nama_jur

Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya adalah 13 (tigabelas), seperti tampak pada gambar berikut:

Gambar 10.70. Query operator Group By (a)

Sistem Basis Data – [email protected] 168

Page 177: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

b.2. Tampilkan semester, jumlahkan tiap semester jumlah sksnya ditampung pada kolom ‘Jumlah SKS’ dan dikelompokkan berdasarkan semester serta diurutkan berdasarkan nama semeser secara Descending, maka perintahnya adalah:

SELECT semester,"Jumlah SKS"=sum(sks)FROM Nilai INNER JOIN Mahasiswa ON Nilai.nim=Mahasiswa.nimINNER JOIN Matakuliah ON Nilai.kdmk=Matakuliah.kdmkGROUP BY SemesterORDER BY Semester DESC

Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya adalah 2 (dua), seperti tampak pada gambar berikut:

Gambar 10.71. Query operator Group By (b)

c. Compute By

c.1. Tampilkan nama_m (dari table Mahasiswa),nama_mk,semester,sks (dari table Jurusana), jumlahkan tiap semester jumlah sksnya dan diurutkan berdasarkan semester, maka perintahnya adalah:

SELECT M.nama_m,MK.nama_mk,MK.semester,MK.sks, N.nilai_uts,N.nilai_uasFROM Nilai N INNER JOIN Mahasiswa M ON N.nim=M.nimINNER JOIN Matakuliah MK ON N.kdmk=MK.kdmkORDER BY SemesterCompute SUM(sks)BY Semester

Hasil dari pernyataan query tersebut adalah 6 (enam) kolom, record / barisnya adalah 14 (empatbelas), jumlah sksnya = 28 untuk semester 1 dan 5 record dan 10 sks untuk semester 2, seperti tampak pada gambar berikut:

Sistem Basis Data – [email protected] 169

Page 178: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.72. Query operator Computer By

j. Sub QuerySub query adalah sebuah pernyataan select di dalam sebuah Select, Insert, Up date atau

Delete atau di dalam subquery lain. Itu semua dapat digunakan untuk mengembalikan data dari beberapa tabel dan sebagai alternatif untuk join. Sub query dapat bersarang atau berhubungan. Sub query yang bersarang dijalankan sekali pada saat Outer Query dijalankan, dan sub query yang berhubungan dijalankan sekali untuk setiap baris dihasilkan pada saat outer query dijalankan.

Berikut ini adalah petunjuk didalam penulisan suatu sub query didalam melakukan penelusuran data didalam database.

• Sub query ditulis dalam tanda kurung.

• Anda hanya boleh memakai sebuah ekspresi atau nama kolom pada daftar select dari sebuah sub query yang menghasilkan sebuah nilai.

• Anda dpat memakai sub query sebagai ganti sebuah ekspresi jika hasilnya adalah sebuah nilai tunggal atau daftar nilai.

• Tidak boleh memakai sub query pada kolom-kolom yang berisi tipe data Teks dan Image.

Sub query dapat dibagi dalam tiga kategori yang bergantung pada nilai pengembalian.

Sistem Basis Data – [email protected] 170

Page 179: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

- Where <ekspresi> [ Not] In ( < Subquery>)

Hasil sub query yang memakai IN atau Not IN adalah daftar nilai yang berisi beberapa nilai atau kosong, setelah sub query memberikan hasil, outer query akan memakainya.

a. INContoh berikut ini akan ditampilkan data matakuliah yang pernah dipakai untuk

transaksi nilai dengan primary key kdmk, maka perintahnya adalah:

SELECT *FROM Matakuliah MWhere M.kdmk IN(SELECT N.kdmk From Nilai N)

Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya adalah 3 (tiga), seperti tampak pada gambar berikut:

Gambar 10.73. Query operator Sub Query IN

b. NOT INPenggunaan NOT IN dapat digunakan untuk memeriksa referential integrity antara

table relasi dengan table master. Contoh berikut ini akan ditampilkan data matakuliah yang belum pernah dipakai untuk transaksi nilai dan jumlahnya sksnya, maka perintahnya adalah:

SELECT kdmk 'Kode Matakuliah',nama_mk 'Matakuliah',sksFROM Matakuliah MWhere sks<>2 and M.kdmk NOT IN (SELECT N.kdmk From Nilai N)COMPUTE sum(sks)

Sistem Basis Data – [email protected] 171

Page 180: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 5 (enam) dan jumlah sksnya = 13, seperti tampak pada gambar berikut:

Gambar 10.74. Query operator Sub Query NOT IN

c. ANY dan ALLKata ANY dan ALL dapat digunakan pada subquery – subquery yang menghasilkan

satu kolom angka – angka. Jika diawali kata ALL, syarat hanya akan bernilai TRUE jika dipenuhi semua nilai yang dihasilkan subquery ini. Jika diawali kata ANY, syarat akan bernilai TRUE jika dipenuhi sedikitnya satu nilai yang dihasilkan subquery itu.

1. ANYPerintah berikut adalah menampilkan kolom kdmk, nama_mk,sks dari table

matakuliah, untuk kolom kdmk diganti ‘Kode Matakuliah’, kolom nama_mk diganti ‘Matakuliah’, dimana hasil subquery adalah sama dengan sks lebih besar 2, maka perintahnya adalah:

SELECT kdmk 'Kode Matakuliah',nama_mk 'Matakuliah',sksFROM MatakuliahWhere sks = ANY (SELECT sks From Matakuliah WHERE sks>2)

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 3 (tiga), seperti tampak pada gambar berikut:

Sistem Basis Data – [email protected] 172

Page 181: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Gambar 10.75. Query operator Sub Query ANY

2. ALLPerintah berikut adalah menampilkan kolom kdmk, nama_mk,sks dari table

matakuliah, untuk kolom kdmk diganti ‘Kode Matakuliah’, kolom nama_mk diganti ‘Matakuliah’, dimana hasil subquery adalah sama dengan 3, maka perintahnya adalah:

SELECT kdmk 'Kode Matakuliah',nama_mk 'Matakuliah',sksFROM MatakuliahWhere sks > ALL(SELECT sks From Matakuliah WHERE sks=3)

Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya adalah 3 (tiga), seperti tampak pada gambar berikut:

Gambar 10.76. Query operator Sub Query ALL

10.5. SQL - DCLDBMS menyedikan mekanisme untuk menjamin hanya pemakai yang berhak (diotorisasi)

yang dapat mengakses basis data. SQL menyediakan pernyataan GRANT dan REVOKE untuk memungkinkan pengamanan diberikan ke tabel – tabel pada basis data. Pengamanan diberikan pada konsep berikut ini:

1. Identifier Otorisasi (authorization)2. Kepemilikan (ownership)3. Wewenang (privelege)

Sistem Basis Data – [email protected] 173

Page 182: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

10.5.1. Identifier Otorisasi dan KepemilikanIdentifier otorisasi adalah identifier SQL normal yang digunakan untuk mengidentifikasi

pemakai. Tiap pemakai didalam basis data diberi identifier otorisasi oleh DBA (database administrator) dan biasanya diasosiasikan dengan Pasword. Setiap pernyataan SQL yang dieksekusi oleh DBMS dilakukan spesifik pemakai. Identifier otorisasi digunakan untuk menentukan objek – objek basis data yang boleh diacu pemakai dan operasi – operasi apa yang dapat dilakukan terhadap objek – objek itu.

Tiap objek yang dibuat SQL mempunyai pemilik, pemilik diidentifikasi identifier otorisasi yang didefiniskan klausa AUTHORIZATION dari skema database. Pemilik awalnya merupakan satu – satunya orang yang mengetahui keberadaan objek dan melakukan operasi – operasi terhadap objek itu.

10.5.2. WewenangWewenang adalah aksi – aksi yang boleh dilakukan oleh pemakai pada table dan view.

Wewenang yang didefiniskan standard ISO antara lain:

• SELECT, wewenang untuk pengambilan data dari table.

• INSERT, wewenang untuk menyisipkan baris data baru kedalam table.

• UPDATE, wewenang untuk melakukan modifikasi baris data baru di table.

• DELETE, wewenang untuk menghapus baris data didalam table.

• REFERENCES, wewenang untuk mengacu kolom – kolom taable secara terintegrasi.

• USAGE, wewenang menggunakan domain, collation, himpunan karakter dan translation.

10.5.3. Perintah DCLPerintah - perintah di DCL bergantung dari vendor RDBMS, pada pokoknya hanya terdapat 2

(dua) perintah DCL yaitu GRNT dan REVOKE.

• GRANT

Pernyataan GRANT digunakan untuk memberikan wewenang pada objek – objek basis data untuk pemakai spesifik. Normalnya, pernyataan GRANT digunakan oleh pemilik table untuk memberikan wewenang kepada pemakai lain untuk mengakses data dengan wewenang tertentu oleh pemilik table.

Format penyataan GRANT adalah:

Sistem Basis Data – [email protected] 174

Page 183: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

GRANT {daftar_wewenang | ALL PRIVELEGES}ON nama_objekTO {daftar_id_otorisasi | PUBLIC}[WITH GRANT OPTION]

Keyword WITH GRANT OPTION memungkinkan pemakai penerima wewenang meneruskan wewenang yang dimilikinya kepada pemakai lainnya.

Jika objek basis data dalah table atau view, maka priveleges dapat berupa:

SELECTDELETEINSERT [(column-comma-list)]UPDATE [(column-comma-list)]REFERENCES [(column-comma-list)]

Empat option pertama menyatakan GRANT untuk melakukan kalimat – kalimat tertentu. Option berisi option [(column-comma-list)] untuk menyatakan kolom – kolom tertentu.

REFERENCES memberikan GRANT wewenang untuk mengacu table atau kolom menggunakan Foreign Key. Tampaknya seperti aneh untuk mengendalikan pengaksesan ini, namun demikianlah. Pengaksesan foreign key yang tidak terbatas dapat membuka lubang keamanan.

• REVOKE

Pernyataan REVOKE digunakan untuk mencabut wewenang pada objek – objek basis data dan dapat digunakan untuk mencabut semua wewenang atau beberapa wewenang pemakai.

Format penyataan GRANT adalah:

REVOKE [GRANT OPTION WHERE] {daftar_wewenang | ALL PRIVELEGES}ON nama_objekFROM {daftar_id_otorisasi | PUBLIC} [RESRICT | CASCADE]

CASCADE berarti jika suatu pemakai yang mempunyai otorisasi telah memberikan wewenang itu kepada pemakai lain, maka wewenang yang telah diberikannya juga turut dicabut.

Sistem Basis Data – [email protected] 175

Page 184: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Demikian juga, jika pemakai kedua telah memberikan wewenang kepada pemakai berikutnya, maka wewenang pemakai berikutnya inipun ikut dicabut, demikian seterusnya.

RESTRICT berarti jika wewenang bergantung masih ada, maka kalimat REVOKE dibatalkan.

Sistem Basis Data – [email protected] 176

Page 185: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

BAB 11SECURITY (KEAMANAN)

11.1. Level SecuritySecurity adalah merupakan tindakan untuk memproteksi kejahatan untuk mencuri atau

memodifikasi data dalam sistem database. Macam – macam level dalam melakukan security terhadap data adalah sebagai berikut :

1. Database system level.Merupakan mekanisme autentikasi dan otorisasi untuk mengijinkan pemakai tertentu melakukan akses data yang diperlukan saja.2. Operating system level.Operating system super-user dapat melakukan apapun terhadap database. Kemanan sistem operasi yang handal dan bagus diperlukan dalam hal ini.3. Network level.Pada level ini proses kemanan harus menggunakan enkripsi untuk menjaga :

Eavesdropping ( pembacaan yang tidak terotorisasi terhadap pesan – pesan tertentu.

Masquerading ( berpura – pura menjadi pemakai yang sah atau mengirimkan pesan yang seolah berasal dari pemakai yang sah ).

4. Physical Level.Yaitu melakukan akses fisik terhadap komputer memungkinkan terjadinya perusakan data, kemanan dengan menggunakan kunci yang diperlukan. Komputer juga harus diamankan dari kebanjiran, kebakaran dan lainnya.5. Human Level.Pemakai harus disaring dahulu untuk memastikan bahwa pemakai yang sah tidak memperbolehkan memberikan hak akses kepada orang lain (penyusup). Pemakai harus dilatih dalam pemilihan password dan menjaga kerahasiaannya.

11.2. OtorisasiBentuk otorisasi yang diperbolehkan kepada pemakai (user) dalam suatu database dalam

suatu perusahaan adalah sebagai berikut :

1. Read authorization.Merupakan hak akses yang diperuntukkan user untuk diijinkan melakukan pembacaan data tetapi tidak diberikan ijin untuk melakukan modifikasi data yang ada.

2. Insert authorization.Merupakan hak akses yang diperuntukkan user untuk diijinkan melakukan penyisipan data baru tetapi tidak diberikan ijin untuk melakukan modifikasi data yang ada.

3. Update authorization.

Sistem Basis Data – [email protected] 177

Page 186: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Merupakan hak akses yang diperuntukkan user untuk diijinkan melakukan modifikasi data tetapi tidak diberikan ijin untuk melakukan penghapusan data yang ada.

Bentuk otorisasi yang diperbolehkan kepada pemakai (user) dalam memodifikasi skema database dalam suatu perusahaan adalah sebagai berikut :

1. Indeks authorization.Merupakan hak akses yang diperuntukkan user untuk diijinkan melakukan pembuatan dan penghapusan indeks.

2. Resources authorization.Merupakan hak akses yang diperuntukkan user untuk diijinkan melakukan pembuatan relasi ( hubungan ) baru dalam database.

3. Alteration authorization.Merupakan hak akses yang diperuntukkan user untuk diijinkan melakukan penambahan dan penghapusan atribut baru dalam relasi ( hubungan ) dalam database.

4. Drop authorization.Merupakan hak akses yang diperuntukkan user untuk diijinkan melakukan penghapusan relasi dalam database.

11.3. Otorisasai dan ViewPemakai (user ) dapat diberikan hak otorisasi pada view, tanpa diberikan otorisasi apaun

terhadap relasi (hubungan) yang digunakan dalam definisi view. Kemampuan view untuk menyembutikan data memberikan kesederhanaan dalam penggunaan sistem dan untuk meningkatkan keamanan dengan mengijinkan pemakai hanya mengakses data yang diperlukan untuk pekerjaannya masing – masing. Kombinasi dari keamanan data pada tingkat relational dan tingkat view dapat digunakan untuk membatasi akses pemakai dengan tepat terhadap data yang dibutuhkan saja.

1. Contoh ViewMisalkan seorang pegawai Bank ingin perlu mengetahui nama nasabah setiap cabang, tetapi tidak diperkenankan melihat informasi mengenai pinjaman. Pendekatan : tiadakan akses langsung terhadap relasi (hubungan) loan,

tetapi diberikan hak akses terhadap view cust_loan, yang berisikan nama – nama nasabah dan cabang dimana mereka memiliki pinjaman.

View cust_loan didefinisikan dalam SQL sebagai berikut :Create view cust_loan as

Select branchname, customer_nameFrom borrower, loanWhere borrower.loan_number = loan.loan_number

Pegawai Bank tersebut diberikan otorisasi untuk melihat hasil dari query berikut ini :

Select *From cust_loan

Sistem Basis Data – [email protected] 178

Page 187: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Jika query prosessor menterjemahkan hasilnya kedalam sebuah query pada relasi aktual yang ada dalam database, maka kita akan memperoleh sebuah query pada borrower dan loan.

Otorisasi harus diuji pada query pegawai Bank tersebut sebelum pemrosesan query dimulai.

2. Otorisasi dalam ViewPembuatan view tidak membutuhkan otorisasi terhadap sumberdaya yang diperlukan, dikarenakan tidak ada relasi nyata yang dibuat. Pembuat view memperoleh hak hanya sebagaimana yang telah dia miliki sebelumnya, tidak lebih.Misalkan : jika pembuat view cust_loan hanya memiliki otorisasi read pada borrower dan loan maka dia hanya memperoleh otorisasi read pada cust_loan.

11.4. Pemberian HakPemberian otorisasi dari satu pemakai pada pemakai yang lain dapat ditunjukkan dengan

(graph) grafik otorisasi. Titik (node) dari graph adalah pemakai (user). Akar (root) dari graph adalah administrasi database.

Berikut ini contoh graph untuk otorisasi update pada loan : Sisi (edge) Ui Uj menunjukkan bahwa pemakai Ui telah memberikan otorisasi

update pada loan untuk Uj.

Gambar 11.1. Pemberian hak

11.5. Spesifikasi Security dalam SQLSpesifikasi sistem keamanan (security system) SQL didalam database adalah ada

beberapa hal berikut ini : Pernyataan Grant digunakan untuk memberikan otoritas, dengan statement

berikut ini :Grant <daftar hak>On <nama relasi atau view> to <daftar pemakai>

<daftar pemakai adalah : o Identitas pemakai.o Public, yang mengijinkan semua pemakai yang valid akan memperoleh hak akses.o Role.

Sistem Basis Data – [email protected] 179

DBA

U1

U2

U3

U4

U5

Page 188: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Pemberian hak pada view tidak berarti memberikan hak kepada relasi yang mendasarinya, pemberian hak harus memiliki hak tersebut terlebih dahulu ( atau menjadi administrator database).

1. Hak dalam SQL.Berikut ini adalah beberapa hak yang diberikan kepada user dalam mengakses database :

Select, mengijinkan akses read pada relasi, atau query menggunakan view.Contoh : berikan pemakai U1, U2 dan U3 untuk otorisasi select pada relasi

branch.Grant select on branch to U1, U2 , U3

Insert, kemampuan untuk menambahkan tupple dalam relasi didalam suatu database.

Update, kemampuan untuk melakukan perubahan tupple dalam relasi didalam suatu database.

Delete, kemampuan untuk melakukan penghapusan tupple dalam relasi didalam suatu database.

References, kemampuan untuk mendeklarasikan foreign key pada saat membuat relasi didalam suatu database.

Usage, dalam SQL-92 yaitu kemampuan untuk memberikan otorisasi pemakai untuk mempergunakan domain tertentu.

All Privileges, kemampuan untuk melakukan pemakaian hal seluruhnya didalam suatu database.

2. Hak untuk memberikan HakDengan pilihan grant, memungkinkan pemakai yang mempunyai hak tersebut memberikan hak akses kepada pemakai yang lainnya didalam suatu database. Contoh berikut ini adalah hak untuk memberikan hak :

Grant select on branch to U1 with grant optionBerikan user U1 hak melakukan select pada relasi branch dan ijinkan user U1untuk memberikan hak tersebut kepada pemakai yang lainnya.

3. RoleRole memungkinkan hak yang sama diberikan kepada sekelompok pemakai sekali saja dengan membuat role yang sesuai. Haknya dapat diberikan atau diambil dari role, seperti pada pemakai. Role dapat diberikan kepada pemakai atau role yang lainnya. SQL-1999 mendukung penggunaan role, sebagai contoh berikut ini :

Create role tellerCreate role manager

Grant select on branch to tellerGrant update (balance) on account to tellerGrant all privileges on account to manager

Sistem Basis Data – [email protected] 180

Page 189: Sistem Basis Data

Sekolah Tinggi Manajemen Informatika dan KomputerSTMIK – BANI SALEH BEKASI

Grant teller to managerGrant teller to alice, bobGrant manager to avi

4. Pencabutan otorisasi dalam SQLDalam pencabutan otorisasi didalam database kepada penggunakan maka digunakan pernyataan revoke, dengan statement berikut ini :

Revoke<daftar hak>On<nama relasi atau view>from<daftar pemakai>[restrict|cascade]

Contoh berikut ini adalah pencabutan hak otorisasi dalam SQL :

Revoke select on branch from U1, U2 , U3 cascade

Yaitu melakukan pencabutan hak dari seorang pemakai dapat menyebabkan pemakai lain juga kehilangan hak tersebut (cascade). Hal tersebut dapat dicegah dengan menentukan restrict :

Revoke select on branch from U1, U2 , U3 restrict

Pertanyaan Soal 1. Jelaskan pengertian physical level dan operating system level dalam security ?.2. Jelaskan pengertian read dan update authorization dalam database ?.3. Berikan suatu contoh graph untuk otorisasi update pada suati relasi dalam suatu

database ?.4. Jelaskan dan berikan contoh pencabutan otorisasi dalam SQL dengan menggunakan

pernyataan revoke ?.

Sistem Basis Data – [email protected] 181