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.
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.
Matakuliah Dosen
Nilai
Mahasiswa
Table Table
Dosen
Matakuliah
HARD DISK
(Basia Data Table Table
NilaiMahasiswa) Mahasiswa Nilai
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
dapat berupa : nim, nama_m, tpt_lhr_m, tgl_lhr_m, alm_m dan dan atribut lainnya yang
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 láinnya
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
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.
Basis Data
PC
Basis Basis
Data X: Data Y:
Table A Table J PC
Table B Table K
Table C Table L
Table D Table M
Table E Table N
Dll Dll PC
Database management
system (DBMS)
operasi dasar dalam komputer (operasi input/output), pengelolaan file, dan lain
sebagainya.
Program pengelola basis data (DBMS) akan aktif (running) jika sistem
operasi yang dikehendakinya (sesuai) telah aktif.
Contoh daripada sistem operasi pada sistem komputer adalah MS-DOS, MS
Windows (3.11,95,98 dan lainnya) untuk yang stand alone dan MS Windows (2000
Server, UNIX, LINUX, Novel_Netware dan lain sebagainya) utuk yang jaringan.
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.
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 ?.
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,
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.
mengubahnya.
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.
4. Mengajar
Mengajar ={nid,thn_akademik,smt,hari,jam_ke,kdmk,waktu,kelas,kode_jur}
Dengan data value sebagai berikut:
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):
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.
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 ?
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.
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.
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.
bukan efisien akses, tapi juga efisiensi interaksi pemakai dengan sistem.
DML merupakan bahasa yang bertujuan memudahkan pemakai untuk mengakses
data sebagaimana direpresentasikan oleh model data. Ada 2 (dua) jenis DML adalah
sebagai berikuit :
1). Prosedural, yang mensyaratkan pemakai menentukan, data apa yang diinginkan serta
bagaimana cara mendapatkannya.
2). Nonprosedural, yang membuat pemakai dapat menentukan data apa yang diinginkan
tanpa menyebutkan bagaimana cara mendapatkannya.
Hasil Query
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.
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
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 ?.
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.
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.
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)
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.
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).
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.
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
No_proyek (PK) NIK (PK)
Tgl Mulai Nama
Tgl Selesai Alamat
Anggaran ….
Relasi Proyek_pegawai
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.
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 ?.
BAB 5
ANOMALI DAN INTEGRITAS DATA
PADA MODEL RELASIONAL
5.1. Anomali
Anomali adalah proses pada basisdata yang memberikan efek samping yang tidak diharapkan
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:
Anomali Peremajaan (Update)
Anomalsi Penghapusan (Delete), dan
Anomali Penyisipan (Insert).
Berikut ini adalah contoh relasi KRS (Kartu Rencana Studi) mahasiswa pada suatu perguruan tinggi.
Dalam relasi ini terdapat 8 (delapan) atribut, yaitu nim,nama_m,kdmk,nama_mk,sks,smt,tahun dan
status_ambil, dengan data – data yang ada sebagai berikut:
beberapa
Row 1 matakuliah untuk semester dan tahun akademik tertentu. Masalahnya, bagaimanakah
Row 2 fakta bahwa ada suatu matakuliah baru yang tidak diambil oelh mahasiswa ?. Penyisipan
menyimpan
Row 3
tidak
Rowbisa 4 dilakukan karena tidak ada informasi mahasiswa yang mengambil matakuliah tersebut.
Row c. 5Anomali Penghapusan (Delete).
Row 6
Row 7 Anomali peremajaan terjadi apabila suatu baris (record) yang tidak terpakai dihapus,
akibatya ada data lainnya yang hilang.
Pada contoh relasi HRS tersebut terjadi anomali penghapusan, apabila data pada record
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
baerikut :
AB
B
Pengertian dari notasi tersebut adalah : A secara fungsional menentukan B, atau B secara
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
S
S
Gambar 5.2. Ketergantungan fungsional
Contoh Non KF :
0. Nama_kul Nim, artinya adalah atribut Nim tidak tergantung pada Nama_kul. Buktinya bahwa
Row 1 dan row 2, dengan nilai Mata_kul sama tetapi nilai Nim – nya tidak sama.
0. Nim Indeks_nilai, artinya adalah bahwa atribut Indeks_nilai tidak hanya tergantung pada
Nim. Buktinya terlihat pada row 1 dan 6, dengan nilai Nim sama, tapi nilai Indeks_nilai – nya
00
ng
Pada relasi rekening diatas mempunyai pengertian sebagai berikut yang berhubungan dengan
:
Domain dari atribut Status adalah { Saving, Checking }, yang mempunyai arti adalah
mungkin diberikan pada atribut status adalah hanya Saving dan Checking
Domain dari atribut Saldo, adalah semua bilangan nyata yang positif, domain atribut ini
gugus tak hingga.
Domain atribut No_Rekening adalah semua kode rekening yang meungkin dikeluarkan
tersebut.
Integritas data mengacu ke konsistensi dan akurasi data yang disimpan dalam basisdata.
Domain Integrity (column)
as data mengacu ke konsistensi dan akurasi data yang disimpan dalam basisdata. Konstrain
integritas dispesifikasikan dan dipaksakan pada waktu yang berbeda, yaitu:
0. Ketika DBA mendefinisikan skema basisdata Entity
(lewat DDL),(rows)
Integrity DBA menspesifikasikan konstrain
yang harus selalu dipenuhi basisdata.
0. Ketika aplikasi basisdata dijalankan, DBMS melakukan Pemeriksaan untuk mencegah
pelanggaran dan mencegah perubahan – perubahan yang melanggar konstrain integritas.
Referensial
beberapa situasi, DBMS tidak melarang suatu aksi Integrity
yang dapat menimbulkan pelanggaran
(between tables
kemudian DBMS membuast tindakan – tindakan otomatis untuk memenuhi konstrain
Dengan demikian dijamin perubahan – perubahan pada basisdata tidak menghasilkan
melanggar konstrain integritas.
b. Integritas domain
Domain adalah nilai – nilai yang dimungkinkin diasosiasikan dengan setiap atribut.
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
tapi juga memungkinkan kita melakukan pemeriksaan query untuk menjamin perbandingan
dibuat mempunyai arti.
b. Integritas entitas
Null merepresentasikan suatu nilai untuk atribut dimana pada saat itu nilainya belum
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.
ai 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.
tempat_lhr varchar(25),
tgl_lahir datetime,
jkelamin varchar(10),
alamat varchar(90),
kota varchar(30),
kodepos char(5),
gajipokok numeric(9)
)
nama_d tidak boleh diisi dengan Null, sedangkan tempat_lhr, tgl_lahir, jkelamin,
alamat, kota, kodepos, gajipokok boleh diisi dengan nilai Null pada kalimat insert ataupun
update. Sementara nid dengan sendirinya adalah not null karena sebagai bagia dari kode
primer yang didefinisikan dengan primary key.
a. 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.
b. 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 ?.
BAB 6
BENTUK – BENTUK NORMALISASI
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, maka persoalan anomali tidak akan muncul lagi didalam kita melakukan
perancangan database.
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.
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.
Relasi matakuliah tersebut merupakan bentuk 1 NF, karena tidak ada atribut
yang bernilai ganda, dan tiap atribut satu pengertian yang bernilai tunggal.
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
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:
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.
Setiap seminar membutuhkan 2 instruktur.
Setiap siswa dibimbing oleh salah satu dari 2 instruktur seminar.
Setiap instruktur boleh hanya mengambil satu seminar saja.
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
2201002 Rahmad
2201004 Rahmad
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
Matakuliah Isi
Pengenalan Komputer Dasar Komputer
Pengenalan Komputer Pengenalan pengolahan kata
Pengenalan Komputer Pengenalan lembaran kerja
Matematika Differensial
Matematika Integral
Deal_Dist (Dealer_Distributor).
Dist_Kend (Distributor_Kendaraan).
Deal_Kend (Dealer_Kendaraan).
Gabungan ketiga relasi tersebut akan membentuk relasi DDK dan gabungan kedua
proyeksi diatas bisa jadi menghasilkan relasi antara yang salah, namum ketiganya akan
menghasilkan relasi sesuai aslinya.
Bentuk normal Kelima ( 5 NF ) yang terkadang disebut PJ/NF ( Projection Join /
Normal Form ), menggunakan acuan dependensi gabungan. Suatu relasi berada dalam 5 NF
jika dan hanya jika setiap dependensi gabungan dalam R tersirat oleh kunci kandidat relasi R.
Dealer 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
Sumber Jaya Truk Dyna
Asterindo Sedan Nissan
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) ?.
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..
PT REVANDA JAYA
Jl. Bekasi Timur No. 2
Bekasi Timur
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
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:
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
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
779 R02 S02 02/02/01 09/03/01 10
998 A01 G01 07/02/01 09/03/01 10
998 A02 G01 07/02/01 09/03/01 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 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
Relasi Faktur
No_Faktur Tanggal Jatuh_Tempo Kode_Supplier
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 }
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.
Supplier 1 N Faktur
Memiliki
* Kode_supplier
1
nama_supplier
* No_faktur
Tanggal
Jatuh_tempo
** Kode_supplier
FTI –Teknik Informatika URINDO :
Edisi 1 Tahun* 2007 – didik@urindo.ac.id
Kode_barang Refisi : 1
Terdiri
- Barang Nama_barang Dari
Harga
1 N
69
Bahan Kuliah:
Sistem Basis Data
Pengertian Hubungan (Relation) antar pada gambar ERD (entity relationship diagram)
pada gambar di atas adalah sebagai berikut:
a). Supplier ke Faktur relasinya adalah one to many, artinya adalah satu supplier mempunyai
banyak faktur, faktur punya relasi terhadap supplier.
b). Faktur ke Transaksi_Barang relasinya adalah one to many, artinya adalah satu faktur
mempunyai beberapa transaksi barang (satu faktur terdiri dari satu atau lebih transaksi
barang).
c). Barang ke Transaksi_Barang relasinya adalah one to many, artinya adalah satu barang bisa
terjadi beberapa kali transaksi pembelian barang.
Implementasi ERD (entity relationship diagram) physical pada contoh diatas, bisa dituangkan
kedalam database MS-Access aatau SQL Server, seperti terlihat pada gambar beikut ini:
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 ?.
BAB 8
MODEL DATA DAN ENTITY-RELATIONSHIP MODEL
Model data adalah sekumpulan konsep yang terintegrasi untuk mendiskripsikan data,
hubungan antar data dan batasan – batasannya dalam suatu organisasi. Model data
merepresentasikan suatu organisasi. Model data harus menyediakan konsep dasar dan notasi yang
memungkinkan perancang basis data dan pemakai utuk dapat mengkomunikasikan pemahamannya
mengenai organisasi data.
Pada model ini menjelaskan data pada tingkat konsepsi dan view, memakai
seluruh struktur lojik basis data dan menyediakan uraian tingkat tinggi dari
implementasi. Terdiri dari sejumlah fixed format record dengan berbagai tipe.
Pada model ini teradapat 3 (tiga) macam tipe,yaitu :
Model data relational.
Model data nerwork, dan
Model data hirarki.
Account
Number Balance
900 55
556 100000
647 1005366
801 10533
900 55
556 100000
FTI –Teknik Informatika URINDO :
Edisi 1 Tahun 2007 – didik@urindo.ac.id Refisi : 1
- 647 105366
801 10533
74
Bahan Kuliah:
Sistem Basis Data
Lowery Maple
Shiver Nort
Hodges Sidehill
Konsep database schema berhubungan dengan definisi type (bentuk) dalam bahasa
pemrograman, sedangkan konsep database instance berhubungan dengan definisi variable
dalam bahasa pemrograman. Sistem basis data mempunyain banyak schema berdasarkan
tingkat abstraksi yaitu:
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,
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.
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 menunjukkan adanya hubungan di antara sejumlah entiti yang berada dalam
sejumlah himpunan entiti yang berbeda. Misalkan himpunan entiti Mahasiswa berhubungan
dengan himpunan entiti Matakuliah.
Himpunan Relasi : kumpulan semua relasi diantara entiti – entiti yang terdapat pada
himpunan entiti – himpunan entiti tersebut. Istilah Himpunan relasi jarang digunakan, dan lebih
sering disingkat dengan Relasi saja.
Relasi Unary
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.
Relasi Treenary
Relasi yang terjadi dari hubungan3 (tiga) buah entiti. Contoh relasi ini adalah
hubungan antara Pasien, Tindakan dan Dokter.
Dokter
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.
Khusus Relasi Biner, relasi antar anggota dari dua himpunan entiti yang terlibat dapat
bersifat :
1 1 Rekening
Kustomer R1
R1 = Mempunyai
1 m Rekening
Kustomer R1
R1 = Mempunyai
m n Bank
Kustomer R1
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.
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 ) :
telp
nama
alamat
nim
Tglhir
FTI –Teknik Informatika URINDO :
Edisi 1 Tahun 2007 – didik@urindo.ac.id Refisi : 1
- Mahasiswa
m nilai
Nim
82
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 n
Mahasiswa Mempelajari Matakuliah
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 }
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
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.
hasil. Query adalah sekedar ekspresi yang melibatkan operator – operator itu. Hasil ekspresi adalah
relasi yaitu jawaban terhadap query.
SQL adalah bahasa yang deklaratif yang berarti tidak menspesifikasikan algoritma yang
digunakan untuk pengolahan query. Ekspresi relasional dapat dipandang sebagai spesifikasi algoritma
(meskipun dalam level lebih tinggi dibanding algoritma untuk bahasa pemrograman konvensional).
Pemrogram menggunakan query SQL, DBMS menggunakan aljabar relasional sebagai
bahasa antara dalam spesifikasi algoritma query. Langkah – langkah dalam DBMS untuk pengolahan
query adalah:
1. DBMS melakukan parsing terhadap string dari query SQL dan menerjemahkannya
menjadi ekspresi aljabar relasional yang dapat menuntun kedalam algoritma sederhana
yang tidak efisien.
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.
Dosen ={nid,nama_d,tempat_lhr,tgl_lahir,jkelamin,alamat,kota,kodepos,gpokok}
Primary key relasi Dosen adalah nid, karena tidak ada seorang dosen yang nid (nomor
induk dosen) sama dengan dosen yang lainnya.
Dengan data value sebagai berikut:
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:
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.
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:
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:
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:
R X S = {(x,y) | x R dan y S}
Operasi cartesian-product memungkinkan kita mengkombinasikan informasi beberapa relasi,
operasi ini adalah operasi biner. Sebagaimana telah dinyatakan bahwa relasi adalah subset hasil
cartesian-product dan himpunan domain relasi – relasi tersebut. Kita harus memilih atribut – atribut
untuk relasi yang dihasilkan dari cartesian-product.
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:
(Mengajar.nid=Dosen.nid Mengajar.kdmk=Matakuliah.kdmk) (sks>3 hari=‟Jumat‟
((( nama_d (Dosen)) X ( nama_mk,sks (Matakuliah)) X ( hari,jam_ke,waktu (Mengajar)))))
3. Hasilnya adalah:
b. Contoh 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:
R S = {x | x R atau X S}
Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang sama sehingga
jumlah komponennya sama.
R S
A B A 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:
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:
3. Hasilnya adalah:
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:
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:
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.
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:
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
1. Kita berkehandak mengekstrak tupel – tupel pada relasi Dosen yang mempunyai atribut
jkelamin adalah „Pria‟ dan memiliki atribut gajipokok adalah lebih besar dari 1000000.
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:
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:
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.
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))