Modul 2 - Database Dan Table
Modul 2 - Database Dan Table
Diktat
SISTEM MANAJEMEN BASIS DATA
BAB II
DATABASE DAN TABLE
A. Database
1.1. Pengertian Database
Dalam kegiatan tradisional, data disimpan pada lembaran-lembaran kertas,
kemudian lembaran-lembaran kertas tersebut disimpan pada sebuah map dan disusun
rapi pada sebuah lemari arsip. Penyusunannya diatur sedemikian rupa agar mudah
untuk ditemukan kembali. Untuk penyimpanan arsip tersebut membutuhkan suatu
ruangan khusus yang sering dinamakan sebagai ruangan arsip. Setiap map akan
diberikan kode tertentu untuk memudahkan pencarian. Setiap lemari juga akan
diberikan kode tertentu untuk memudahkan pencarian. Hal ini juga sering kita
jumpai di perpustakaan, dimana buku-buku disusun sedemikian rupa pada rak-rak
buku dan diberikan kode yang khusus atau unik. Tentunya juga akan membutuhkan
ruangan yang besar untuk menampung semua buku dan rak buku tersebut.
sebuah teknik pengelolaan data dalam jumlah yang besar menggunakan teknologi
komputer yang kita kenal dengan teknologi pengarsipan secara digital yaitu
database.
membutuhkan lemari arsip yang banyak dan tidak membutuhkan ruang khusus yang
besar. Sehingga efesiensi waktu, dan tempat akan dapat dilakukan dan data
tersimpan dengan aman.
∙ Sistem kontrol basis data (Database Control System) yang mengakses basis
data karena adanya perintah dari bahasa manipulasi data.
Sebagai latihan anda dalam membuat database, kita akan membangun sebuah
database sederhana yaitu dbBuku sebagai database. Dengan demikian, sintaks
yang anda ketikkan ada MySQL adalah:
MariaDB [(none)]> create database dbBuku;
Untuk menampilkan daftar nama database yang ada pada server MySQL, gunakan
perintah berikut ini:
MariaDB [(none)]> SHOW DATABASES;
Sebelum
database dapat digunakan, anda harus memilih terlebih dahulu database yang akan
digunakan dengan menggunakan perintah USE. Sintaks penggunaannya adalah:
USE <nama database>;
Dengan demikian, sebelum anda dapat membuat tabel dan objek-objek lain di dalam
database dbBuku, anda harus memilih database tersebut dengan menuliskan sintaks:
MariaDB [(none)]> use dbbuku;
Perintah DROP DATABASE tidak hanya menghapus nama database saja, tetapi
juga akan menghapus semua tabel dan objek lain yang ada di dalam database
tersebut, kemudian menghapus database itu sendiri. Maka dari itu, sebelum
menghapus
sebuah database anda harus memastikan betul bahwa database beserta dengan tabel
tabel nya memang benar-benar sudah tidak dibutuhkan lagi.
Perintah IF EXISTS bersifat opsional dan berfungsi untuk mencegah terjadinya
kesalahan perintah jika ternyata nama database yang akan dihapus tidak terdapat di
dalam server MySQL. Untuk mengapus database anda dapat menggunakan sintaks
berikut ini:
MariaDB [(none)]> drop database if exists dbbuku;
Perintah di atas hanya akan dieksekusi jika dalam server MySQL terdapat database
dengan nama dbBuku.
Perintah di atas akan menghapus database dan seluruh tabel atau objek lainnya yang
ada di dalam database dbBuku.
B. Tabel
Data di dalam basis data bersifat terpadu (integrated) dan berbagi data
(shared). Terpadu (integrated) berarti berkas-berkas yang ada pada basis data saling
terkait, terjadi keterhubungan data (dependensi data). Berbagi data (shared) berarti
data yang sama dapat dipakai atau digunakan oleh sejumlah pengguna dalam waktu
yang bersamaan. Sering dikenal dengan nama sistem multiuser atau banyak
pengguna.
Konsep basis data (database) ini dapat dipandang dari berbagai sudut, yaitu:
dari sisi sistem, basis data merupakan kumpulan tabel yang saling berhubungan.
Sedangkan sisi manajemen, basis data merupakan kumpulan data yang memodelkan
aktivitas-aktivitas yang terdapat di dalam suatu perusahaan atau organisasi. Terdapat
hirarki (tingkatan) basis data dan bagaimana keterhubungan antar tingkatan tersebut
dapat dilihat seperti gambar berikut ini:
field1, field2, dan seterusnya menunjukkan nama kolom yang akan dibuat
dalam tabel; sedangkan tipe data berfungsi untuk merepresentasikan jenis data dari
field bersangkutan.
TYPE bersifat opsional dan berfungsi untuk menentukan tipe tabel atau lebih
tepatnya tipe mesin penyimpanan (storage machine) dari tabel yang dibuat.
Untuk membuat tabel-tabel sesuai dengan studi kasus maka kita akan membuat
beberapa tabel yang saling berhubungan untuk database dbBuku.
Tabel KATEGORI
Tabel ini merupakan tabel referensi yang nantinya akan diisi dengan data kategori
buku. Tabel KATEGORI akan direlasikan dengan tabel BUKU melalui tabel bantu
(disebut tabel transaksi) dengan nama LINK_BUKU_KATEGORI.
Perintah di atas akan membuat tabel dengan nama KATEGORI yang berisi dua buah
kolom (field) dengan nama kategori_id dan kategori_nama. Kolom
kategori_id didefinisikan dengan tipe data int (integer). NOT NULL artinya
kolom ini tidak boleh kosong (harus berisi nilai) sedangkan AUTO_INCREMENT
digunakan untuk menaikkan nilai dari kolom ini setiap kali baris data dimasukkan ke
dalam tabel KATEGORI. Kemudia, kolom kategori_id dijadikan sebagai
primary key, yang berarti bahwa nilai dari setiap baris data pada kolom kategori_id
tersebut bersifat unik (berbeda antara baris yang satu dengan yang lainnya). Primary
key dalam suatu tabel bisa lebih dari satu kolom (field). Pada tabel KATEGORI kita
hanya mendefinisikan satu kolom atau satu field saja. Yang paling penting anda
perhatikan adalah, jika anda ingin menjadikan suatu kolom sebagai primary key
maka kolom tersebut harus didefinisikan dengan NOT NULL.
Jika anda mengetikkan pada MySQL, maka perintahnya seperti ini:
Database dan Tabel Halaman | 27
PS Teknologi Informasi UIN
Ar-Raniry Diktat Sistem
Manajemen Basis Data
Tabel PENGARANG
Tabel ini juga merupakan tabel referensi dan digunakan untuk menyimpan data
pengarang. Tabel PENGARANG akan direlasikan dengan TABEL BUKU melalui
tabel bantu (sering disebut tabel transaksi) dengan nama
LINK_BUKU_PENGARANG.
Perintah di atas akan membuat tabel PENGARANG yang terdiri dari dua buah kolom
yaitu kolom pegarang_id dan kolom pengarang_nama. Kolom yang
dijadikan sebagai primary key dalam tabel ini adalah pengarang_id. Dengan
demikian, pada saat pengisian data, setiap pengarang harus memiliki ID yang
berbeda.
Jika anda mengetikkan pada MySQL, maka perintahnya seperti ini:
Tabel PENERBIT
Tabel ini merupakan tabel referensi yang datanya akan diacu oleh tabel BUKU.
Fungsinya adalah untuk menyimpan data penerbit.
Perintah SQL nya:
Create table penerbit(
penerbit_id char(4) not null,
penerbit_nama varchar(50),
primary key(penerbit_id));
Perintah di atas akan membuat tabel PENERBIT yang terdiri dari dua buah kolom
yaitu kolom penerbit_id dan kolom penerbit_nama. Kolom yang dijadikan
sebagai primary key adalah penerbit_id. Sehingga setiap baris data yang
dimasukkan pada kolom penerbit_id harus memiliki ID yang berbeda. Nilai
penerbit_id inilah yang akan diacu oleh tabel BUKU.
Tabel BUKU
Tabel ini berfungsi untuk menyimpan data buku.
Perintah di atas akan membuat tabel BUKU yang terdiri dari tujuh kolom dengan
primary key buku_ISBN. Dalam tabel ini, kolom penerbit_id dijadikan sebagai
foreign key yang nilainya mengacu pada kolom penerbit_id dari tabel
PENERBIT. Ini berarti bahwa nilai penerbit_id yang akan diisikan ke dalam
tabel BUKU harus diambil dari salah satu nilai penerbit_id yang ada pada tabel
PENERBIT.
Foreign key dapat juga diartikan sebagai kunci pokok (primary key) pada tabel yang
lain (tabel yang menjadi referensi). Untuk membuat foreign key pada suatu tabel, kita
dapat menggunakan perintah sebagai berikut:
Foreign key(<nama kolom>)
References <nama tabel referensi>(<nama kolom pada tabel referensi>)
Jika anda mengetikkan pada MySQL, maka perintahnya seperti ini:
Tabel LINK_BUKU_PENGARANG
Tabel ini merupakan tabel bantu yang berfungsi untuk merelasikan antara tabel
BUKU dan tabel PENGARANG. Isi data dalam tabel ini hanya berupa perpaduan
antara nilai dari kolom buku_ISBN yang berasal dari tabel BUKU dan kolom
pengarang_id yang berasal dari tabel PENGARANG.
Perintah SQL nya:
Create table link_buku_pengarang(
buku_ISBN char(13) not null,
pengarang_id char(3)not null,
primary key(buku_ISBN, pengarang_id),
foreign key(buku_ISBN)
references buku(buku_ISBN),
foreign key(pengarang_id)
references pengarang(pengarang_id));
Pada studi kasus ini diasumsikan bahwa satu pengarang dapat menulis lebih dari satu
buku. Begitu juga satu buku dapat ditulis oleh lebih dari satu pengarang. Oleh karena
itu, selain didefinisikan sebagai foreign key, agar setiap baris data dalam tabel
LINK_BUKU_PENGARANG dapat bersifat unik, maka kita juga perlu
mendefinisikan
kolom buku_ISBN dan pengarang_id sebagai primary key.
foreign key(buku_ISBN)
references buku(buku_ISBN),
foreign key(kategori_id)
references kategori(kategori_id));
kategori_id int
kategori_nama varchar 25
Tabel Pengarang
Nama Field Type Data Panjang
pengarang_id char 3
pengarang_nama varchar 30
Tabel Penerbit
Nama Field Type Data Panjang
penerbit_id char 4
penerbit_nama varchar 50
Tabel Buku
Nama Field Type Data Panjang
buku_ISBN char 3
buku_judul varchar 75
penerbit_id char 4
buku_tglterbit date
buku_jmlhalaman int
buku_deskripsi text
buku_harga Decimal
Setelah kita membuat tabel di dalam sebuah database, pada studi kasus ini
kita menggunakan database dbBuku, kita dapat menampilkan daftar tabel apa saja
yang sudah kita buat, perintahnya sebagai berikut :
MariaDB [dbbuku]> SHOW TABLES;
Pada keadaan-keadaan tertentu, ada kalanya kita ingin mengubah nama tabel atau
struktur dari tabel yang sudah ada di dalam database. Untuk mengatasi
permasalahan seperti ini, kita perlu menggunakan perintah ALTER TABLE.
1) Mengubah Nama Tabel
MySQL mengizinkan kita untuk mengganti nama tabel yang ada di dalam
database.
Contoh:
Alter table kategori rename to kategori_buku;
2) Menambah Kolom
MySQL mengizinkan kita untuk menambah satu atau lebih kolom ke dalam
suatu tabel.
Contoh:
Alter table buku add column buku_sinopsis text;
3) Mengubah Kolom
Kolom dalam suatu tabel dapat diubah sesuai kebutuhan. Kita dapat
mengubah nama kolom, tipe data, maupun ukuran data yang dialokasikan.
Contoh:
Alter table buku change buku_ISBN buku_id char(15);
Perintah di atas akan mengubah nama kolom buku_ISBN pada tabel buku
menjadi buku_id dengan tipe data char memiliki panjang 15.
4) Menghapus Kolom
Kolom dalam suatu tabel dapat dihapus dengan menyertakan klausa DROP
COLUMN pada perintah ALTER TABLE.
Contoh:
Alter table buku drop column buku_sinopsis;
5) Menambah dan Menghapus Primary Key atau Foreign Key Primary key dan
foreign key dapat didefiniikan setelah tabel terbuat, yaitu dengan menambah
klausa ADD PRIMARY KEY dan ADD FOREIGN KEY pada saat
mengeksekusi perintah ALTER TABLE.
Contoh:
Alter table buku add primary key buku_id;
<nama kolom> adalah nama kolom yang akan dijadikan sebagai primary
key.
<nama kolom> adalah nama kolom yang akan dijadikan sebagai foreign
key.
Untuk menghapus primary key maupun foreign key dari suatu tabel, gunakan
klausa DROP PRIMARY KEY atau DROP FOREIGN KEY pada saat
mengeksekusi perintah ALTER TABLE.
<nama foreign key> adalah nama foreign key yang didefinisikan pada
saat membuat foreign key. Sebagai contoh, kita mendefinisikan foreign key
pada tabel BUKU dengan perintah sebagai berikut:
Constraint fk_buku_penerbit foreign key(penerbit_id)
reference penerbit(penerbit_id);
Contoh:
Alter table add index idxjudul(buku_judul);
Untuk menghapus indeks dari suatu tabel, gunakan klausa DROP INDEX
pada saat mengeksekusi perintah ALTER TABLE.
Contoh:
Alter table buku drop index idxjudul;
7) Menghapus Tabel
Tabel yang terdapat di dalam database dapat dihapus menggunakan perintah
DROP TABLE.
Akan tetapi jika anda menginginkan untuk menghapus beberapa tabel dalam
satu perintah, maka perintah SQL nya dapat diubah menjadi seperti berikut:
Drop table link_buku_kategori, link_buku_pengarang;
Contoh:
Insert into penerbit (penerbit_id,
penerbit_nama) Values (‘PB06’, ‘INFORMATIKA’);
Contoh:
Insert into penerbit Values (‘PB06’, ‘INFORMATIKA’);
Contoh:
Update penerbit
Set penerbit_nama=’INFORMATIKA BANDUNG’)
Where penerbit_id=‘PB06’;
Contoh:
Delete from buku
where buku_ISBN=’888-96771-3-5’;
Perintah di atas menghapus baris data pada tabel BUKU yang kolom
buku_ISBN-nya bernilai ‘888-96771-3-5’.
Perlu diperhatikan, pada saat anda menghapus baris data pada suatu tabel,
anda harus menyertakan kriteria atau kondisi, karena jika anda tidak
menyertakan kriteria atau kondisi maka semua baris data dalam tabel akan
terhapus.
Contoh:
Delete from buku;
Perintah di atas akan menghapus semua baris data pada tabel BUKU.
TRUNCATE ini lebih cepat dari perintah DELETE, karenan dengan perintah
TRUNCATE sebenarnya tabel dihapus (DROP TABLE) terlebih dahulu,
kemudian membuat ulang tabel baru dengan struktur yang sama dengan tabel
yang sebelumnya dihapus dan data kosong.
C. Relasi Tabel
Relasi tabel merupakan hubungan yang terjadi pada suatu tabel dengan tabel
lainnya, yang berfungsi untuk mengatur operasi suatu database. Menurut (Andria &
Lenawati, 2015) Relasi antar tabel adalah hasil dari model entity relationship
diagram. Diagram relasi ini akan memberikan gambaran rancangan basis data secara
fisik dan akan menghasilkan tabel-tabel yang akan digunakan dalam proses
implementasi sistem.
Relasi tabel juga dapat didefinisikan sebagai hubungan antara beberapa tabel
yang terdapat di dalam suatu database. Untuk menghubungukan antar tabel tersebut
dilakukan melalui primary key dan foreign key pada masing-masing tabel. Primary
key pada suatu tabel tidak hanya menjadi identitasi yang unik tetapi juga mewakili
suatu keadaan dari suatu entitas. Misalnya, Mahasiswa adalah sebuah entitas, entitas
mewakili objek yang sama di dalam suatu tabel. Setiap Mahasiswa memiliki NIM
sebagai suatu nilai yang unik sehingga dijadikan sebagai primary key karena semua
Mahasiswa memiliki NIM yang berbeda antara satu Mahasiswa dengan Mahasiswa
lainnya dan NIM tersebut tidak mungkin bersifat ganda. Foreign key adalah atribut
yang digunakan untuk melengkapi sebuah hubungan (relationship) antar dua buah
tabel. Sebagai contoh, Fakultas Saintek memilik beberapa program studi, yaitu
Arsitektur, Biologi, Kimia, Teknik Lingkungan dan Teknologi Informasi. Dimana
satu program studi dapat dimiliki oleh banyak Mahasiswa.
dari ketiga tabel tersebut. Secara strutkrur database maka kita akan membangun
database dbAkademik dengan ketiga tabel yang sudah disebutkan diatas. Dengan
demikian untuk membentuk sebuah basis data, kita harus melengkapi ketiga tabel
tersebut dengan tabel lain yang merepresentasikan keterhubungan (relasi)
antar-ketiganya. Berikut adalah data tambahan yang kita butuhkan untuk
menunjukkan adanya keterhubungan (relasi) antar tabel-tabel di dalam
dbAkademik tersebut:
Data Nilai, dengan data sebagai berikut:
kodeM namaMK nim nama Indeks_nil
K ai
∙ 3 mata kuliah sudah mempunyai data indeks nilai dan ada 3 mata kuliah yang
belum memiliki data indeks nilai.
Karakteristik dalam relasi merupakan dasar bagi penyusunan struktur relasi
yang akan digunakan sebelum penyimpanan data dapat dilakukan. Karakteristik
relasi tersebut yaitu (Sutanta, 2011) :
∙ Harus mempunyai nilai tunggal (single value) dan nilai yang tidak dapat
dibagi lagi (atomic value).
∙ Semua elemen data harus mempunya tipe dan ukuran yang sama. ∙
Masing-masing atribut dalam sebuah relasi mempunyai nama yang unik. ∙
Dalam sebuah relasi tidak ada dua record yang identik atau sama.
Dengan adanya tabel tambahan yaitu tabel nilai yang menunjukkan relasi
antar tabel-tabel sebelumnya, maka syarat minimal sebuah basis data telah
terpenuhi. Yang paling penting diperhatikan adalah dalam relasi tabel ini adalah
bagaimana tabel tabel itu dapat digunakan untuk operasi-operasi berikutnya
(pencarian data, pengubahan data hingga penghapusan data) sehingga kita dapat
melakukannya dengan cepat dan mudah.
Referensi:
Andria, & Lenawati, M. (2015). Perancangan basis data sistem pembayaran sport
center berbasis MySQL. Jurnal Data Manajemen Dan Teknologi Informasi
(DASI), 16(4), 17–22.
Asmara, R. (2016). Sistem informasi pengolahan data penanggulangan bencana
pada kantor BPBD Kabupaten Padang Pariaman. Jurnal J-Click, 3(June), 4–13.
Connolly, T., & Begg, C. (2005). Database System; A Practical Approach to
Design, Implementation, and Management (Fourth Edi).
Kusnendar, J. (2009). Perangkat lunak untuk mentransformasikan model entity
relationship ke model relational. Jurnal Pendidikan Teknologi Informasi Dan
Komunikasi (PTIK), 2(2), 16–24.
Raharjo, B. (2015). Belajar Otodidak MySQL: Teknik Pembuatan dan Pengelolaan
Database. Penerbit INFORMATIKA.
Rahmad, M. B., & Setiady, T. (2014). Perancangan Sistem Informasi Inventory
Spare Part Elektronik Berbasis Web PHP. Jurnal Sarjana Teknik Informatika,
2(2), 10.
Sutanta, E. (2011). Basis Data dalam Tinjauan Konseptual. Penerbit ANDI.
Swara, G. Y., & Pebriadi, Y. (2016). Rekayasa perangkat lunak pemesanan tiket
bioskop berbasis web. Jurnal TEKNOIF, 4(2), 27–39.
Database dan Tabel Halaman | 47