Professional Documents
Culture Documents
Bahan Kuliah:
Sistem Basis Data
BAB 1
PENGERTIAN
SISTEM MANAJEMEN BASIS DATA
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.
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.
Dosen
Matakuliah
Mahasisw Nilai
a
Table Table
Matakuliah Dosen
HARD DISK
(Basia Data Table Table
NilaiMahasiswa) Mahasiswa Nilai
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.
Database
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 / baris
Atribut / field : nim,nama_m,tpt_lhr_m,tgl_lhr_m,j_kelamin,alm_m,kota_m,aama_m dan
kode_jur
Bahan Kuliah:
Sistem Basis Data
Pada record pertama : 01031417 adalah isi data untuk kolom nim, Mulyanti
untuk kolom nama_m dan seterusnya
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.
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.
Bahan Kuliah:
Sistem Basis Data
Basis Data
PC
Basis Basis
Data X: Data Y:
PC
Table A Table J
Table B Table K
Table C Table L
Table D Table M
Table E Table N
Dll Dll PC
Database management
system (DBMS)
Bahan Kuliah:
Sistem Basis Data
Bahan Kuliah:
Sistem Basis Data
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.
Bahan Kuliah:
Sistem Basis Data
Pertanyaan Soal
1. 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 ?.
Bahan Kuliah:
Sistem Basis Data
BAB 2
OPERASI DASARI BASIS DATA
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 – didik@urindo.ac.id Refisi : 1
-
11
Bahan Kuliah:
Sistem Basis Data
penghapusan dan pencarian data merupakan operasi rutin yang berlaku berulang-ulang.
Contoh
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.
Bahan Kuliah:
Sistem Basis Data
Bahan Kuliah:
Sistem Basis Data
dengan table B, namun secara teknis ada field / atribut kunci yang mengaitkan /
merelasikan table tersebut.
Bahan Kuliah:
Sistem Basis Data
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.
Bahan Kuliah:
Sistem Basis Data
Matakuliah ={kdmk,nama_mk,sks,semester}
Dengan data value sebagai berikut:
4. Mengajar
Mengajar ={nid,thn_akademik,smt,hari,jam_ke,kdmk,waktu,kelas,kode_jur}
Dengan data value sebagai berikut:
Bahan Kuliah:
Sistem Basis Data
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):
Bahan Kuliah:
Sistem Basis Data
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.
Bahan Kuliah:
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 :
Level Konseptual
Level Phisik
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 ?
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 3
BAHASA 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.
Bahan Kuliah:
Sistem Basis Data
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.
Bahan Kuliah:
Sistem Basis Data
Bahan Kuliah:
Sistem Basis Data
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.
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.
Bahan Kuliah:
Sistem Basis Data
Hasil Query
Bahan Kuliah:
Sistem Basis Data
b. Integritas
c. Keamanan
d. Bakcup dan recovery
Bahan Kuliah:
Sistem Basis Data
Berikut contoh data yang akan digunakan (data yang ada tidak menggambarkan
kenyataan yang sesungguhnya ).
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.
Bahan Kuliah:
Sistem Basis Data
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
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 ?.
Bahan Kuliah:
Sistem Basis Data
BAB 4
NORMALISASI 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.
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.
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.
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.
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).
Bahan Kuliah:
Sistem Basis Data
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 jurusan
Kunci 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
No_proyek NIK
Tgl_mulai Nama
Tgl_selesai Alamat
Anggaran ….
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.
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
Bahan Kuliah:
Sistem Basis Data
Bahan Kuliah:
Sistem Basis Data
Bahan Kuliah:
Sistem Basis Data
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.
Bahan Kuliah:
Sistem Basis Data
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 ?.
Bahan Kuliah:
Sistem Basis Data
BAB 5
ANOMALI DAN INTEGRITAS DATA
PADA MODEL RELASIONAL
5.1. Anomali
Anomali 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:
Bahan Kuliah:
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 :
AB
Pengertian 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_nilai
Algorithma
Row 1 980001 Ali akbar A
Alghorithma
Row 2 980004 Indah S B
Basis 3data
Row 980001 Ali akbar
Row 4 Basis data 980002 Budi H
Row
Basis 5data 980004 Indah S
Row 6
Pengembangan Diri 980001 Ali Akbar B
Row
Bahasa7 Inggris I 980002 Budi H C
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.
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.
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.
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.
Bahan Kuliah:
Sistem Basis Data
a. Integritas domain
Domain 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 entitas
Null 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.
Bahan Kuliah:
Sistem Basis Data
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 referensial
Integritas 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.
Bahan Kuliah:
Sistem Basis Data
d. Integritas enterprise
Integritas 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 Soal
1. 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 ?.
Bahan Kuliah:
Sistem Basis Data
BAB 6
BENTUK – BENTUK NORMALISASI
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.
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, Tabel
makadengan
persoalan
atribut anomali tidak akan muncul lagi didalam kita melakukan
bernilai jamak
perancangan database.
Menghilangkan
atribut bernilai jamak
Kriteria dalam proses normalisasi adalah kebergantungan fungsional, kebergantungan banyak
Tabel bentuk
nilai dan normal pertamatipe
kebergantungan join. Ketiga kebergantungan tersebut digunakan untuk menilai relasi –
Menghilangkan
relasi yang dihasilkan dari konversi diagram ER menjadi kumpulan relasi – relasi. Proses normalisasi
ketergantungan
parsial
membentuk relasi – relasiTabel
bentuk normal menggunakan dekomposisi yang memecah relasi menjadi
bentuk
normal kedua
relasi – relasi berbentuk normal lebih tinggi. Menghilangkan
ketergantungan
Berikut ini adalah gambar untuk langkah – langkah melakukan
transitif normalisasi data, seperti
tampak berikut ini: Tabel bentuk
normal ketiga
Menghilangkan anomali
tersisa disebabkan
ketergantungan fungsional
Tabel bentuk
Normal boyce-codd
Menghilangkan
ketergantungan nilai
jamak
FTI –TeknikTabel bentuk URINDO :
Informatika
Edisi 1 Tahun 2007
Normal – didik@urindo.ac.id
keempat Refisi : 1
- Menghilangkan
anomali tersisa
Tabel bentuk
Normal kelima
49
Bahan Kuliah:
Sistem Basis Data
Bahan Kuliah:
Sistem Basis Data
Keahlian menyatakan atribut yang berulang (misal, fika punya tiga keahlian, dan
Rian punya 2 keahlian).
Berikut ini adalah contoh data pada relasi mahasiswa yang belum memenuhi
bentuk normal pertama.
Bahan Kuliah:
Sistem Basis Data
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 :
Berikut ini adalah contoh data pada relasi matakuliah yang telah memenuhi
bentuk normal pertama.
Kode_mk Matakuliah Sks Pengasuh
1234 Sistem Basis Data 2 Didik Setiyadi,M.Kom.
1435 Alghoritma 4 Tukino,S.Kom,MM.Si
1545 Jaringan Komputer 2 Djuwadi,M.Kom.
1245 Bahasa Inggris I 2 Dra. Siti Azizah
Relasi matakuliah tersebut merupakan bentuk 1 NF, karena tidak ada atribut
yang bernilai ganda, dan tiap atribut satu pengertian yang bernilai tunggal.
Bahan Kuliah:
Sistem Basis Data
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 Didik
9810004 Andik P Primadina
9810006 Rini Tukino
9820008 Basuki Djuwadi
Bahan Kuliah:
Sistem Basis Data
Berikut Contoh relasi yang memenuhi bentuk 2 NF, tetapi tidak memenuhi bentuk 3 NF.
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 – didik@urindo.ac.id Refisi : 1
-
54
Bahan Kuliah:
Sistem Basis Data
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.
Bahan Kuliah:
Sistem Basis Data
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 Seminar
Budi 2281
Kardi 2281
Joni 2291
Rahmad 2291
No_siswa Instruktur
2201001 Budi
2201002 Kardi
2201003 Joni
Bahan Kuliah:
Sistem Basis Data
2201002 Rahmad
2201004 Rahmad
Bahan Kuliah:
Sistem Basis Data
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.
Matakuliah Dosen
Pengenalan Komputer Budi
Pengenalan Komputer Sanjaya
Bahan Kuliah:
Sistem Basis Data
Matakuliah Isi
Pengenalan Komputer Dasar Komputer
Pengenalan Komputer Pengenalan pengolahan kata
Pengenalan Komputer Pengenalan lembaran kerja
Matematika Differensial
Matematika Integral
Bahan Kuliah:
Sistem Basis Data
Dealer Distributor
Sumber Jaya Nissan
Sumber Jaya Toyota
Asterindo Nissan
Distributor Kendaraan
Nissan Truk Nissan
Nissan Sedan Nissan
Toyota Toyota Kijang
Toyota Truk Dyna
Dealer Kendaraan
Sumber Jaya Truk Nissan
Sumber Jaya Sedan Nissan
Sumber Jaya Toyota Kijang
Bahan Kuliah:
Sistem Basis Data
Pertanyaan Soal
1. 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) ?.
Bahan Kuliah:
Sistem Basis Data
7. Jelaskan dan berikan contoh pengertian dari ketergantungan fungsional dan ketergantungan
transitif ?.
BAB 7
PENERAPAN 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..
Bahan Kuliah:
Sistem Basis Data
PT REVANDA JAYA
Jl. Bekasi Timur No. 2
Bekasi Timur
Sehubungan dengan dokumen dasar tersebut, tahapan yang harus dilakukan untuk
melakukan normalisasi data adalah sebagai berikut:
1. Bentuk Unnormalisasi
Langkah 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 Kode Nama Kode Nama Barang Tanggal Jatuh Qt Harga Jumlah Total
Fac Supp Supp Brg Tempo y
779 S02 Hitachi R02 Rice Chocker C3 02/02/01 09/03/01 10 150000 1500000 1500000
998 G01 Gobel A01 AC Split ½ PK 07/02/01 09/03.01 10 135000 13500000 33500000
Nustra A02 AC Split 1 PK 10 2000000 20000000
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.
No Kode Nama Supp Kode Nama Barang Tanggal Jatuh Qty Harga Jumlah Total
Fac Supp Brg Tempo
779 S02 Hitachi R02 Rice Chocker C3 02/02/01 09/03/01 10 150000 1500000 1500000
998 G01 Gobel Nustra A01 AC Split ½ PK 07/02/01 09/03/01 10 135000 13500000 33500000
998 G01 Gobel Nustra A02 AC Split 1 PK 07/02/01 09/03/01 10 2000000 20000000 33500000
Pada normal pertama tersebut masih terjadi banyak kelemahan, terutama pada proses
ANOMALI insert, update dan delete berikut ini:
Bahan Kuliah:
Sistem Basis Data
penghapusan data supplier S02 (Hitachi) padahal data tersebut masih diperlukan.
Atribut jumlah (merupakan atribut turunan) seharusnya tidak perlu, karena setiap harga
dikali kuantitas akan menghasilkan jumlah, sehingga hasilnya akan menjadi lebih konsisten.
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 Supplier
Kode_Supplier Nama _Supplier
S02 Hitachi
G01 Gobel Nustra
G01 Gobel Nustra
Relasi Barang
Kode_Barang Nama_Barang Harga
R02 Rice Chocker C3 150000
A01 AC Split ½ PK 135000
A02 AC Split 1 PK 2000000
Relasi Faktur
No_Faktur (Kode_Barang) (Kode _Supplier) Tanggal Jatuh_tempo Qty
Bahan Kuliah:
Sistem Basis Data
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.
Bahan Kuliah:
Sistem Basis Data
Relasi Faktur
No_Faktur Tanggal Jatuh_Tempo Kode_Supplier
779 02/02/2001 09/03/2001 S02
998 07/02/2001 09/03/2001 G01
Relasi Transaksi_Barang
No_Faktur Kode_Barang Qty
779 R01 10
998 A01 10
998 A02 10
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 }
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.
* Kode_supplier 1
* No_faktur
nama_supplier Tanggal
Jatuh_tempo
** Kode_supplier
* Kode_barang Terdiri
Barang Nama_barang Dari
Harga
1 N
Digunaka N Transaksi
n Barang
* No_faktur **
* Kode_barang **
Qty
Keterangan : * = Primary Key, ** =Foreign Key
Gambar 7.6. ERD (Entity Relationship Diagram)
Pengertian Hubungan (Relation) antar pada gambar ERD (entity relationship diagram)
Bahan Kuliah:
Sistem Basis Data
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:
Bahan Kuliah:
Sistem Basis Data
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 ?.
Bahan Kuliah:
Sistem Basis Data
BAB 8
MODEL DATA DAN ENTITY-RELATIONSHIP MODEL
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).
Bahan Kuliah:
Sistem Basis Data
Account
Number Balance
900 55
556 100000
647 1005366
801 10533
90055
Lowery Maple
556100000
Shiver Nort
647105366
Hodges Sidehill
80110533
SL41Julie…Assistant9000
SL41Julie…Assistant9000
73
Bahan Kuliah:
Sistem Basis Data
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,
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.1. Entiti
Merupakan 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.
Bahan Kuliah:
Sistem Basis Data
8.2.2. Atribut
Merupakan 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.
Relasi Unary
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.
Pasien Syarat
Relasi Binary
Relasi yang terjadi dari dua himpunan entiti. Relasi ini kerap terjadi dan paling banyak
digunakan. Contoh relasi biner adalah relasi antara Pasien dengan Obat.
Memak
Pasien Obat
ai
Relasi Treenary
Relasi yang terjadi dari hubungan3 (tiga) buah entiti. Contoh relasi ini adalah
hubungan antara Pasien, Tindakan dan Dokter.
Dilakuk
Pasien an
Tindakan
Dokter
Bahan Kuliah:
Sistem Basis Data
Relasi N-nary
Relasi 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.
1 1
Kustomer R1 Rekening
Bahan Kuliah:
Sistem Basis Data
R1 = Mempunyai
1 m
Kustomer R1 Rekening
R1 = Mempunyai
m n
Kustomer R1 Bank
R1 = Pinjam
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.
Bahan Kuliah:
Sistem Basis Data
2. ATRIBUT
Untuk menggambarkan elemen – elemen dari
suatu entiti, yang menggambarkan karakter entiti.
3. HUBUNGAN
Menggambarkan relasi ( hubungan ) antar entiti
4. GARIS
Digunakan untuk menghubungkan entiti dengan
entiti, atau entiti dengan atribut.
Berikut ini dalah contoh penerapan model ER yang dapat ditaungkan kedalam Diagram – ER (
ERD ) :
Bahan Kuliah:
Sistem Basis Data
telp
nama alama
nim t Tglhi
r
Mahasiswa
m nilai
Nim
Mempelajar
i
Kode
n
Kode
sks
Matakuliah
smeste
Namamk
r
m
Kode hari
Mengajar
waktu
NID
1
NID alamat
FTI –Teknik Informatika URINDO : d
Edisi 1 Tahun 2007 – didik@urindo.ac.id Refisi : 1
-
Dosen
Namads telpon
81
Bahan Kuliah:
Sistem Basis Data
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 :
m Mempelaja
n
Mahasiswa Matakuliah
ri
m
1
Dosen Mengajar
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 }
Bahan Kuliah:
Sistem Basis 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
Bahan Kuliah:
Sistem Basis Data
Pertanyaan Soal
1. 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 9
ALJABAR 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.
Bahan Kuliah:
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.
Bahan Kuliah:
Sistem Basis Data
6. Matakuliah
Matakuliah ={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. Jurusan
Jurusan ={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:
Bahan Kuliah:
Sistem Basis Data
8. Mengajar
Mengajar ={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.
Bahan Kuliah:
Sistem Basis Data
σtempat_lhr=’Bekasi’ (Dosen)
3. Hasilnya adalah:
b. Contoh 2
1. Query : Tampilkan daftar dosen yang tempat lahirnya di ‘Jakarta’ atau ‘Bogor’
2. Aljabar relasional:
3. Hasilnya adalah:
c. Contoh 3
1. Query : Tampilkan daftar dosen yang tempat lahirnya di ‘Bogor’ dan jenis kelaminnya ‘Pria’
2. Aljabar relasional:
Bahan Kuliah:
Sistem Basis Data
3. Hasilnya adalah:
π nid,nama_d,alamat,kota(Dosen)
3. Hasilnya adalah:
b. Contoh 2
1. Query : Tampilkan nid,nama_d,alamat,kota,gajipokok dari relasi Dosen, dimana gaji
pokoknya lebih besar dari Rp.1200000
2. Aljabar relasional:
Bahan Kuliah:
Sistem Basis Data
3. Hasilnya adalah:
c. Contoh 3
4. Query : Tampilkan nid,nama_d,alamat,kota,gajipokok dari relasi Dosen, dimana kota
alamatnya ‘Cibitung’ dan gaji pokoknya lebih besar dari Rp.1000000
5. Aljabar relasional:
6. Hasilnya adalah:
Bahan Kuliah:
Sistem Basis Data
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 2
1. 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:
atau:
Bahan Kuliah:
Sistem Basis Data
3. Hasilnya adalah:
b. Contoh 3
1. 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:
Bahan Kuliah:
Sistem Basis Data
R S
A B A B
D A D A
C F H T
G H G H
R ∪ S adalah:
A B
D A
C F
G H
H T
3. Hasilnya adalah:
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 1
1. Query : Tampilkan nid (dari relasi Dosen) Set-difference dari nid (dari relasi Mengajar).
2. Aljabar relasional:
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 1
1. Query : Salinlah table baru dengan nama DosenNew dari table Dosen, dimana jenis
kelaminnya adalah ‘Pria’.
2. Aljabar relasional:
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 Y
A C D F
B F A C
H I
R1 ∩ R2 adalah:
A B
A C
a. Contoh 1
1. Query : Tampilkan nid (dari relasi Dosen) Set-intersection dari nid (dari relasi Mengajar).
2. Aljabar relasional:
3. Hasilnya adalah:
Bahan Kuliah:
Sistem Basis Data
a. Contoh 1
1. Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar
2. Aljabar relasional:
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 1
1. Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi
Mengajar
2. Aljabar relasional:
3. Hasilnya adalah:
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 1
1. 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:
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.
Bahan Kuliah:
Sistem Basis Data
a. Contoh 1
1. 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:
4. Hasilnya adalah:
Bahan Kuliah:
Sistem Basis Data
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.gajipokok
FROM Dosen
WHERE
Dosen.jkelamin=’Pria’ AND Dosen.gajipokok>1000000
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:
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:
AND
.
.
OR
TupleVariablem 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:
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.
Contoh :
Cari semua nid,nama_d,gajipokok dari semua dari semua dosen yang gaji
pokoknya > 1000000:
Cari semua nid,nama_d dari semua dosen yang mengajar pada ttahun akademik
2004 dan semester 1:
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:
Contoh :
Cari nip,nama_d,gajipokok daridosen, dimana jenis kelaminnya adalah Pria dan
gaji pokoknya lebih besar 1200000
Berdasarkan acuan model relasional, ada 2 bahasa query komersial yang tersedia,yaitu SQL
dan QBE.
9.2.3. QBE (Query By Example)
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))
BAB 10
SQL (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.
• 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.
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.
b. MS SQL Server
MS 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
dieksekusi pada beraneka ragam RDBMS dengan hanya mendefinisikan taarget RDBMS
yang dikehendaki.
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 NULL
EXEC sp_addtype zipcode,’char(10)’,NULL
EXEC sp_addtype alamat,’varchar(90)’,NULL
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:
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:
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 :
dimana :
table_name adalah nama tabel yang akan dibuat.
Column_name adalah nama-nama atribut yang akan terdapat di dalam tabel_name.
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:
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)
)
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 :
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.
3. Menghapus kolom
Misalkan kita akan menghapus kolom email yang kita tambahkan pada
table mahasiswa, maka perintahnya adalah:
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:
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:
UPDATE DROP
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.
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:
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:
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:
Misalkan kita akan menghapus indeks yang telah dibuat sebelumnya dengan nama indeks
MhsIdx, maka perintahnya adalah:
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”
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.
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:
INSERT : Klausa ini menspesifikasikan nama tabel dimana data bisa ditambahkan
VALUE : Klausa ini menspesifikasikan nilai data yang akan disisipkan ke dalam kolom
pada tabel
Daftar_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 Mahasiswa
INSERT INTO Mahasiswa
Values (‘I01031001’,’Dewi Nurbaini’,’Bekasi’,’12/10/87’,
’Wanita’,’Jl. Dahlia I Blok BC 2/3’,’Bekasi Utara’,
’Hindu’,’021-8791290’,’TI’)
2. Table Jurusan
INSERT INTO Jurusan
Values (‘KA’,’Komputerisasi Akuntansi’,’Diploma 3’,
’Rini Wulandari,MM,MMSi’)
3. Table Matakuliah
4. Table Dosen
INSERT INTO Dosen
Values (‘D01’,’Amir Mahmud,SE’,’S1’,’Islam’,
’Jl. Nagka Permai No.17’, ’Bekasi’,’021-8712311’)
5. Table Nilai
INSERT INTO Nilai
Values (‘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 Mahasiswa
INSERT 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 Jurusan
INSERT INTO Jurusan (kode_jur,nama_jur,jenjang)
Values (‘MI’,’Manajemen Informatika’,’Diploma 3’)
3. Table Matkuliah
INSERT INTO Matakuliah (kdmk,nama_mk)
Values (‘MKB331203’,’PRAKTIKUM PAKET PROGRAM APLIKASI I’)
4. Table Dosen
INSERT INTO Dosen(nid,nama_d,pendidikan_d,agama_d,telpon_d)
Values (‘D02’,’Susilo Wibowo,M.Kom’,’S2’,’Islam’,’021-
8723122’)
5. Table Nilai
INSERT 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.
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.
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
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 MatakuliahBaru
FROM Matakuliah
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,jenjang
INTO MahasiswaJurusan
FROM 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,jenjang
INTO MahasiswaJurusan
FROM Mahasiswa inner join Jurusan on
Mahasiswa.kode_jur = Jurusan.kode_jur
Where nama_jur=’Manajemen Informatika’
UPDATE table_name
SET 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.
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 Mahasiswa
UPDATE 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 Jurusan
UPDATE Jurusan set nama_kajur=’Wahono Diprodjo,MM,MKom.’
WHERE kode_jur=’MI’
3. Table Matakuliah
UPDATE Matakuliah set sks=1, semester=1
WHERE kdmk=’MKB331203’
4. Table Dosen
UPDATE Dosen set alamat_d=’Jl. Bambu Apus No.24’,
kota_d=’Bekasi
WHERE nid=’D02’
5. Table Nilai
UPDATE Nilai set nilai_tugas=67, nilai_uts=78, nilai_uas=87
WHERE nim=’M01031002’,kdmk=’MPK131201’,smt=1
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
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:
DELETE
FROM MahasiswaNew
Keterangan :
Pilih_daftar_kolom : Menyatakan pilihan terhadap kolom atau atribut dari data yang dipilih.
Nama_tabel : Tabel yang akan diambil datanya.
SELECT *
From Jurusan
SELECT kode_jur,nama_jur,jenjang,nama_kajur
From Jurusan
Maka hasilnya sama seperti tampak pada table 10.9 diatas (jumlah kolom 4
(empat) dan record / barisnya adalah 5 (lima)
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:
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:
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:
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 Aritmatika
Pernyatan 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 .
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:
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:
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:
Hasil dari pernyataan query tersebut adalah (4 (lima) kolom dan record / barisnya
adalah 19 (sembilan belas) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah (4 (lima) kolom dan record / barisnya
adalah 19 (sembilan belas) , seperti tampak pada gambar berikut:
Pada metode, klausa where dapat dibagi dalam beberapa kategori seperti berikut:
1. Comparison operator : seperti =,>,<,>=,<=,!=/<>
2. Range operator : seperti Between dan Not Beetween
3. List operator : seperti In dan Not In
4. String operator : seperti Like dan Not Like
5. Logical Operator : seperti And, Or, Not.
Sistem Basis Data – didiksetiyadi@yahoo.com 127
Sekolah Tinggi Manajemen Informatika dan Komputer
STMIK – BANI SALEH BEKASI
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 Nilai
WHERE nilai_uas=80
Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya
adalah 1 (satu) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 5 (lima) , seperti tampak pada gambar berikut:
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 Nilai
WHERE nilai_uas>88
Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya
adalah 5 (lima) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 3 (tiga), seperti tampak pada gambar berikut:
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 Nilai
WHERE nilai_uas<70
Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
WHERE nilai_uts<65
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 5 (lima), seperti tampak pada gambar berikut:
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 Nilai
WHERE nilai_uas>=90
Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 6 (enam), seperti tampak pada gambar berikut:
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 Nilai
WHERE nilai_uas<=70
Hasil dari pernyataan query tersebut adalah 6 (enam) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 5 (lima), seperti tampak pada gambar berikut:
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 Nilai
WHERE 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:
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 5 (lima), seperti tampak pada gambar berikut:
Select Daftar_kolom
From nama_tabel
Where nama_kolom [not] Between expresi1 and expresi 2
1. Operator Between
1.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:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 9 (sembilan) , seperti tampak pada gambar berikut:
SELECT nama_m,nama_mk,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 BETWEEN 79 and 90
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 5 (lima) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 3 (tiga) , seperti tampak pada gambar berikut:
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
Select Daftar_kolom
From nama_tabel
Where nama_kolom operator List (‘Daftar_value’)
1. Operator In
1.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:
Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 8 (delapan) , seperti tampak pada gambar berikut:
2. Operator In
2.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:
Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya
adalah 6 (enam) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 6 (enam) , seperti tampak pada gambar berikut:
% Wildcard Deskripsi
% String Karakter
_ Garis Bawah Karakter Tunggal
[ ] Karakter tunggal dalam range tertentu
[ ^ ] Karakter 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:
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 2(dua) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 2(dua) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 6 (enam) , seperti tampak pada gambar berikut:
2. Wildcard _
2.a. Untuk 1 (satu) table
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 2(dua) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 2(dua) , seperti tampak pada gambar berikut:
3. Wildcard []
3.a. Untuk 1 (satu) table
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 5(lima) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 9 (sembilan) , seperti tampak pada gambar berikut:
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:
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 6 (enam) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
Select daftar_kolom
From nama_tabel
Where conditional expresi {AND/OR} [Not] conditional
expresi
1. Operator OR
Opertor 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 Hasil
True True True
True False True
True Null True
False True True
False False False
False Null False
Null True True
Null False False
Null Null Null
FROM Mahasiswa
WHERE 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:
Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya
adalah 11 (sebelas) , seperti tampak pada gambar berikut:
2. Operator NOT
Opertor 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 Hasil
True False
False True
Null Null
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 6 (enam) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 6 (enam) , seperti tampak pada gambar berikut:
3. Operator AND
Opertor ini digunakan untuk menguji beberapa ekspresi logika yang diberikan
memiliki nilai TRUE, dengan aturan penulisan:
Operator AND pada SQL akan menghasilkan nilai sesuai dengan table berikut:
Ekspresi1 Ekspresi2 Hasil
True True True
True False False
False True False
False False False
Null True/False/Null Null
True/False/Null Null Null
Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya
adalah 6 (enam) , seperti tampak pada gambar berikut:
Select Daftar_kolom
From nama_tabel
Where nama_kolom . operator_Unknown_Values
SELECT *
FROM Mahasiswa
WHERE 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:
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:
g. Fungsi Agregate
Terdapat 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 Penjelasan
SUM Menjumlahkan Nilai
MIN Mencari nilai minimum
MAX Mencari Nilai Maximum
AVG Mencari Nilai Rata rata
COUNT Menghitung jumlah data
Fungsi AVG, SUM, MIN, MAX dan COUNT meng Ignore nilai Null sedangkan fungsi COUNT()
menghitung nilai Null.
1. Fungsi SUM
Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya
adalah 1 (satu) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya
adalah 1 (satu), seperti tampak pada gambar berikut:
3. Fungsi MAX
Fungsi 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.
Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya
adalah 1 (satu), seperti tampak pada gambar berikut:
4. Fungsi AVG
Fungsi 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.
Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya
adalah 1 (satu), seperti tampak pada gambar berikut:
5. Fungsi COUNT
Fungsi 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.
Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya
adalah 1 (satu), seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya
adalah 1 (satu), seperti tampak pada gambar berikut:
Komponen tanggal yang disebut Datepart digunakan untuk menentukan elemen nilai tanggal
untuk Aritmatika tanggal. Datepart dapat berupa :
1. Fungsi DateAdd
Fungsi 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. DD
Tampilkan 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:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 2 (dua) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
1.c. YY
Tampilkan 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:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 8 (delapan) , seperti tampak pada gambar berikut:
2. Fungsi DateIIF
Fungsi ini mempunyai bentuk DateDIFF(DatePart,Date,Date2), merupakan fungsi
yang melakukan kalkulasi angka datepart antara dua tanggal yang diberikaan (DD,MM,YY).
2.a. DD
Tampilkan 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:
Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
2.b. MM
Tampilkan 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:
Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
2.c. YY
Tampilkan 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:
Hasil dari pernyataan query tersebut adalah 4 (empat) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
3. Fungsi DatePart
Fungsi 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. DD
Tampilkan kolom nama_m,tgl_lhr_m, ’Tanggal Lahir’ dari table Mahasiswa dimana
mahasiswa yang tempat lahirnya ’Bogor’, maka perintah nya adalah:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 2 (dua) , seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 2 (dua) , seperti tampak pada gambar berikut:
3.c. YY
Tampilkan kolom nama_m,tgl_lhr_m, ’Tahun Lahir’ dari table Mahasiswa dimana
mahasiswa yang tempat lahirnya ’Bogor’, maka perintah nya adalah:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 2 (dua) , seperti tampak pada gambar berikut:
4. Fungsi DateName
Fungsi 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).
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 4 (empat) , seperti tampak pada gambar berikut:
5. Fungsi GetDate
Fungsi ini mempunyai bentuk GetDate(), merupakan fungsi yang digunakan untuk
mengetahui tanggal dan waktu sekarang.
Tampilkan kolom ’Tanggal Hari Ini’ dan ’15 Hari Dari Sekarang’, maka perintah nya
adalah:
Hasil dari pernyataan query tersebut adalah 2 (kolom) kolom dan record / barisnya
adalah 1 (satu) , seperti tampak pada gambar berikut:
i. Distinct
Key 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:
Hasil dari pernyataan query tersebut adalah 1 (satu) kolom dan record / barisnya
adalah 9 (sembilan), seperti tampak pada gambar berikut:
j. Top
Predikat 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.
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 7 (tujuh), seperti tampak pada gambar berikut:
Bila anda ingin mengambil data dalam bentuk prosentasi dari seluruh data yang akan
ditampilkan, gunakan argumen Percent setelah argumen numerik.
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 4 (empat), seperti tampak pada gambar berikut:
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.
a. 3 (tiga) table
Tampilkan 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:
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 7 (tujuh), seperti tampak pada gambar berikut:
b. 4 (empat) table
Tampilkan nama_m (dari table mahasiswa),nama_mk,semester (dari table
Matakuliah),nilai_uts,nilai_uas(dari table Nilai), nama_d (dari table Dosen), dimana
mahasiswa yang kode_jur =’SI’ atau ‘TI’ dan nilainya pada semester=1, maka perintahnya
adalah:
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 7 (tujuh), seperti tampak pada gambar berikut:
SELECT nama_mk,semester,sks,nilai_uts,nilai_uas
FROM Matakuliah LEFT OUTER JOIN Nilai ON
Matakuliah.kdmk=Nilai.kdmk
Where semester=2
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 13 (tigabelas), seperti tampak pada gambar berikut:
SELECT MK.nama_mk,MK.semester,MK.sks,N.nilai_uts,
N.nilai_uas
FROM Nilai N RIGHT OUTER JOIN Matakuliah MK ON
N.kdmk=MK.kdmk
Where sks<>2
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 7 (tujuh), seperti tampak pada gambar berikut:
SELECT MK.nama_mk,MK.semester,MK.sks,
N.nilai_uts,N.nilai_uas
FROM Nilai N FULL OUTER JOIN Matakuliah MK ON
N.kdmk=MK.kdmk
Where semester=2
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 13 (tigabelas), seperti tampak pada gambar berikut:
i. Pengelompokan Data
Pemakaian 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 By
Tampilkan 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,jenjang
FROM Mahasiswa INNER JOIN Jurusan ON
Mahasiswa.kode_jur=Jurusan.kode_jur
WHERE nama_jur <>'Teknik Komputer'
ORDER BY nama_m DESC
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 13 (tigabelas), seperti tampak pada gambar berikut:
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:
Hasil dari pernyataan query tersebut adalah 5 (lima) kolom dan record / barisnya
adalah 13 (tigabelas), seperti tampak pada gambar berikut:
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:
Hasil dari pernyataan query tersebut adalah 2 (dua) kolom dan record / barisnya
adalah 2 (dua), seperti tampak pada gambar berikut:
c. Compute By
SELECT M.nama_m,MK.nama_mk,MK.semester,MK.sks,
N.nilai_uts,N.nilai_uas
FROM Nilai N INNER JOIN Mahasiswa M ON N.nim=M.nim
INNER JOIN Matakuliah MK ON N.kdmk=MK.kdmk
ORDER BY Semester
Compute 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:
j. Sub Query
Sub 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.
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. IN
Contoh berikut ini akan ditampilkan data matakuliah yang pernah dipakai untuk
transaksi nilai dengan primary key kdmk, maka perintahnya adalah:
SELECT *
FROM Matakuliah M
Where 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:
b. NOT IN
Penggunaan 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:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 5 (enam) dan jumlah sksnya = 13, seperti tampak pada gambar berikut:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 3 (tiga), seperti tampak pada gambar berikut:
2. ALL
Perintah 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:
Hasil dari pernyataan query tersebut adalah 3 (tiga) kolom dan record / barisnya
adalah 3 (tiga), seperti tampak pada gambar berikut:
10.5.2. Wewenang
Wewenang adalah aksi – aksi yang boleh dilakukan oleh pemakai pada table dan view.
Wewenang yang didefiniskan standard ISO antara lain:
SELECT
DELETE
INSERT [(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:
CASCADE berarti jika suatu pemakai yang mempunyai otorisasi telah memberikan
wewenang itu kepada pemakai lain, maka wewenang yang telah diberikannya juga turut dicabut.
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.
BAB 11
SECURITY (KEAMANAN)
11.2. Otorisasi
Bentuk 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.
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.
1. Contoh View
Misalkan 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_name
From borrower, loan
Where borrower.loan_number = loan.loan_number
Pegawai Bank tersebut diberikan otorisasi untuk melihat
hasil dari query berikut ini :
Select *
From cust_loan
U1 U4
DBA U2 U5
U3
Pemberian hak pada view tidak berarti memberikan hak kepada relasi yang
mendasarinya, pemberian hak harus memiliki hak tersebut terlebih dahulu ( atau
menjadi administrator database).
3. Role
Role 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 :
Revoke<daftar hak>
On<nama relasi atau view>from<daftar pemakai>
[restrict|cascade]
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 ?.