Modul SQL STI - Database PDF
Modul SQL STI - Database PDF
BASIS DATA
Disusun Oleh:
Fauzi Adi Rafrastara, M.CS
Slamet Sudaryanto N., ST, M.Kom
Danang Wahyu Utomo, M.Kom
Dr. Aripin, M.Kom
DAFTAR ISI
Bab 1
PENGANTAR BASIS DATA
laporan yang berguna untuk organisasi. Model yang demikian ini, kelak
dikenal dengan istilah File-Based System atau File-Based Method.
Setelah sekian dekade berlalu, teknologi komputer mengalami
perkembangan yang cukup signifikan, diantaranya yaitu dalam hal data
processing dan information management. Adanya evolusi pada kedua
hal tersebut, turut membawa perubahan pula pada metode penyimpanan
data, hingga pada akhirnya dikembangkanlah suatu sistem database yang
canggih dan modern. File-based method yang dibuat pada tahun 1950-
an dirasa tidak mampu memenuhi kebutuhan, maka dibangunlah sistem
database yang terintegrasi hingga seperti yang ada sekarang ini. Dengan
adanya perkembangan ini, file-based system bukan berarti sudah tidak
digunakan lagi, pada area-area tertentu ia masih tetap eksis. Evolusi
teknologi sistem basis data, dapat dilihat pada gambar Gambar 1.
lain, basis juga dapat diartikan sebagai markas, gudang, juga tempat
bersarang/berkumpul.
Sedangkan data, memiliki arti yaitu informasi dalam bentuk yang dapat
diproses oleh komputer, seperti representasi digital dari teks, angka,
gambar grafis, atau suara (KBBI). Data juga dikenal sebagai representasi
dari fakta dunia nyata yang mewakili suatu objek seperti manusia
(pegawai, siswa, pembeli, pelanggan), barang, hewan, peristiwa, konsep,
keadaan dan sebagainya.
Dengan demikian, basis data dapat didefinisikan sebagai himpunan
kelompok data (arsip) yang saling berhubungan dan diorganisasi
sedemikian rupa agar kelak dapat dimanfaatkan kembali dengan cepat
dan mudah. Definisi lain terkait basis data adalah kumpulan informasi
yang terorganisir sehingga dapat dengan mudah diakses, di-manage, dan
di-update.
Pada dasarnya, basis data memiliki prinsip kerja yang sama seperti lemari
arsip, yaitu pengaturan dan penyimpanan data/arsip. Tujuan dasar dari
keduanya pun sama, yaitu untuk kemudahan dan kecepatan dalam
pengambilan kembali suatu data/arsip.
Perbedaan antara basis data dan lemari arsip hanyalah pada sisi pengelola
dan media penyimpanan yang digunakan. Dari sisi pengelola, lemari
arsip dikelola oleh manusia. Proses penyimpanan, pilah-memilah, serta
pengurutan dokumen dilakukan secara manual oleh manusia. Sedangkan
pada basis data, manusia hanya berperan sebagai operator, dan
mesin/komputer lah yang bertindak dalam tataran teknisnya. Berkaitan
dengan media penyimpanan, pada lemari arsip, semua dokumen
disimpan dan ditata rapi pada lemari arsip konvensional, berupa lemari
besi atau kayu. Pada basis data, data-data tersebut disimpan secara
elektronik, yaitu pada media penyimpanan seperti HDD, SSD, dll.
12 Judul Modul
Hirarki Data
Dalam era informatika seperti saat ini, segala sesuatu melibatkan data
data dan data. Sangat penting bagi kita untuk memahami lebih dulu apa
itu data, dan apa yang membentuk suatu data. Sebelum kita memahami
sesuatu yang utuh, maka kita perlu terlebih dahulu memahami bagian-
bagiannya.
Ibarat mainan lego, data pada awalnya seperti bricks yang belum
tersusun. Ketika mereka masih tercerai-berai maka sulit untuk
mendapatkan manfaat atau pengetahuan darinya. Namun, ketika bricks
mulai disusun, maka akan dapat menghasilkan objek yang menarik dan
penuh makna. Data juga demikian, yaitu perlu dikumpulkan lebih dahulu
untuk kemudian disusun sedemikian rupa sehingga bisa menghasilkan
informasi yang bermakna.
Sekumpulan data dalam tingkatan tertinggi disebut sebagai database.
Sebuah database merupakan kumpulan dari beberapa file atau tabel.
Sebuah file atau tabel dibentuk dari beberapa record (baris). Dan sebuah
record berisi beberapa nilai pada field (kolom). Sebuah field, tersusun
dari beberapa bytes dan byte inilah yang dibentuk dari sekumpulan bit-
bit data. Demikianlah hierarki data, berawal dari bit hingga menjadi
database (lihat Gambar 3).
15
Bab 2
LINGKUNGAN DAN SISTEM
BASIS DATA
terakhir yang terlibat dalam sistem basis data adalah Sistem Operasi
(Operating System). Di sini OS memainkan peranan yang sangat penting,
yaitu mengelola semua komponen hardware agar software-software dapat
berjalan dengan baik di komputer.
4. Pengguna (User): user merupakan orang atau sekumpulan orang yang
berinteraksi dengan sistem basis data dengan cara langsung maupun tidak
langsung. Sedikitnya ada 4 jenis user yang berinteraksi dengan database,
yaitu: programmer aplikasi, end user, database administrator (DBA), dan
desainer basis data (database designer). Penjelasannya adalah
sebagai berikut:
Database designer: orang atau tim yang bertugas mendesain struktur
basis data.
Programer aplikasi (application programmer): orang atau tim yang
bertugas menulis kode program atau membangun aplikasi yang
terhubung ke database, sekaligus menyesuaikannya dengan desain
yang telah dibuat oleh database designer.
End user: orang atau tim yang berinteraksi secara langsung dengan
sistem atau aplikasi dari komputer yang terhubung ke database baik
secara online maupun offline. User jenis ini mengakses database
melalui program aplikasi yang dibangun oleh application
programmer. Contoh: kasir, petugas administrasi, dll.
Database administrator (DBA): orang atau tim yang bertanggung
jawab terhadap semua kendali pada sistem pada tataran teknis. DBA
harus merupakan orang yang benar-benar paham tengan dunia IT (IT
Professional). DBA merupakan pengendali utama dari suatu sistem
basis data yang senantiasa memantau dan mengelola segala sumber
daya, seperti database, DBMS, dan program aplikasi terkait.
21
mereka tentang hal-hal teknis terkait basis data. Namun, arsitektur ini
justru cocok dan disukai oleh deainer basis data dan juga programmer.
Sedangkan pada arsitektur 2-tier, DBMS harus menyediakan aplikasi
untuk mempermudah akses data ke dalam basis data. Dalam
pengembangan suatu sistem, programmer akan menggunakan arsitektur
2-tier apabila dibutuhkan media aplikasi guna mengakses basis data. Di
sini, aplikasi yang dibangun tersebut sepenuhnya bersifat independen
dari suatu basis data, khususnya dalam hal pegoperasian, desain, dan
pemrogramannya.
Selanjutnya terkait dengan arsitektur 3-tier, ia memisahkan masing-
masing tingkatannya berdasarkan kompleksitas dari pengguna serta
bagaimana mereka menggunakan data yang ada di dalam basis data.
Arsitektur ini merupakan salah satu arsitektur yang paling umum
digunakan untuk mendesain suatu DBMS. Gambaran arsitektur 3-tier
tampak pada Gambar 5.
Arsitektur 3-tier ini merupakan salah satu arsitektur yang paling umum
digunakan, mengingat adanya beberapa keunggulan dibanding arsitektur-
arsitektur lain, khususnya yang berkaitan dengan kemudahan dalam melakukan
perluasan sistem secara horizontal (horizontal scalability), serta peningkatan
performa dan ketersediaan data (availability). Dengan arsitektur jenis ini,
masing-masing bagian (tier) memungkinkan untuk dibangun secara bersama-
sama, dalam waktu yang sama (concurently) oleh tim programmer yang
berbeda, sekalipun dengan menggunakan bahasa pemrograman yang berbeda
pula. Dengan keunggulan ini, maka apabila ada sebuah tier yang hendak
dimodifikasi, maka hal tersebut dapat dilakukan tanpa berpengaruh pada tier-
tier yang lain. Arsitektur 3-tier menjadikan segalanya lebih mudah khususnya
untuk perusahaan besar atau software packager untuk terus membenahi suatu
aplikasi seiring dengan meningkatnya kebutuhan dan tantangan suatu
perusahaan/instansi. Aplikasi-aplikasi yang sudah ada tersebut (atau bisa juga
sebagian dari aplikasi tersebut) dapat secara permanen atau sementara tetap
digunakan kemudian dibungkus hingga menjadi komponen pada tier baru.
Abstraksi Data
Abstraksi data (data abstraction) adalah upaya penggambaran suatu proses/data
dengan cara menampilkan beberapa karakteristik yang dibutuhkan, namun di
sisi lain juga menyembunyikan beberapa detil atau bagian yang tidak
dibutuhkan. Kebutuhan akan abstraksi data sangat tergantung dari sudut
pandang seseorang yang disesuaikan dengan peran dari orang tersebut.
Singkatnya, seseorang pada peran tertentu hanya perlu fokus pada suatu
abstraksi pada level tertentu saja. Pengguna dari sistem basis data hanya
menggunakan data sesuai porsinya. Mereka tidak perlu untuk mengetahui
struktur data yang kompleks dan bagaimana suatu data tersebut disimpan. Oleh
karena itu, hal-hal yang sekiranya tidak penting atau tidak dibutuhkan oleh
pengguna dapat disembunyikan (tidak ditampilkan). Inilah yang dinamakan
dengan abstraksi data.
Ada tiga level pada abstraksi data, yaitu:
1. Level Eksternal (External Level). Nama lain dari level ini yaitu level
pandangan/penampakan (view level). Abstraksi data pada level ini
fokus pada sesuatu yang terlihat oleh pengguna sistem informasi (pada
kasus berikut ini terdiri dari peminjam dan petugas perpustakaan). Jenis
pengguna yang berbeda seringkali memiliki tampilan user interface
yang berbeda pula. Tampilan yang disediakan tersebut mewakili porsi
26 Judul Modul
Gambar 9: Contoh user interface dan data-data yang bisa dilihat oleh peminjam
2. Petugas perpustakaan: mereka butuh untuk dapat mengakses
rekaman peminjaman dari semua pengguna/peminjam dengan cara
memasukkan kode peminjam. Selain itu, mereka juga perlu untuk dapat
melihat sekaligus mencetak data keterlambatan berdasarkan tanggal.
30 Judul Modul
Gambar 10: Contoh laporan dengan data-data yang bisa dilihat oleh petugas
perpustakaan
3. Baik peminjam maupun petugas perpustakaan tidak membutuhkan
informasi terkait dengan struktur basis data dan bagaimana data di
simpan.
Gambar 11: Contoh ragam bentuk view dari pengguna (peminjam dan petugas)
Gambar 12: Ilustrasi cara pandangan seorang designer basis data atau DBA
terhadap database sistem informasi perpustakaan kampus
1. Di level ini melibatkan dua jenis pihak lain yang terlibat dalam sistem
basis data, yaitu desainer basis data (database designer) dan
administrator basis data (database administrator).
2. Desainer basis data: merupakan orang yang mendesain dan membuat
sistem basis data.
3. Administrator basis data: merupakan orang yang bertanggung jawab
dalam memelihara dan mengawasi/memantau sistem basis data. Peran
seperti ini seringkali disebut sebagai DBA (Database Administrator).
4. Terkadang peran sebagai database designer dan DBA diperankan oleh
orang yang sama.
5. Baik desainer maupun DBA harus memahami dan mengerti tentang
struktur basis data. Keduanya pun harus mengetahui data apa yang
disimpan dan bagaimana data direlasikan ke basis data. Sebagai contoh,
dalam basis data relasional, yang perlu mereka kuasai yaitu struktur
tabel dan hubungan antar tabel-tabelnya.
6. Meskipun keduanya harus menguasai struktur dan relasi data yang ada,
namun keduanya tidak perlu mengetahui lebih dalam dari itu, seperti
bagaimana tabel-tabel tersebut secara fisik berada dan disimpan di
dalam media penyimpanan (misal harddisk).
32 Judul Modul
Gambar 14: Contoh desain logis (logical design) dari sistem informasi
perpustakaan kampus
dengan basis data. Untuk tabel buku di dalam basis data, aka nada
sekumpulan file dengan beberapa ekstensi, seperti: buku.frm,
buku.myd, dan buku.myi.
Bab 3
MODEL DATA RELASIONAL
nomor teleponnya. Akibatnya kita bisa saja mencarinya halaman demi halaman
hingga kita menemukannya. Dan pada saat menemukan nomor yang dituju,
barang kali rumah yang terbakar sudah tinggal menjadi abu, akibat lamanya
proses pencarian satu nama dalam satu buku saja. Proses pencarian tersebut
terjadi sangat lama akibat desain susunan nama dan nomor telepon berbasiskan
tanggal nomor telepon dibuat. Singkatnya, di sini terjadi permasalahan desain
buku daftar telepon. Beruntungnya, buku telepon yang ada selama ini,
pengurutannya berbasiskan huruf abjad pada nama pemilik nomor telepon,
bukan berdasarkan kapan nomor telepon dikeluarkan.
Pada zaman sekarang, dimana informasi sudah mudah diakses secara digital,
kesalahan desain pada ilustrasi keadaan di atas bisa lebih diminimalisir dengan
melibatkan basis data. Bab ini akan mempelajari tentang desain basis data, yang
diantaranya adalah Model E-R dan Model Data Relational.
Dalam membangun model data konseptual ini, model harus diuji dan divalidasi
terhadap kebutuhan pengguna (users’ requirements) untuk memastikan
ketepatannya. Model ini merupakan sumber informasi untuk model pada tahap
berikutnya, yaitu desain basis data logis (logical database design).
Langkah-langkah yang perlu di lakukan dalam tahap desain konseptual ini
adalah sebagai berikut:
1. Mengidentifikasi tipe entitas.
2. Mengidentifikasi tipe hubungan (relationships).
3. Mengidentifikasi serta mengasosiasikan atribut dengan tipe entitas
maupun hubungan.
4. Menentukan domain atribut.
5. Menentukan atribut yang bertindak sebagai kunci (key) kandidat
(candidate key), primary (primary key), maupun alternatif (alternate
key).
6. Mempertimbangkan penggunaan konsep pemodelan tingkat lanjut
(opsional).
7. Memeriksa keberadaan redudansi pada model.
8. Memvalidasi model konseptual terhadap transaksi pengguna.
9. Mereview model konseptual bersama dengan pengguna.
Selain itu, model data logis harus diperiksa pula untuk memastikan bahwa ia
sesuai dengan scenario atau transaksi yang ditetapkan oleh user. Model ini
merupakan sumber informasi penting untuk menuju ke tahap berikutnya, yaitu
desain basis data fisik (physical database design), yang menyediakan amunisi
dan keperluan yang dibutuhkan oleh perancang basis data (database designer)
dalam membuat suatu rancangan yang baik, tepat dan efisien. Model ini juga
memainkan peranan penting di dalam kegiatan pemeliharaan rutin atau kegiatan
opereasional lain, sebagaimana terdapat pada Database System Development
Lifecycle. Dengan adanya model data yang baik, kelak jika dibutuhkan adanya
perubahan pada program aplikasi maupun pada data di masa mendatang, maka
perubahan tersebut dapat diakomodir dengan sangat cepat dan tepat.
Langkah-langkah yang perlu di lakukan dalam tahap desain logis ini adalah
sebagai berikut:
1. Mendapatkan relasi dari model data logis.
2. Memvalidasi relasi menggunakan normalisasi.
3. Memvalidasi relasi terhadap transaksi pengguna.
4. Memeriksa aturan integritas (integrity constraints).
5. Memeriksa model data logis bersama pengguna (users).
6. Menggabungkan beberapa model data logis menjadi model global
(opsional).
7. Memeriksa kehandalan model logis ini untuk beradaptasi terhadap
kemungkinan-kemungkinan perubahan di masa mendatang.
Hal pertama kali yang perlu dilakukan dalam membangun desain basis data fisik
ialah mengidentifikasi DBMS yang akan digunakan. Selanjutnya, baru desain
fisik bisa disesuaikan dengan DBMS tersebut. Desain logis dan fisik memiliki
keterkaitan yang sangat erat, bahkan bisa saling menyesuaikan. Hal ini terjadi
karena keputusan akhir dibuat pada saat tahap desain fisik guna meningkatkan
performa suatu system, yang tidak jarang akan berefek pada penyesuaian
struktur pada model data logis.
Langkah-langkah yang perlu di lakukan dalam tahap desain fisik ini adalah
sebagai berikut:
1. Menterjemahkan model data logis pada DBMS, yaitu: mendesain
relasi, representasi data, hingga aturan umum pada DBMS.
2. Mendesain index dan organisasi file, yang meliputi: analisa transaksi,
memilih organisasi file, memilih pengindeksan, dan mengestimasi
media penyimpanan yang dibutuhkan.
3. Mendesain user view.
4. Mendesain mekanisme pengamanan basis data.
5. Mempertimbangkan adanya redudansi yang terkontrol dengan
melonggarkan aturan-aturan normalisasi, yang terkadang malah bisa
meningkatkan performa sistem.
6. Memantau dan menjaga sistem yang beroperasi agar tetap berjalan
dengan baik, bahkan bila perlu melakukan penyesuaian-penyesuaian
agar lebih baik lagi.
Pemodelan Data
Suatu DBMS memungkinkan kita untuk menyimpan dan menarik/mengambil
data. Data sendiri berisikan suatu fakta yang mana akan berubah menjadi
informasi yang berguna dan mudah dipahami setelah diproses lebih lanjut.
Informasi tersebutlah yang pada akhirnya akan disampaikan kepada manusia
atau dalam hal ini adalah pengguna (user).
Saat mendesain suatu basis data, desainer harus terlebih dahulu memutuskan
data apa saja yang akan disimpan di database. Struktur dan relasi antar data harus
ditentukan. Oleh karena itu, seorang desainer membutuhkan metode untuk
membuat suatu basis data yang tepat untuk kebutuhan pengguna. Metode inilah
yang disebut sebagai Model atau Model Data.
Model sendiri merupakan abstraksi dari suatu proses yang mana
menyembunyikan detail-detail tertentu yang tidak dibutuhkan, dan sebaliknya
43
Model E-R
Entity-Relationship Model umumnya diekspresikan dengan menggunakan E-R
Diagram (dibahas di Bab 4). Model Entity Relational (E-R) pertama kali
diperkenalkan pada 1976, oleh Peter Pin-Shan Chen (陈品山). E-R Model
merupakan high-level conceptual data model yang paling populer sekarang ini.
Model ini merupakan cara yang sistematis dalam mendeskripsikan dan
mendefinisikan suatu conceptual database design process. Di sini, E-R Model
memandang dunia nyata (real world) sebagai kumpulan dari objek-objek dasar
(dikenal dengan entitas) beserta karakteristiknya (atribut), juga hubungan antar
objeknya (relationship/relasi). Entitas, atribut, dan relasi merupakan 3
komponen utama dalam E-R Model
Setidaknya ada empat kelebihan dari E-R Model ini, yaitu:
E-R Model mampu menggambarkan kebutuhan-kebutuhan data pada
dunia nyata dengan cara yang sederhana, logis, dan informatif.
Entitas dan atribut pada E-R Model dapat dengan mudah dikonversi
menjadi Tabel dan kolom (atau field) dalam Relational Model.
Sebagai Design Plan, E-R Model dapat diimplementasikan di DBMS
apapun.
Sederhana dan mudah untuk dipahami, menjadikan E-R Model sangat
efektif digunakan untuk berkomunikasi antara desainer dan end user,
terkait rancangan yang hendak dibuat.
Ada beberapa istilah yang menjadi dasar dari E-R Model:
Enterprise: merujuk pada suatu organisasi, seperti sekolah, universitas,
bank, dll.
Entity: merujuk pada objek pada dunia nyata, seperti mahasiswa, siswa,
karyawan bank, dll.
Attributes: merupakan karakteristik dari suatu entitas, contoh: entitas
mahasiswa memiliki atribut seperti NIM, nama, alamat, tgl lahir, dll.
Value: merupakan informasi atau data yang disimpan pada setiap atribut
masing-masing data.
Entity Sets: entitas-entitas yang memiliki atribut yang sama menghasilkan
himpunan entitas.
Domain (Value Set): merupakan himpunan dari semua nilai atau
informasi tentang suatu atribut.
45
Model Relasional
Sebelum mode relasional dikembangan, kebanyakan dari software basis data
menggunakan struktur pohon (tree) dalam menyimpan data ke database.
Sebenarnya metode ini sangatlah kompleks, khususnya dalam mengelola relasi
antara data atau database. Akibat dari kerumitan-kerumitan tersebut, maka
diusulkanlah metode yang lebih sederhana sekaligus elegan, yang dinamakan
dengan Model Data Relasional atau Relational Data Model (RDM).
RDM menyimpan data dalam bentuk tabel. Dan salah satu fitur penting yang
dibawa oleh RDM adalah sebuah database tunggal yang dapat dipecah ke dalam
beberapa tabel. Dalam hal ini, kumpulan dari tabel-tabel tersebut
merepresentasikan data dan juga relasinya. Masing-masing tabel terdiri dari
beberapa kolom, dan masing-masing kolom ditandai dengan nama-nama yang
unik. Keterhubungan (relationship) antara dua tabel tersebut ditunjukkan oleh
tabel ketiga, dimana salah satu kolom/field dari kedua tabel sama-sama diambil
dan dijadikan kolom/field pada tabel ketiga tersebut. Dengan demikian, sebuah
tabel bernama Customer-Amt telah berhasil terbentuk.
Beberapa kelebihan Model Data Relasional, diantaranya adalah:
1. Database RDM dapat digunakan pada komputer dengan memori dan
kemampuan pemrosesan yang terbatas.
2. RDM sangat mudah untuk digunakan.
3. RDM memungkinkan sistem komputer untuk menangani beragam
permintaan dengan cara yang efisien.
4. RDM sangat berguna untuk basis data skala kecil.
5. RDM mampu meningkatkan performa sistem karena ia fokus pada
data, bukan pada struktur.
46 Judul Modul
Bab 4
DIAGRAM E-R
Struktur logis dari suatu basis data dapat diekspresikan secara grafis dengan
menggunakan bantuan diagram, salah satunya yang dikenal dengan nama
Diagram E-R (Entity-Relationshiop Diagram). Entity-Relationship Diagram
atau yang sering disingkat dengan ERD merupakan representasi visual dari data
yang menjelaskan bagaimana data-data saling terhubung satu sama lain. ERD
pertama kali dikembangkan pada tahun 1970 oleh Dr. Peter Chen bersama
timnya. ERD dianalogikan sebagai fotokopi dari struktur data. Diagram ini
mampu menyederhanakan konsep penyimpanan data yang besar dan kompleks.
Diagram E-R dibangun berbasiskan persepsi dari kondisi nyata (real-world)
yang terdiri dari kumpulan objek-objek dasar yang bernama entitas dan relasi
antar objek-objek tersebut. ERD memiliki beberapa manfaat dan tujuan,
diantaranya yaitu:
1. Digunakan untuk mengkomunikasikan struktur logis suatu basis data
kepada end users atau pengguna akhir.
2. Membantu desainer basis data dalam memahami informasi-informasi
apa saja yang perlu disimpan di suatu basis data.
3. Sebagai salah satu tool dokumentasi basis data.
Mengidentifiasi tipe
5. Diamond ganda
relasi
Atribut multi-nilai
6. Elips ganda (multi-valued
attributes)
49
Partisipasi penuh
10. Garis ganda
(total participation)
Partisipasi sebagian
11. Garis tunggal (partial
participation)
Spesialisasi atau
12. Segitiga
generalisasi
Entitas
Entitas (entity) merupakan sebuah objek nyata (real world object) yang
memiliki ciri-ciri khusus yang disebut dengan properties. Suatu objek harus bisa
dibedakan dari objek-objek yang lain, sebagai contoh: mahasiswa, karyawan,
dokter, dan politisi. Masing-masing entitas tersebut tentu bisa dibedakan dari
entitas-entitas yang lain, karena memiliki ciri-ciri yang berbeda.
Pada diagram E-R, entitas digambarkan dengan symbol kotak, sebagai contoh:
Himpunan Entitas
Entitas merupakan objek dasar dari model E-R. Entitas merupakan sebuah objek
di dunia nyata (real world) yang memiliki ciri-ciri (properties/attributes)
51
Atribut
Atribut merupakan suatu deskripsi yang digunakan untuk mengidentifikasi,
mengklasifikasi atau bahkan menjelaskan terbentuknya suatu entitas atau relasi-
relasinya. Pada setiap atribut, kumpulan dari nilai-nilainya (values) disebut
dengan Domain. Dan suatu atribut yang membentuk suatu entitas dengan nilai-
nilai yang unik disebut sebagai Primary Key. Jika pada suatu tabel tidak ada
atribut yang bertindak sebagai primary key (dengan nilai-nilai yang unik), maka
satu buah atribut baru ditambahkan dengan tugas menjadi Primary Key. NIM
(Nomor Induk Mahasiswa) dan NIK (Nomor Induk Karyawan) merupakan
Primary Key dari masing-masing tabel Mahasiswa maupun Karyawan, karena
keduanya bersifat unik, alias tidak ada mahasiswa atau karyawan yang memiliki
nomor identitas yang sama.
52 Judul Modul
Gambar 23: (a) tabel penyakit tanpa primary key; (b) tabel penyakit dengan
primary key
Secara aturan, atribut hanya boleh muncul dalam 1 tempat saja di suatu model,
baik ketika atribut tersebut masuk dalam kategori dibutuhkan (required)
ataupun opsional. Jika suatu atribut tergolong sebagai atribut yang dibutuhkan,
maka ia wajib memiliki nilai (tidak boleh kosong). Namun jia ia tergolong
sebagai atribut yang opsional, maka ia boleh bernilai kosong atau tidak memiliki
nilai. Sebagai contoh, entitas ‘Tanaman’ memiliki 4 atribut, yaitu:
53
Gambar 24: Contoh diagram E-R dengan atribut dalam bentuk elips
6. Derived Attribute. Nilai dari atribut ini dapat diperoleh dari atribut atau
entitas lain. Sebagai contoh, atribut ‘usia’ bisa diperoleh dari
menghitung tahun sekarang dikurangi tahun lahir yang ada di atribut
‘tanggal_lahir’ (jika ada). Jika demikian, maka atribut ‘usia’ disebut
sebagai derived attribute, dan atribut ‘tanggal_lahir’ disebut sebagai
stored attribute. Penyimbolan derived attribute dapat digambarkan
dengan menggunakan elips bergaris putus-putus.
Constraint
Bahasan tentang constraint masih terkait dengan subbab sebelumnya, yaitu
Relasi dan Kardinalitas. Konsep constraint pada relasi menjelaskan tentang
kekangan atau batasan jumlah relasi antara satu entitas dengan entitas lainnya.
Batasan yang dimaksud ialah batasan terkait jumlah minimum maupun
maksimum dari relasi yang menghubungkan suatu entitas. Constraint terdiri
dari dua, yaitu kardinalitas dan modalitas.
Cardinalitas (cardinality) digunakan untuk menentukan jumlah maksimal dari
suatu relasi. Jumlah maksimal tersebut bisa saja berjumlah 1 atau bahkan
banyak. Di sisi lain, modalitas (modality) ialah jumlah minimal yang boleh
digunakan pada suatu relasi antar entitas. Dengan adanya modalitas ini, maka
suatu hubungan antar entitas dapat diberi tanda apakah ia boleh memiliki 1 saja
atau bahkan nol buah relasi. Gambar 44 menjelaskan perbedaan lokasi peletakan
simbol pada kardinalitas dan modalitas, sedangkan macam-macam simbol
beserta penjelasannya ada pada tabel 7.
Gambar 44: Ilustrasi keberadaan kardinalitas dan modalitas pada suatu relasi
1. Satu (kardinalitas)
2. Banyak (kardinalitas)
Modalitas = 1, kardinalitas = 1,
3. artinya hanya akan terbentuk satu
buah relasi saja.
61
Himpunan Relasi
Sebagaimana himpunan entitas yang seringkali disebut sebagai entitas saja,
himpunan relasi pun demikian. Dalam banyak kasus, himpunan relasi hanya
disebut sebagai relasi saja. Sebenarnya, himpunan relasi ialah kumpulan
hubungan yang memiliki makna antara beberapa entitas. Sebelumnya telah
dibahas relasi antara manajer dan departemen, sebagaimana tampak pada
gambar berikut ini:
Gambar 48: Tampak himpunan relasi antara himpunan entitas Dokter dan
Pasien
Relation Keys
Suatu basis data dikatakan memiliki integritas apabila data-data di dalamnya
mengikuti aturan-aturan tertentu. Masing-masing aturan tersebut dinamakan
integrity constraints. Dalam basis data, constraint merupakan suatu batasan,
baik pada konten maupun pada operasi basis data. Oleh karena itu, entitas,
himpunan entitas, relasi, maupun atribut juga disebut sebagai constraints. Selain
yang disebut sebelumnya, masih ada lagi beberapa constraints yang tidak kalah
pentingnya dan dibutuhkan dalam diagram E-R, salah satunya yaitu: kunci atau
disebut juga dengan Key Constraints.
Kunci atau key merupakan salah satu komponen fundamental dalam basis data.
Sebuah key merupakan suatu atribut atau kumpulan atribut yang digunakan
untuk mengidentifikasi data dalam himpunan entitas. Atribut-atribut yang
digunakan sebagai key dikenal dengan sebutan key attributes atau atribut kunci,
sedangkan atirubut-atribut selain itu disebut dengan atribut non kunci (non-key
attributes).
63
3. Composite Key. Suatu key yang terdiri dari dua atau lebih
kolom/atribut disebut dengan composite key.
4. Primary Key. Suatu kolom/atribut yang dapat digunakan untuk
mengidentifikasi data secara unik dikenal dengan nama primary key.
Sebuah himpunan entitas boleh memiliki lebih dari satu candidate key,
namun hanya boleh memiliki satu primary key. Sebagai contoh, pada
himpunan entitas ‘Karyawan’ di atas, primary key-nya hanya boleh
salah satu saja, yaitu antara No_Registrasi atau NIK.
5. Foreign Key. Foreign key merupakan sebuah atribut pada himpunan
entitas manapun yang mana juga menjadi primary key pada himpunan
entitas lain. Sebagai contoh, atribut Kode_Dept merupakan atribut
biasa di dalam himpunan entitas ‘Karyawan’, namun ia merupakan
primary key pada himpunan entitas ‘Departemen’. Oleh karena itu,
Kode_Dept merupakan foreign key di himpunan entitas ‘Karyawan’.
6. Alternate Key. Semua candidate key selain yang menjadi primary key
pada suatu himpunan entitas dinamakan sebagai alternate key.
7. Secondary Key. Sebuah atribut atau sekumpulan atribut yang tidak
dapat digunakan untuk mengidentifikasi data secara unik, namun dapat
digunakan untuk mengidentifikasi suatu kumpulan data, disebut
dengan secondary key. Sebagai contoh, nama dan gaji dapat dianggap
sebagai secondary key. Tujuan dari secondary key ialah untuk
kepentingan pengambilan data saja.
Hal baru dan penting yang ditawarkan oleh model EER ini ialah konsep
superclass dan subclass pada entitas. Dalam literatur lain, superclass disebut
juga sebagai supertype, sedangkan subclass disebut dengan subtype. Perhatikan
ilustrasi pada Gambar 49. Penggambaran superclass dan subclass tidak hanya
terpaku pada satu cara saja. Gambar 50 menunjukkan alternatif lain dalam
mengilustrasikan superclass dan subclass.
Spesialisasi (↓)
Spesialisasi (specialization) ditandai dengan simbol panah ke bawah. Konsep
ini menggambarkan suatu proses pembentukan karakteristik baru dari suatu
objek, yaitu berupa satu atau lebih kelas baru. Dengan kata lain, spesialisasi
merupakan hasil pembentukan subset dari himpunan entitas dengan level yang
lebih tinggi menjadi himpunan entitas dengan level yang lebih rendah. Definisi
66 Judul Modul
lain tentang spesialisasi adalah proses identifikasi subset dari suatu himpunan
entitas (superclass atau supertype) dengan melakukan pemecahan berdasarkan
karakteristik yang membedakannya. Diagram pada Gambar 51 menjelaskan
bahwa himpunan entitas ‘Karyawan’ diperluas dengan spesialisasi sehingga
memiliki tiga buah subset yaitu ‘Karyawan Full-Time, ‘Karyawan Part-Time’
dan ‘Konsultan’. Adapun teks ‘Is A’ di dalam simbol segitiga merupakan istilah
dalam Bahasa Inggris yang apabila diterjemahkan ke dalam Bahasa Indonesia
memiliki arti ‘adalah’.
Generalisasi (↑)
Generalisasi (generalization) merupakan abstraksi dari suatu cara bagaimana
melihat beberapa objek berbeda menjadi satu kelas yang lebih umum. Definisi
lain dari generalisasi ialah proses mengidentifikasi beberapa karakteristik umum
dari beberapa himpunan entitas dan membentuk sebuah himpunan entitas baru
yang mengandung beberapa karakteristik umum tersebut. Generalisasi hanya
fokus pada karakteristik-karakteristik yang umum saja dari beberapa himpunan
entitas, sehingga mengabaikan perbedaan diantara mereka. Dengan kata lain,
generalisasi merupakan hasil penggabungan dari dua atau lebih himpunan
entitas untuk menghasilkan himpunan entitas baru dengan level yang lebih
tinggi. Dalam kasus generalisasi ini, subclass akan didefinisikan terlebih dahulu
dan diikuti oleh dibentuknya superclass. Selanjutnya, himpunan relasi yang
melibatkan superclass dan subclass baru dibuat. Contoh pada Gambar 56
menjelaskan bahwa kriteria seorang karyawan yaitu harus seorang ‘Karyawan
Full-Time, ‘Karyawan Part-Time’ atau ‘Konsultan’ (bukan yang lain).
Agregasi
Agregasi (aggregation) merupakan suatu proses penggabungan informasi pada
objek sehingga objek yang lebih tinggi (levelnya) dapat diabstraksikan. Contoh
pada Gambar 59 menggambarkan bahwa dokter mengunjungi kamar pasien,
dan segala sesuatunya dilakukan di rumah sakit yang sama.
Participation Constraint
Participation constraint bisa juga disebut dengan aturan atau batasan partisipasi,
yang mana mengatur tentang partisipasi dari himpunan entitas pada himpunan
relasi. Ada dua jenis partisipasi, yaitu:
1. Partisipasi Total (Total Participation atau Mandatory Participation).
Apabila semua entitas dari himpunan entitas E berpartisipasi dan
minimal memiliki sebuah relasi ke himpunan relasi R, maka partisipasi
tersebut disebut dengan partisipasi penuh/total. Partisipasi total
direpresentasikan dengan simbol garis ganda, sebagaimana tampak
pada Gambar 60. Dalam kasus superclass dan subclass, maka
partisipasi total ialah apabila semua member atau entitas di superclass
berpartisipasi/berperan sebagai member juga pada sebagian subclass
dalam spesialisasi maupun generalisasi. Sebagai contoh, jika setiap
karyawan harus salah satu dari subclass ‘karyawan full-time’,
‘karyawan part-time’, atau ‘konsultan’ di sebuah perusahaan dan tidak
ada lagi jenis karyawan lain, maka hal demikian disebut sebagai total
participation constraint.
Bab 5
TRANSFORMASI MODEL
DATA KE BASIS DATA FISIK
Transformasi model data menjadi basis data fisik bisa diterjemahkan sebagai
konversi ERD menjadi tabel relasional. Konversi Entity-Relationship Diagram
(ERD) menjadi tabel relasional tidaklah sulit, cukup dengan beberapa langkah
sederhana saja. Pada dasarnya, masing-masing entitas akan dikonversi menjadi
suatu tabel, kemudian relasi many-to-many atau entitas yang bersifat asosiatif
juga akan dikonversi menjadi suatu tabel. Yang perlu diberi perhatian secara
khusus yaitu pada saat konversi, dimana beberapa aturan harus diikuti untuk
memastikan foreign keys muncul secara tepat di suatu tabel. Di dalam bab ini,
akan didemonstrasikan konversi dari ERD menjadi tabel relasional.
Relasi Unary
Dalam relasi tunggal atau Unary Relationship, setidaknya ada tiga macam relasi
yang akan dibahas, yaitu relasi One-to-One, One-to-Many, dan Many-to-Many.
Penjelasan lebih detail adalah sebagai berikut.
76 Judul Modul
Gambar 69: Tabel relasional hasil konversi dari relasi tunggal one-to-one
Gambar 71: Hasil konversi ERD menjadi tabel relasional dengan atribut baru
bernama kd_manager
juga memiliki mur dan baut. Begitu semua sub-komponen dan komponen
tersebut disatukan, barulah bisa dirangkai menjadi sebuah mobil.
Dari ilustrasi di atas, maka komponen dasar dan komponen utama bisa dianggap
sebagai bagian (part) dari suatu objek atau produk. Oleh karena itu, himpunan
entitas komponen mobil (parts) tersebut memiliki relasi tunggal jenis many-to-
many terhadap entitas-entitas lain. Sebuah komponen di mobil bisa tersusun dari
beberapa komponen lain dan pada saat yang sama, komponen tersebut menjadi
bagian dari komponen yang lain.
Selain menggunakan contoh di atas, relasi tunggal many-to-many dapat
dicontohkan dengan produk-produk yang dijual di toko bangunan. Peralatan
mendasar seperti palu dan kunci inggris dapat digabung dan dijual secara paket
dengan produk-produk lain. Paket peralatan (tool sets) pertukangan yang lebih
lengkap dapat terdiri dari paket-paket peralatan yang lebih kecil ditambah
dengan peralatan tambahan seperti palu atau kunci inggris. Produk-produk
tersebut, baik yang berupa peralatan tambahan (satuan) ataupun paket, baik yang
ukurannya besar ataupun kecil, semuanya dikategorikan sebagai produk. Oleh
karena itu, sebuah produk boleh jadi merupakan bagian dari beberapa produk
lain, atau mungkin juga tidak sama sekali. Sebaliknya, sebuah produk dapat
disusun dari beberapa produk lain, atau tidak sama sekali.
Khusus untuk kasus relasi tunggal many-to-many, dibutuhkan dua buah tabel
guna konversi dari model data ke basis data fisik. Pada dasarnya, aturan umum
dalam konversi model data menjadi basis data fisik adalah bahwa jumlah tabel
yang terbentuk akan sama seperti jenis relasi yang ada (unary, binary, ternary)
ditambah sebuah tabel khusus untuk yang menggunakan many-to-many.
Sebagai contoh, relasi binary many-to-many akan membentuk dua buah tabel
ditambah satu sehingga menjadi tiga tabel. Demikian pula untuk yang unary,
akan terbentuk sebuah tabel ditambah satu menjadi dua tabel. Untuk kasus selain
many-to-many maka jumlah tabel yang dihasilkan tidak perlu ditambah satu.
79
Gambar 73: Hasi konversi ERD dengan relasi tunggal many-to-many menjadi
dua buah tabel relasional
Relasi Binary
Relasi Binary biasa disebut juga dengan sebutan relasi biner atau relasi ber-
derajat dua. Pada relasi ini, jumlah entitas yang terlibat secara langsung
berjumlah dua buah saja. Sama halnya dengan relasi tunggal, relasi binary ini
80 Judul Modul
juga memiliki tiga model, yaitu relasi binary one-to-one, one-to-many, dan
many-to-many.
maka data tersebut hanya akan tersimpan di tabel RUANG_KERJA saja, dan
tidak akan muncul sebagai foreign key pada tabel PRAMUNIAGA.
Pilihan selanjutnya ialah pilihan ketiga dimana kita menempatkan file kode
pramuniaga (kd_pram) sebagai foreign key pada tabel RUANG_KERJA.
Apabila Gambar 74 kita baca dari kanan ke kiri, dapat dijelaskan bahwa setiap
ruang kerja bisa ditempati oleh maksimal seorang pramuniaga dan
memungkinkan untuk tidak ditempati oleh seorangpun pramuniaga. Dengan
demikian, pada tabel RUANG_KERJA bisa jadi ada record atau baris yang
memiliki isian atribut ruang kerja namun dengan field kd_pram (foreign key)
bernilai null alias kosong. Jika situasinya demikian, maka pilihan kedua jelas
lebih baik dari pilihan ketiga, karena tidak akan ada field yang bernilai kosong.
Jadi kuncinya adalah seberapa efektif tabel-tabel tersebut merepresentasikan
relasi data. Apabila kemunculan atribut atau field yang memungkinkan bernilai
kosong dapat dihindari, maka sebaiknya dihindari saja.
Gambar 76: Contoh relasi biner one-to-many (1:M) yang akan diselesaikan
83
Gambar 77: Hasil konversi relasi biner one-to-many ke dalam dua buah tabel
relasional
Field kd_pram yang ada pada tabel PELANGGAN berfungsi untuk
menghubungkan kedua tabel. Mengingat ERD pada Gambar 76 menjelaskan
bahwa setiap pelanggan harus punya tepat satu (seorang) pramuniaga, maka
tidak akan ada atribut/field yang bernilai kosong pada baris-baris di dalam tabel
PELANGGAN.
Relasi Ternary
Sebagaimana dijelaskan pada Bab 4 (subbab Elemen-elemen pada ERD
Relasi dan Kardinalitas), relasi ternary merupakan relasi yang memiliki derajat
tiga, yaitu melibatkan tiga entitas. Jenis relasi ini digunakan ketika binary
relationship dianggap tidak cukup akurat dalam menjelaskan makna antar 3
entitas. Dalam kondisi relasi dengan 3 entitas, maka akan memunculkan sebuah
entitas baru sebagai entitas penhubung, yang berisikan semua primary key dari
tiga entitas asli, ditambah dengan field-field yang sekiranya dibutuhkan dan
menjadi pembeda antar satu kejadian dengan kejadian yang lain.
Gambar 81 merupakan contoh relasi ternary yang akan kita konversikan ke
dalam tabel relasional. Pada gambar tersebut, terbentuk sebuah entitas baru
bernama PENJUALAN. Isi dari entitas baru ini yaitu semua primary key dari 3
entitas asal (kd_pram, kd_pel, dan kd_prod) ditambah dengan 2 field baru, yaitu
kuantitas dan tanggal. Kuantitas diperlukan untuk mencatat berapa jumlah
produk X yang dijual oleh pramuniaga Y kepada pelanggan Z. Selanjutnya
atribut tanggal dibutuhkan untuk membedakan waktu jual/beli produk X yang
dijual oleh pramuniaga Y kepada pelanggan Z.
86 Judul Modul
Khusus untuk entitas baru yang terbentuk, yaitu PENJUALAN, primary key-
nya adalah kumpulan dari 3 buah primary key yang diambil dari 3 tabel yang
terhubung kepadanya, yaitu kd_pram, kd_pel, kd_prod dikombinasikan dengan
atribut tanggal untuk menciptakan keunikan sebagaimana sifat primary key
yang sesungguhnya. Hasil konversi dapat dilihat pada Gambar 82.
88 Judul Modul
Bab 6
BAHASA PADA BASIS DATA
MODEL RELASIONAL
Sejak Edgar F. Codd memperkenalkan model relasional pada tahun 1970, ada
dua jenis bahasa yang telah diusulkan dan diimplementasikan untuk digunakan
pada basis data relasional. Jenis pertama yaitu bahasa non-prosedural yang
berbasiskan kalkulus relasional, dengan bahasa query Quel. Sedangkan jenis
kedua, yaitu bahasa prosedural yang menggunakan konsep aljabar relasional
dengan bahasa query yang popular yaitu SQL (Structured Query Language).
Pada bahasa prosedural, query akan langsung mengarahkan DBMS tentang
bagaimana cara mendapatkan data yang dimaksud. Sebaliknya, dalam bahasa
non-prosedural, query hanya memberi kode atau clue tentang apa yang
dibutuhhkan dan menyerahkan ke sistem tentang proses yang ditempuh untuk
mendapatkan hasil tersebut. Meskipun terdengar lebih mudah, namun ternyata
bahasa prosedural jauh lebih popular dibandingkan dengan bahasa non-
prosedural. Faktanya, SQL (sebagai bahasa query prosedural) secara luas
diterima dan digunakan oleh end user sebagai media untuk berinteraksi dengan
sistem relasional sekarang ini.
Ada beberapa operasi aljabar yang umum digunakan dalam basis data,
diantaranya yaitu:
Operasi Select (σ): digunakan untuk memilih suatu nilai atau tuples atau
values pada tabel yang sesuai dengan kondisi yang diberikan. Simbol yang
digunakan untuk operasi ini adalah sigma kecil (σ).
Operasi Projection (π):
Operasi Union (∪):
Operasi Difference (–):
Operasi Intersection (∩):
Operasi Cartesian Product (X):
Operasi Natural Join (⟗):
<> Tidak sama dengan (not equal to) kota < > “Semarang”
>= Lebih besar dari atau sama dengan gaji > = 1000000
(greater than equal to)
Agar operasi select dapat lebih mudah dipahami, maka kita akan mencobanya
secara langsung dengan menggunakan tabel MAHASISWA sebagaimana
tampak pada Gambar 85.
π p (R)
Keterangan:
π : pi sebagai simbol operasi projection
p : predikat (ditulis lebih kecil atau subscript)
(R) : tabel atau relasi
Pada dasarnya, operasi projection ini tidak melibatkan operator apapun
sebagaimana pada operasi select. Namun, operasi ini juga bisa digabungkan
dengan operasi select apabila kita menginginkan hasil query yang lebih spesifik.
Masih menggunakan tabel MAHASISWA yang ada pada Gambar 85, berikut
ini adalah contoh penggunaan operasi projection secara mandiri dan ketika
digabung dengan operasi select.
1. Tujuan: menampilkan kolom NIM, nama, dan nilai_alpro saja.
Solusi
Notasi : πNIM, nama, nilai_alpro (MAHASISWA)
Hasil :
Hasil dari operasi (A ∩ B) di atas sama persis dengan penggunaan operasi set
difference A – (A – B), yang mana notasi aljabarnya adalah sebagai berikut:
π NIM (MHS) – (π NIM (MHS) – π NIM (IPK))
Singkatnya, operasi intersection akan memunculkan nilai-nilai yang ada pada
relasi 1 dan 2.
suatu basis data, sehingga bisa memunculkan jawaban IPK Candra adalah 3,45.
Langkah-langkahnya adalah sebagai berikut:
1. Tujuan : melakukan operasi cartesian product untuk tabel
MHS_NAMA dan MHS_IPK.
Solusi
Notasi : σ (MHS_NAMA) X (MHS_IPK)
Hasil :
Gambar 103: Tampak bahwa hasil operasi pada langkah 3 sudah akurat
Pada tahap ini, hasil yang diperoleh (lihat Gambar 103) sudah akurat. NIM
di sebelah kiri dan kanan bernilai sama. Dengan demikian, dapat dipastikan
bahwa IPK mahasiswa yang bernama Candra adalah 3,45. Sayangnya,
tabel tersebut masih memuncul 2 buah kolom NIM. Mestinya kolom NIM
yang muncul hanya satu saja, yaitu pada sisi ujung kirim. Oleh karena itu,
dibutuhkan sebuah operasi projection untuk mengatur kemunculan kolom
agar sesuai dengan yang dibutuhkan. Perhatikan langkah nomor 4 berikut
ini!
103
Gambar 106: Hasil akhir operasi natural join antara tabel MHS_NAMA dan
MHS_IPK
Agar bisa memperoleh hasil seperti tampak pada Gambar 105, maka ada
beberapa langkah yang harus dilalui, yaitu:
1. Tujuan: menemukan hasil cartesian product antar dua tabel
(MHS_NAMA dan MHS_IPK).
Notasi: σ (MHS_NAMA) X (MHS_IPK))
Hasil:
105
Gambar 107: Hasil operasi cartesian product antara tabel MHS_NAMA dan tabel
MHS_IPK
2. Tujuan: membuat tabel equijoin, dengan cara menemukan nilai yang sama
pada atribut yang sama pula. Pada Gambar 107, tampak adanya dua atribut
dengan nama yang sama, yaitu atribut NIM. Maka disini yang perlu
dilakukan adalah menemukan baris data dimana nilai pada NIM di sebelah
kiri sama dengan nilai NIM pada baris di sebelah kanan. Perhatikan baris
ke-1, 5, dan 9 memiliki nilai NIM di kiri yang sama dengan NIM di kanan.
Maka ke-tiga baris data tersebut kita ambil untuk dijadikan sebagai tabel
equijoin.
Notasi: σ MHS_NAMA.NIM = MHS_IPK.NIM (MHS_NAMA) X (MHS_IPK))
Hasil:
3. Tujuan: menghilangkan salah satu atribut yang sama, dalam hal ini adalah
menghilangkan salah satu atribut NIM, karena pada tabel equijoin terdapat
dua atribut NIM dengan nilai yang sama persis.
Notasi: πNIM, nama, IPK (σ MHS_NAMA.NIM = MHS_IPK.NIM (MHS_NAMA) X
(MHS_IPK))
Hasil:
Gambar 109: Tampak tabel equijoin dengan satu atribut NIM saja
Gambar 109 merupakan hasil akhir dari operasi natural join. Pada tabel tersebut,
tidak lagi ditemukan atribut serta data dengan nama yang sama pula. Dengan
demikian, penggabungan dua tabel, yaitu antara tabel MHS_NAMA dan
MHS_IPK telah berhasil dilakukan, khususnya menggunakan operasi natural
join.
Jika diperhatikan, terdapat perbedaan antara notasi pada poin nomor 3 dengan
notasi awal pada bagian solusi. Notasi awal adalah:
πNIM, nama, IPK (MHS_NAMA ⟗ MHS_IPK)
Sedangkan notasi pada point nomor 3, adalah:
πNIM, nama, IPK (σ MHS_NAMA.NIM = MHS_IPK.NIM (MHS_NAMA) X (MHS_IPK))
Sekilas terlihat berbeda namun sebetulnya sama. Di sini, operasi natural join
(⟗) dapat menjadi pengganti dari gabungan operasi select (σ) dan cartesian
product (X). Dalam contoh kasus di atas, maka notasi aljabar (MHS_NAMA
⟗ MHS_IPK) memiliki nilai yang sama dengan (σ MHS_NAMA.NIM = MHS_IPK.NIM
(MHS_NAMA) X (MHS_IPK)). Oleh karena itu, jelas bahwa operasi natural
join hanya menghasilkan nilai atau tupel yang memiliki nilai yang sama pada 2
atribut dengan nama yang sama juga, namun pada 2 tabel relasi yang berbeda.
107
Bahasa Query
Bahasa Query (Query Language) merujuk pada suatu bahasa pemrograman
komputer yang secara khusus digunakan untuk meminta, mengambil, atau
menampilkan data dari suatu basis data. Data-data yang dihasilkan itu akan
diolah lebih lanjut hingga menjadi suatu informasi yang berguna. Perintah yang
dikirimkan untuk keperluan tersebut dikenal dengan perintah query atau bisa
disebut juga dengan query saja.
Sistem basis data komersial membutuhkan bahasa query yang sederhana dan
mudah dipahami. Berangkat dari kebutuhan ini, maka muncullah SQL
(Structure Query Language), yang sekarang ini telah umum digunakan dalam
dunia basis data. SQL didasarkan pada gabungan konsep aljabar relasional dan
kalkulus relasional. Selain berguna untuk melakukan query pada basis data,
SQL juga memiliki beberapa fitur lain, seperti:
1. Mendefinisikan struktur dari suatu data, seperti: menentukan tipe data,
panjang karakternya, dll.
2. Memodifikasi data di database.
3. Mengatur batasan terkait keamanan data (security constraints).
SQL kini digunakan sebagai bahasa standard yang digunakan pada basis data
relasional, berkat kemampuannya dalam mengakses beragam RDBMS
(Relational Data-Base Management System), seperti: Oracle, Sybase, MySQL,
Informix, Postgre, dll. Penjelasan lebih dalam terkait SQL akan dibahas pada
Bab 8. Pada bagian ini hanya akan dibahas tentang konversi dari aljabar
relasional menjadi bentuk bahasa query.
Query Select
Sebagaimana dijelaskan pada subbab Operasi Aljabar Relasional, operasi select
digunakan untuk memilih nilai tertentu dari satu atau beberapa tabel. Operasi ini
direpresentasikan dengan simbol sigma kecil (σ). Sekedar mengingatkan, rumus
dasarnya adalah sebagai berikut:
σ p (R)
109
Query Projection
Query ini digunakan apabila kita hendak menentukan kolom tertentu pada suatu
tabel. Sebagai contoh, apabila kita ingin menampilkan 2 kolom saja dari tabel
MAHASISWA, seperti kolom nama dan nilai_alpro, maka Anda dapat
menggunakan query ini. Operasi projection dinotasikan dengan aksara pi, dan
berikut ini adalah formula lengkap dari operasi projection:
π p (R)
110 Judul Modul
Query Union
Query union digunakan untuk menggabungkan dua kolom dengan nama yang
sama dari tabel yang berbeda. Query ini akan menghasilkan gabungan data dari
dua kolom tabel yang disatukan. Apabila dihasilkan lebih dari 1 tuple yang
111
bernilai sama, maka yang digunakan hanya salah satunya saja. Penjelasan lebih
detail terkait operasi union telah dibahas di subbab Operasi Aljabar Relasional
pada bagian Operasi Union. Berikut ini merupakan notasi yang digunakan pada
operasi union:
π p1 (R) ∪ π p2 (R)
Perhatikan contoh-contoh berikut ini untuk dapat memahami query union
dengan lebih mudah.
1. Menampilkan hasil gabungan antara dua kolom NIM pada tabel MHS dan
IPK, menggunakan operasi UNION (tabel MHS dan IPK dapat dilihat
pada Gambar 92).
Notasi:
π NIM (MHS) ∪ π NIM (IPK)
Perintah SQL:
select NIM from MHS UNION select NIM from IPK
2. Sedangkan perintah SQL untuk menampilkan hasil gabungan antara dua
kolom NIM pada tabel MHS dan IPK, tanpa harus menghapus nilai-nilai
yang sama adalah:
select NIM from MHS UNION ALL select NIM from IPK
Ilustrasi hasil dari penggunaan dua query di atas dapat dilihat pada gambar 93
dan 94.
Keterangan:
select NIM from MHS: memilih kolom NIM dari tabel MHS.
select NIM from IPK: memilih kolom NIM dari tabel IPK.
UNION: perintah SQL untuk menggabungkan dua tabel dengan
mengeliminasi data-data redundan. Jika ada data yang sama, maka diambil
salah satu saja.
UNION ALL: perintah SQL untuk menggabungkan dua tabel berbeda
secara apa adanya. Di sini, data redundan tidak akan dieleminasi.
112 Judul Modul
Query Intersection
Intersection digunakan untuk mencari nilai yang sama pada dua tabel berbeda.
Masih menggunakan tabel MHS dan IPK, berikut ini adalah contoh penggunaan
operasi sekaligus query intersection.
Tujuan: Menampilkan NIM-NIM mahasiswa yang muncul baik di tabel MHS
maupun IPK.
Notasi:
π NIM (MHS) ∩ π NIM (IPK)
Perintah SQL:
select NIM from MHS where exist (select NIM from IPK where MHS.NIM =
IPK.NIM)
Keterangan:
select NIM from MHS: memilih kolom NIM dari tabel MHS.
where: kondisi yang dimaksudkan, yaitu kondisi dimana data-data yang
tersedia pada tabel yang disebut setelahnya.
select NIM from IPK: memilih kolom NIM dari tabel IPK.
where MHS.NIM = IPK.NIM: kondisi yang mensyaratkan NIM yang
sama antara tabel MHS dan IPK. Karena di bagian depan ada kondisi
‘where exists’, maka yang akan muncul hanyalah data-data yang ada pada
kedua tabel tersebut.
114 Judul Modul
BAB 7
DESAIN BASIS DATA
----------------------********-------------------------------------------
Proses perancangan desain secara garis besar dibagi menjadi dua bagian
utama, yaitu konseptual design dan physical design. Proses perancangan
sistem database juga merupakan bagian dari siklus hidup database
sebagai micro lifecycle. Suatu sistem database merupakan bagian dari
komponen dasar sistem informasi organisasi yang lebih besar. Oleh
karena itu siklus hidup sistem database berhubungan dengan siklus hidup
115
sistem basis data, atau dianggap data sudah ada sehingga pembelian yang
kedua yaitu pada tanggal 3-3-2003 tidak akan tercatat. Oleh karena itu
diperlukan kunci primer tambahan yaitu wkt_beli, sehingga unit
hubungan akhirnya memiliki kunci primer gabungan tambahan
(kode_plg, kode_brg, wkt_beli).
Konseptual Design
Jika dibuat pemodelan dalam Diagram ER dari sistem basis data Toko
tersebut secara keseluruhan terlihat pada gambar E-R dibawah ini.
Skema Diagram
Sebelumnya kita perlu mengenal istilah relasi yang merupakan “embrio”
dari table master jika sumbernya adalah entity sedangakan jika
sumbernya adalah dari relationship maka akan jadi “embrio” table
transaksi. Relasi dalam basis data berbentuk kotak yang mewakili suatu
119
himpunan unit, yang terdiri dari beberapa baris yang merupakan atribut-
atribut dari himpunan unit tersebut. Jadi kalau suatu relasi mempunyai N
baris berarti mempunyai N atribut. Atribut yang berwarna merah pada
gambar skema diagram menggambarkan atribut kuncinya. Skema
Diagram merupakan suatu sistem yang terdiri dari kumpulan dari
beberapa relasi yang saling berhubungan. Di bawah ini contoh Diagram
Skema dari ketiga buah relasi yaitu pelanggan, pembelian dan barang,
seperti terlihat pada gambar dibawah ini.
Dari contoh analisa diatas maka table tersebut akan dihasilkan table yang
belum memenuhi bentuk nirmal pertama (syarat utama 1stNF adalah
semua attribute dari semua relasi sudah dalam bentuk atomic atau
menghilangkan duplikasi kolom dari tabel yang sama/repetisi), seperti pada
gambar dibawah ini :
Tabel : Tabel Tidak Normal (table pelanggan memiliki atribut
composite alamat )
kode_plg nama_plg Alamat1 alamat2 alamat …
P-M-301 Brindys Banyumanik I/V Perum BSB I No.3 Karangpaing
P-M-302 Cycal Karangrejo B-2
…
B-M-001 Sabun Lux 27/09/2017 A k h i r 2.000 5 CV. ABC Cv.Indomaxi Cv. UniLif e
2 0 1 9
… … …
121
bukan tergantung pada sebagian kunci primer saja (jika ada atribut bukan
kunci hanya tergantug penuh pada sebagian kunci primer komposit maka
disebut sebagai ketergantungan parsial).
Jika di analisa lebih lanjut maka kunci primer komposit biasanya ada
pada relasi-relasi transaksi. Misal hasil analisa (dari transaksi diatas)
pada gambar ER-Model dan Skema model diatas, discount pada relasi
“beli”. Atribut discount eksistensinya tidak tergantung penuh pada
seluruh kunci primer gabungaan (kode_plg, kode_brg, wkt_beli), namun
eksitensinyaa hanya tergantung pada sebagian kunci primer yaitu
(kode_brg). Hasil analisa tersebut menunjukan atribut discount hanya
tergantung pada sebagian kunci primer (kode_brg), fakta diskon tidak
tergantung pada siapa pelangganya (kode_plg) atau kapan waktu
pembelin barang tersebut (wkt beli). Hal ini menunjukan relasi beli
terdapat atribut tertentu (discount) yang memiliki ketergantungan parsial.
Fakta ini menunjukan relasi tersebut belum dalam bentuk normal ke dua
(2NF) karena ada atribut discount yang eksistensinya hanya tergantung
pada sebagian kunci primer composit. Permaslahan disini karena
faktanya diskon tidak pandang bulu siapa pelanggannya atau kapan
waktu pembeliannya, maka discount bisa didekomposisi menjadi entitas
baru misalnya entitas diskon atau atribut tersebut dipindah pada entitas
barang. Diperlukan analisa terhadap pilihan perlakuan terhadap atribut
discount tersebut. Tentunya alternatif yang dipilih adalah yang paling
efisien dan tidak kehilangan informasi nilai dikon terhadap barang. Jika
eksistensi discount sebagai atribut bukan kunci hanya tergantung pada
kode_brg (bagian dari kunci primer) saja maka atribut discount yang
semula ada pada relasi beli maka atrinbut tersebut dapat di pindah pada
relasi barang.
124 Judul Modul
/*
Created: 9/22/2019
Modified: 9/28/2019
*/
-- Table pelanggan
`nama_plg` Varchar(40)
)
-- Table barang
`nama_brg` Varchar(40),
`tgl_produksi` Date,
`harga_dasar` Decimal(10,0),
`persen_laba` Decimal(10,0)
131
-- Table beli
`discout` Decimal(10,0),
-- Table Punya
-- Table Alamat
`Nm_Kota` Char(20),
`Nm_kecamatan` Char(20),
`Nm_Kelurahan` Char(20)
132 Judul Modul
-- Table Setor
`wkt_str` Datetime,
`jml_brg` Decimal(10,0)
-- Table penyalur
`nama_pyl` Char(40),
`alamat` Char(40)
-- Table Informasi
`kedaluwarso` Char(20)
-- Table memiliki
ALTER TABLE `beli` ADD CONSTRAINT `Relationship1` FOREIGN KEY (`kode_plg`) REFERENCES `pelanggan`
(`kode_plg`) ON DELETE RESTRICT ON UPDATE RESTRICT
ALTER TABLE `beli` ADD CONSTRAINT `Relationship2` FOREIGN KEY (`kode_brg`) REFERENCES `barang`
(`kode_brg`) ON DELETE RESTRICT ON UPDATE RESTRICT
ALTER TABLE `beli` ADD CONSTRAINT `membeli` FOREIGN KEY (`kode_plg`) REFERENCES `pelanggan`
(`kode_plg`) ON DELETE NO ACTION ON UPDATE CASCADE
ALTER TABLE `beli` ADD CONSTRAINT `barang` FOREIGN KEY (`kode_brg`) REFERENCES `barang` (`kode_brg`)
ON DELETE NO ACTION ON UPDATE CASCADE
ALTER TABLE `Punya` ADD CONSTRAINT `data alamat` FOREIGN KEY (`kode_plg`) REFERENCES `pelanggan`
(`kode_plg`) ON DELETE RESTRICT ON UPDATE RESTRICT
ALTER TABLE `Punya` ADD CONSTRAINT `data-alamat` FOREIGN KEY (`Kode_Kota`) REFERENCES `Alamat`
(`Kode_Kota`) ON DELETE RESTRICT ON UPDATE RESTRICT
ALTER TABLE `Setor` ADD CONSTRAINT `mmemiliki` FOREIGN KEY (`kode_brg`) REFERENCES `barang`
(`kode_brg`) ON DELETE RESTRICT ON UPDATE RESTRICT
ALTER TABLE `Setor` ADD CONSTRAINT `data_sup` FOREIGN KEY (`kode_pyl`) REFERENCES `penyalur`
(`kode_pyl`) ON DELETE RESTRICT ON UPDATE RESTRICT
ALTER TABLE `memiliki` ADD CONSTRAINT `expired status` FOREIGN KEY (`tgl_produksi`) REFERENCES
`Informasi` (`tgl_produksi`) ON DELETE RESTRICT ON UPDATE RESTRICT
;
134 Judul Modul
ALTER TABLE `memiliki` ADD CONSTRAINT `info` FOREIGN KEY (`kode_brg`) REFERENCES `barang`
(`kode_brg`) ON DELETE RESTRICT ON UPDATE RESTRICT
lengkap pelanggan. Informasi yang akan dihaasilkan memiliki sumber data dari
9 tabel atau relasi sehinga akan melibatkan 9 relasi dalam proses pencariannya.
FROM barang as B, penyalur as P, informasi as I, pelanggan as G, setor as S, memiliki as M, beli as L, punya as U, alamat as
T
WHERE B.kode_brg = S.kode_brg and S.kode_pyl = P.kode_pyl and B.kode_brg = M.kode_brg and M.tgl_produksi=
I.tgl_produksi and B.kode_brg=L.kode_brg and L.kode_plg=G.kode_plg and G.kode_plg=U.kode_plg and U.kode_kota =
T.kode_kota ;
Dalam SQL Query juga dapat menggunakan beberapa fungsi mate matika.
Misal ingin mengetahui total barang yang dibeli oleh masing-masing pelanggan
menurut jenis barang.
Jika perintah SQL diatas akan di permanenkan maka dabat dibuat view sehingga
jika ingin mengeksekusi sejumlah perintah tinggal memanggil nama view nya
saja. Biasanya view ini digunakan untuk membantu membuat laporan, misalnya
sejumlah perintah query tersebut diberi nama ReportData_Toko (Create View
ReportData_toko). Perintah lengkapnya seperti gambar dibawah ini.
139
BAB 8
NORMALISASI DATA DAN
KETERGANTUNGAN
FUNGSIONAL
sekumpulan tabel baru yang bebas dari anomali. Kumpulan aturan-aturan yang
diterapkan tersebut, dinamakan normal forms.
Tujuan dilakukannya normalisasi pada tabel di database adalah sebagai berikut:
1. Untuk mengurangi redudansi data secara signifikan.
2. Untuk mengurangi kompleksitas.
3. Untuk mempermudah pemodifikasian data.
Ketiga poin di atas (redundansi data, kompleksitas dan untuk kemudahan dalam
modifikasi data) berhubungan secara langsung dengan anomali pada data.
Pentingnya Normalisasi
Tanpa normalisasi, atau jika suatu tabel tidak secara tepat dinormalkan serta
masih memiliki redundansi data, maka suatu database tidak hanya akan
memakan tempat yang besar pada harddisk, tapi juga menghadirkan kesulitan
dalam menangani atau memperbaharui data/tabel tanpa menimbulkan
permasalahan baru, yaitu hilangnya data yang lain. Anomali pada saat proses
penambahan data (insertion), perubahan data (update), dan penghapusan data
(deletion) merupakan hal yang seringkali terjadi ketika database tidak
dinormalisasi.
Selanjutnya, tanpa dilakukan normalisasi pada database, maka suatu rancangan
database memungkinkan menjadi rancangan yang buruk. Rancangan database
disebut buruk, yaitu jika:
Data yang sama tersimpan di beberapa tempat sekaligus, seperti pada
file, tabel, atau record.
Database tidak dapat menghasilkan informasi tertentu, akibat adanya
nilai-nilai yang ambigu (akibat redudansi).
Terjadinya kehilangan informasi, yang diantaranya disebabkan oleh
adanya anomali saat proses update maupun delete.
Adanya redudansi atau pengulangan data. Hal ini dapat memakan
ruang penyimpanan yang tidak perlu, dengan kata lain boros memori.
Data yang redundant ini pada akhirnya juga memunculkan kesulitan
ketika kita hendak melakukan update data.
Munculnya Null Value (akan di bahas di bab terpisah).
143
Jenis-Jenis Normalisasi
Dalam beberapa literatur disebutkan ada setidaknya 9 bentuk normal pada
database, yaitu:
1. 1NF (1st Normal Form)
2. 2NF (2nd Normal Form)
3. 3NF (3rd Normal Form)
4. EKNF (Elementary Key Normal Form)
5. BCNF (Boyce-Codd Normal Form)
6. 4NF (4th Normal Form)
7. 5NF (5th Normal Form)
8. DKNF (Domain/Key Normal Form)
9. 6NF (6th Normal Form)
Namun dalam prakteknya, hanya ada 4 bentuk normal (normal form) yang
popular dan seringkali digunakan, yaitu:
1. 1NF (1st Normal Form)
2. 2NF (2nd Normal Form)
3. 3NF (3rd Normal Form)
4. BCNF (Boyce-Codd Normal Form)
Pada gambar X.XX, terlihat bahwa BCNF memiliki lingkaran paling kecil.
Artinya, BCNF memiliki aturan yang paling ketat dibanding yang lainnya.
Maka untuk bisa mencapai BCNF, harus terlebih dahulu melewati fase-fase
sebelumnya, yaitu 3NF, 2NF dan yang pertama harus dilalui terlabih dahulu
yaitu 1NF.
Tahapan Normalisasi
Secara sederhana, urutan dan syarat masing-masing bentuk normal adalah
sebagai berikut:
1. Tabel Universal, yaitu tabel mentah yang mana masih berada dalam
bentuk yang tidak normal sama sekali.
2. 1NF, syaratnya adalah:
a. Bersifat atomic values.
b. Konsistensi data.
c. Memiliki nama kolom yang unik.
3. 2NF, syaratnya adalah:
a. Sudah memenuhi kriteria 1NF.
b. Terbebas dari ketergantungan sebagian (partial dependency).
4. 3NF, syaratnya adalah:
a. Sudah memenuhi kriteria 2NF.
b. Terbebas dari ketergantungan transitif (transitive
dependency).
5. BCNF, syaratnya adalah:
a. Sudah memenuhi kriteria 3NF.
b. Untuk dependensi AB, maka A harus sebagai Super Key.
Penjelasan lebih lanjut tentang 1NF, 2NF, 3NF, dan BCNF akan dibahas di sub
bab berikut ini.
Tabel Universal
Tabel universial (star tabel) merupakan bentuk tabel yang paling awal alias data
mentah, dan berada dalam bentuk yang tidak normal. Karena berada dalam
bentuk yang tidak normal, maka sangat memungkinkan terjadinya redudansi,
inkonsistensi dan anomali data. Umumnya, tabel mentah hanya menggunakan
1 tabel saja dengan field/kolom/atribut yang cukup banyak. Namun tidak
menutup kemungkinan, tabel universial terdiri dari lebih dari 1 tabel yang masih
berada dalam bentuk tidak normal.
145
Sampai di sini, tabel universal telah kita dekomposisi menjadi 2 tabel berbeda,
yaitu tabel order_record dan tabel order_item. Agar kedua tabel tersebut bisa
terhubung, dimana nomor order menentukan produk apa yang dipesan, maka
kita tambahkan kolom no_order pada tabel order_item, sekaligus mengisinya
sesuai dengan nomor order dan barang yang dipesan (sekaligus dengan
jumlahnya). Sehingga hasil akhirnya akan tampak seperti pada tabel X.XX dan
tabel X.XX. Dengan demikian, normalisasi 1NF sudah berhasil kita lakukan.
BAB 9
PENGENALAN SQL
Pengantar SQL
Nama SQL merupakan kepanjangan dari Structured Query Language. Pada
awalnya, SQL disebut dengan nama SEQUEL yaitu, Structured English Query
Language yang didesain dan dikembangkan pada tahun 1970-an di
Laboratorium Penelitian IBM oleh E.F.Codd. Pada tahun 1986, SQL
distandarkan oleh ANSI yang kemudian di adopsi sebagai standar internasional
oleh International Organization for Standardization (ISO) pada tahun 1987. Saat
ini, banyak DBMS yang mendukung SQL, dapat dijalankan di berbagai
platform perangkat keras dari PC ke mainframe.
SQL merupakan Bahasa query database yang mendukung pengambilan,
manipulasi dan administrasi data yang disimpan dalam bentuk tabel. SQL
adalah Bahasa yang memungkinkan pengguna berinteraksi dengan relasional
database. Secara ideal, tujuan dari SQL adalah:
Membuat database dan struktur relasi
Melakukan tugas manajemen basis data seperti memasukkan,
memodifikasi dan menghapus data dari relasi
Melakukan query sederhana dan kompleks
151
SQL memiliki tiga komponen yaitu DDL (Data Definition Language), DML
(Data Manipulation Language) dan DCL (Data Control Language). DDL
digunakan untuk mendefinisikan struktur database dan mengontrol akses ke
data. DML digunakan untuk mengambil dan memperbarui data. DCL
digunakan untuk memberikan hak akses atau otoritas pengguna ke database.
DDL dan DML tersebut memiliki aturan yang dapat menyematkan pernyataan
SQL ke dalam Bahasa pemrograman seperti Java, PHP.
Command Deskripsi
Perintah utama SQL untuk data definition adalah perintah CREATE, dimana
perintah ini dapat digunakan untuk membuat skema, tabel(relasi), tipe dan
domain serta konstruksi lainnya seperti view, assertion, dan trigger.
Proses membuat database secara signifikan berbeda dari produk ke produk.
Pada single-user system, standar database (default) dapat dibuat ketika sistem
diinstal dan dikonfigurasi, dapat dibuat oleh pengguna sesuai kebutuhan.
153
Standar ISO tidak menentukan bagaimana database dibuat dan umumnya tiap
dialek memiliki pendekatan yang berbeda.
1. CREATE SCHEMA
Berdasarkan standar ISO, relasi dan objek database berada dalam environment.
Setiap environment terdiri dari satu atau lebih catalog, dan masing - masing
catalog terdiri dari satu set skema. Skema adalah kumpulan objek database yang
beberapa hal terkait satu sama lain (semua objek dalam database dijelaskan
dalam satu skema atau yang lain). Objek dalam skema bisa berupa table, view,
domain, assertion, collation, translation, dan set character. Skema diidentifikasi
oleh nama skema dan pengidentifikasi otorisasi untuk mengindikasikan
pengguna yang memiliki skema serta deskiptor untuk tiap elemen dalam skema.
Skema dibuat melalui perintah CREATE SCHEMA. Skema dapat diberi nama
dan pengidentifikasi otorisasi, elemen – elemennya dapat didefinisikan nanti.
Sebagai contoh, saya akan membuat skema untuk toko online (e-commerce)
dengan nama skema TOKOKU dan pengidentifikasi otorisasi adalah
‘FASILKOM’.
CREATE SCHEMA TOKOKU AUTHORIZATION ‘DINUS’;
Pada umumnya, tidak semua pengguna diizinkan untuk membuat skema dan
elemen skema. Hak untuk membuat skema, table, dan konstruksi lainnya harus
secara eksplisit diberikan kepada akun pengguna yang relevan oleh system
administrator atau DBA.
Instalasi database memiliki standar environment dan skema, jadi ketika
pengguna telah terkoneksi dan masuk ke dalam instalasi database. Pengguna
akan diarahkan langsung ke tabel dan konstruksi lainnya dalam skema tersebut,
tanpa menentukan nama skema.
2. TIPE DATA
Tipe data dasar yang tersedia untuk atribut adalah numeric, character, Boolean,
date, dan time.
Numeric, tipe data angka yang terdiri dari bilangan bulat dari berbagai
ukuran seperti INTEGER atau INT, SMALLINT dan tipe data angka
floating-point seperti FLOAT, REAL, dan DOUBLE. Format bilangan
floating-point dapat dideklarasikan menggunakan DECIMAL(i,j) atau
DEC(i,j) atau NUMERIC (i,j)dimana i adalah presisi yaitu jumlah digit
angka (panjang digit termasuk desimal) dan j adalah skala yaitu jumlah digit
decimal. Standar untuk skala adalah nol dan presisi ditentukan oleh
154 Judul Modul
3. CREATE TABLE
Tabel dibuat dengan perintah CREATE TABEL. Perintah CREATE TABLE
digunakan untuk menentukan relasi baru dan menentukan atribut dengan
constraint awal. Berikut adalah syntak dasar dalam penulisan perintah
CREATE TABEL.
155
Pada penulisan SQL diatas tidak semua atribut pada tabel PRODUK memiliki
CONSTRAINT NOT NULL. NOT NULL hanya dijadikan sebagai kondisi
bahwa atribut nantinya tidak boleh kosong. Umumnya, pada toko online,
penjual tidak boleh mengosongi atribut id produk, id kategori, nama produk,
harga, stok, dan gambar. Standarnya, atribut – atribut tersebut adalah atribut
yang wajib ditampilkan pada tampilan produk.
CONSTRAINT pada FOREIGN KEY menggunakan ON UPDATE
CASCADES, tujuannya untuk otomatisasi pembaruan pada tabel PRODUK.
jika ada perubahan pada tabel KATEGORI, pengguna tidak perlu merubah
id_kategori pada tabel PRODUK karena otomatis nilai akan berubah sesuai
id_kategori pada tabel KATEGORI.
158 Judul Modul
BAB 10
PEMROSESAN QUERY
Manipulasi Data
Perintah DML fokus pada bagaimana SQL dapat memasukkan, memodifikasi,
menghapus dan menampilkan data dalam tabel database. Berikut adalah daftar
perintah DML:
Tabel 11 Perintah SQL Data Manipulation
Command Deskripsi
Operator Perbandingan
Operator Logika
Operator Spesial
Pada subbab Data Manipulation akan dibahas perintah SQL dasar seperti insert,
select, update, delete, operator logika, operator perbandingan, operator special,
fungsi agregat dan nilai null.
INSERT
Perintah INSERT digunakan untuk memasukkan tuple tunggal (row) ke dalam
relasi (tabel). Data yang dimasukkan ke dalam tabel harus sesuai dengan format
nama tabel dan atributnya. Selain itu, nilai yang dimasukkan harus disesuaikan
dengan urutan dari atribut dalam tabel. Dalam memasukkan nilai perlu
diperhatikan cara penulisannya:
Konten (row) dimasukkan dalam tanda kurung.
Karakter (string) dan nilai bertipe date ditulis dalam tanda petik tunggal
(apostrof).
Data numerik tidak menggunakan apostrof.
Atribut dimasukkan menggunakan koma.
161
1 Komputer
Bagi pengguna yang tidak hafal dengan urutan dari atributnya, perintah
INSERT juga dapat ditulis dengan menyertakan atribut pada tabel yang dituju.
Selain itu, penulisan ini berguna jika hanya beberapa atribut yang diisi pada tabel
tersebut. Namun, perlu diperhatikan juga CONSTRAINT yang digunakan pada
atribut tersebut. Hanya atribut yang tidak memiliki CONSTRAINT NOT
NULL, diijinkan untuk dikosongi (tidak diisi). Selain itu, pengguna juga tidak
dapat mengosongi atribut yang telah di set PRIMARY KEY. Sebagai contoh
pada tabel PRODUK (tabel 2), atribut deskripsi dan atribut tgl_masuk tidak di
set NOT NULL. Jika kita ingin melewatkan dua atribut tersebut, maka
penulisannya:
INSERT INTO PRODUK(id_produk, id_kategori, nama_produk, harga, stok,
gambar)
VALUES (01, 1, ’ASUS’, 16500000, 10, ‘asus.jpg’);
id_ id_ nama_ deskripsi harga stok tgl_ gambar
produk kategori produk masuk
SELECT
Perintah SELECT digunakan untuk menampilkan satu atau lebih data pada tabel
database. Data yang ditampilkan (diambil) disesuaikan dengan kondisi yang
162 Judul Modul
telah digunakan pada perintah SELECT. Jadi, tidak semua nilai atribut
ditampilkan pada SQL. Secara umum, perintah SELECT dituliskan dalam
bentuk:
SELECT * FROM nama_tabel;
Perintah diatas digunakan untuk menampilkan semua atribut pada tabel tersebut.
Misal, kita akan menampilkan semua nilai atribut pada tabel PRODUK, maka
penulisannya:
SELECT * FROM PRODUK;
Jika diamati, pada perintah diatas ada tanda * setelah perintah SELECT. Tanda
* digunakan untuk mengekspresikan semua kolom yang ingin ditampilkan tabel
PRODUK. Jika penggunaan perintah SELECT tanpa menggunakan tanda *,
maka atribut harus ditulis semua. Sebagai contoh:
SELECT id_produk, id_kategori, nama_produk, deskripsi, harga, stok,
tgl_masuk, gambar FROM PRODUK;
Hasil dari perintah diatas:
Tabel 12 Hasil Tampilan tabel PRODUK
Jika pengguna hanya ingin menampilkan beberapa atribut saja, maka tidak
semua atribut dituliskan dalam perintah SELECT. Misalnya, pengguna hanya
ingin menampilkan id_produk, nama_produk, dan harga. Maka perintah SQL
dapat ditulis:
SELECT id_produk, nama_produk, harga FROM PRODUK;
Maka, SQL hanya menampilkan 3 atribut sesuai dengan pilihan atribut yang
ditulis pada perintah SELECT.
164 Judul Modul
01 ASUS 1650000
02 Rubik 75000
03 OPPO 3500000
1. Klausa WHERE
Pada perintah SELECT, pengguna dapat memberikan kondisi tertentu untuk
menampilkan data berdasarkan batasan – batasan yang diberikan. Misalnya,
pada tabel PRODUK, pengguna ingin menampilkan tabel produk dengan harga
diatas 1.000.000, menampilkan tabel produk dengan id kategori 1, atau
menampilkan tabel produk dengan stok lebih dari 10. Klausa WHERE
memberikan batasan – batasan pada tabel yang ingin ditampilkan. Format
penulisannya, klausa WHERE diikuti kondisi atau batasan yang menentukan
baris yang diambil. Contoh: Menampilkan produk yang harganya diatas
1.000.000
SELECT * FROM PRODUK WHERE harga > 1000000;
Perintah SQL diatas hanya menampilkan nilai atribut sesuai dengan kondisi
harga diatas 1.000.000.
Maka hasil dari perintah diatas:
Tabel 14 Tampilan tabel PRODUK dengan klausa WHERE
Menampilkan nilai atribut dengan rentang nilai harga antara 3.000.000 dan
4.000.000
SELECT * FROM PRODUK
WHERE harga BETWEEN 3000000 AND 4000000;
Klausa BETWEEN menampilkan nilai atribut berdasarkan rentang nilai yang
ditentukan. SQL akan menampilkan atribut dengan nilai 3.000.0000 , 4.000.000
atau dalam rentang 3.000.000 – 4.000.000.
Tabel 16 Tampilan tabel PRODUK dengan klausa BETWEEN
Versi lain dari klausa BETWEEN adalah NOT BETWEEN. Klausa NOT
BETWEEN digunakan untuk menampilkan nilai diluar range yang ditentukan.
Dalam hal ini, NOT BETWEEN merupakan negasi dari BETWEEN.
Klausa BETWEEN juga dapat representasikan dengan menggunakan operator
perbandingan, seperti:
SELECT * FROM PRODUK
167
Klausa IN digunakan untuk mengecek apakah nilai atribut cocok dengan nilai
yang telah ditentukan, dalam kasus ini apakah cocok dengan nilai ‘ASUS’ atau
‘OPPO’.
Versi lainnya, untuk mengecek keanggotaan dari nilai atribut pada tabel dapat
menggunakan operator logika OR, seperti:
SELECT * FROM PRODUK
WHERE nama_produk = ‘ASUS’ or nama_produk=’OPPO’;
Bagaimanapun, klausa IN lebih efisien untuk mengekspresikan penggunakan
kondisi uji keanggotaan.
2. Klausa ORDER BY
Pada umumnya, tampilan baris (row) pada tabel SQL tidak diatur dalam posisi
tertentu. Secara standar, tampilan baris diurutkan berdasarkan primary key.
Dalam kasus toko online, konsumen ingin menampilkan produk sesuai dengan
168 Judul Modul
Pada tabel 12, selain diurutkan berdasarkan id_kategori dimana nilai atributnya
tidak unik, tabel dapat diurutkan secara descending pada atribut harga.
3. Klausa GROUP BY
Klausa GROUP BY digunakan untuk menentukan frekuensi distribusi baris
(row) pada tabel. Dalam banyak kasus, klausa GROUP BY biasanya digunakan
untuk mencari nilai rata – rata dari suatu kolom, nilai terendah atau tertinggi,
menjumlahkan antara baris satu dengan baris lainnya dalam satu kolom dalam
tiap jenisnya, atau digunakan untuk mengetahui banyaknya nilai untuk tiap
jenisnya. Dalam toko online, klausa GROUP BY dapat dimanfaatkan untuk
menampilkan harga terendah atau tertinggi produk, mengetahui berapa
banyaknya jumlah suatu produk, atau menghitung rata – rata keuntungan.
Sebagai contoh, kita akan menerapkan klausa GROUP BY pada tabel
PRODUK untuk mengetahui banyaknya jumlah produk berdasarkan
id_kategori. Misal, tabel PRODUK telah terisi 10 data.
Tabel 21 Tabel PRODUK dengan 10 data
Pada tabel PRODUK diatas, kita akan menampilkan jumlah produk berdasarkan
id_kategori. Berikut sintaknya:
SELECT id_kategori, COUNT (*)
FROM PRODUK
GROUP BY id_kategori;
Maka SQL akan menampikan:
Tabel 22 Tabel PRODUK dengan Klausa GROUP BY
172 Judul Modul
id_kategori Count(*)
1 4
2 4
3 2
UPDATE
Perintah UPDATE digunakan untuk modifikasi nilai atribut dari tupel yang
dipilih. Pada perintah UPDATE menggunakan klausa WHERE untuk
menentukan tupel mana yang akan dimodifikasi. Selain menggunakan klausa
tambahan yaitu SET digunakan untuk modifikasi nilai baru yang akan
dimasukkan. Berikut format penulisan UPDATE pada SQL:
UPDATE nama_tabel
SET nama_kolom=nilai_data
WHERE kondisi;
Nama_tabel adalah tabel yang dituju untuk dimodifikasi. Klausa SET
digunakan sebagai penentu tupel yang akan di modifikasi. SET berisi
nama_kolom yang akan dimodifikasi. Pada klausa SET, jika atribut berupa
numerik, maka modifikasi dapat berupa formula, misalnya pemberian diskon
pada harga. Klausa WHERE merupakan optional, jika perintah UPDATE
digunakan untuk memodifikasi semua nilai atribut pada tabel, maka klausa
WHERE dihilangkan. Namun, jika perintah UPDATE digunakan hanya untuk
memodifikasi tupel tertentu, maka klausa ditambahkan setelah klausa SET.
Contoh:
UPDATE PRODUK
173
SET harga=harga*0.2
WHERE id_kategori=1;
DELETE
Perintah DELETE digunakan untuk menghapus tupel dari relasi tabel. Sama
seperti perintah UPDATE, perintah DELETE melibatkan klausa WHERE
untuk menentukan tupel yang akan dihapus. Berikut format penulisan perintah
UPDATE.
DELETE FROM nama_tabel
WHERE kondisi;
Sifat klausa WHERE pada perintah DELETE adalah opsional. Jika ingin
menghilangkan semua row pada tabel, maka klausa WHERE dihilangkan.
Namun jika hanya row tertentu yang dihapus, maka klausa WHERE
ditambahkan setelah klausa SET.
Contoh:
DELETE FROM PRODUK
WHERE stok=0;
Perintah DELETE hanya menghapus row pada tabel. Jika semua row terhapus,
maka tabel masih berada pada database sebagai tabel kosong. Jika pengguna
ingin menghapus tabel dari database, dapat menggunakan fungsi DROP
TABLE.
Fungsi Agregasi
Fungsi agregasi merupakan fungsi untuk meringkas informasi dari beberapa
tuple ke tuple tunggal yang telah diringkas. Fungsi agregasi diterapkan pada
klausa GROUP BY untuk mengelompokkan tuple – tuple yang akan diringkas.
Standar SQL, ada 5 fungsi agregasi yang ditawarkan:
Average (AVG): mengembalikan rata – rata nilai pada kolom yang
ditentukan.
Minimum (MIN): mengembalikan nilai terendah pada kolom yang
ditentukan.
Maximum (MAX): mengembalikan nilai tertinggi pada kolom yang
ditentukan.
Total (SUM): mengembalikan jumlah nilai pada kolom yang ditentukan.
174 Judul Modul
Harga_Terendah
75000
Harga_Tertinggi
4500000
175
Nilai Null
Row dengan nilai null adalah row tanpa nilai. Nilai null tidak diartikan dengan
nilai 0 atau yang berisi spasi. Nilai null digunakan untuk merepresentasikan nilai
atribut yang mungkin tidak diketahui atau tidak berlaku pada tupel. Nilai spesial
seperti NULL digunakan untuk merepresentasikan banyak arti dari tupel yang
kosong. Sebagai contoh, pada tabel produk, ada produk yang tidak memiliki
deskripsi (deskripsi=null) atau tanggal masuk tidak diisi (tgl_masuk=null).
Dalam hal ini, nilai null memiliki banyak arti seperti nilai tidak diketahui, nilai
tidak tersedia, atau nilai tidak didefinisikan. SQL memiliki aturan yang
berkaitan dengan nilai null. Berikut definisi penggunaan dari nilai null.
Unknown value, digunakan untuk mewakili nilai tidak diketahui seperti
tanggal lahir seseorang tidak diketahui, maka di dalam database dapat
direpresentasikan sebagai nilai null. Contoh lain, nomor telepon seseorang
mewakili nilai tidak diketahui karena kemungkinan orang yang
bersangkutan tidak hafal atau orang tersebut tidak memiliki nomor telepon.
Unavailable/withheld value, digunakan untuk mewakili nilai tidak tersedia
seperti nomor telepon, ada yang tidak ingin nomor telepon disebar untuk
umum, maka di dalam database dapat direpresentasikan sebagai nilai null.
Undefined value / not applicable attribute, digunakan sebagai atribut nilai
tidak berlaku. Sebagai contoh, atribut kartu kredit akan bernilai null bagi
seseorang yang tidak memiliki kartu kredit. Dalam hal ini, atribut kartu
kredit tidak berlaku bagi orang tersebut.
Namun pada aturan SQL, SQL tidak membedakan arti NULL yang berbeda
tersebut. Karena makna null dapat digunakan oleh atribut – atribut yang dapat
di set ke null. Sebagai contoh, atribut nomor telepon dapat berarti salah satu
dari tiga definisi nilai null diatas atau semua definisi nilai null tersebut.
176 Judul Modul
BAB 11
BEKERJA DENGAN SQL
Banyak aplikasi MySQL yang dapat digunakan untuk praktek SQL, salah
satunya adalah XAMPP. XAMPP merupakan aplikasi open source digunakan
sebagai server lokal yang terdiri dari Apache HTTP Server, MariaDB database,
PHP dan PERL.
Untuk dapat menggunakan MySQL, terlebih dahulu harus mengaktifkan Server
MYSQL. Caranya, masuk ke config MySQL di C:\xampp\mysql\bin.
Pertama, buka MS-DOS Prompt melalui Run kemudian ketik command atau
cmd. Maka akan dapat masuk ke dalam direktori MySQL melalui Prompt
seperti dibawah ini:
cd C:\xampp\mysql\bin
177
Perintah –u pada diatas adalah tanda dari username dengan nama root.
Perintah –p adalah tanda dari password. Karena password masih kosong, jadi
tidak perlu disertakan dalam perintah akses ke server MySQL.
langkah selanjutnya, kita dapat secara langsung membuat database dengan
perintah SQL create.
178 Judul Modul
Create
Menciptakan Database
Database merupakan media utama yang harus dibuat untuk membuat basis data
yang berisi tabel – tabel dengan field didalam tabel tersebut. perintah yang
digunakan untuk menciptakan database pada MySQL adalah:
CREATE DATABASE nama_database;
Contoh:
create database toko_online;
Jika database berhasil dibuat, maka akan ada pesan Query OK. Database yang
dibuat dapat dilihat dengan menggunakan perintah berikut:
show databases;
Menciptakan Tabel
Tabel merupakan obyek utama dalam database yang berfungsi sebagai tujuan
penyimpanan data. Semua data dan informasi akan disimpan dalam tabel.
Pembuatan tabel dapat dilakukan setelah database dibuat (diaktifkan), karena
tabel akan pada database yang diaktifkan. Berikut adalah perintah untuk
mengaktifkan tabel: USE toko_online;
stok Integer
tgl_masuk Date
gambar varchar
Referensi
David M. Kroenke, D. J. (2016). Databse Concepts. Beijing: Pearson.
Gillenson, M. (2011). Fundamentals of Database Management Systems.
Memphis: Willey.
Manisha Bharambe, U. S. (2017). Database System. Pune: Nirali Prakashan.
Manisha Bharambe, V. G. (2017). Advanced Relational Database System.
Pune: Nirali Prakashan.
Oracle. (2020, 01 30). Union, Minus, and Intersect: Databases for Developers.
Retrieved from Oracle Live SQL:
https://livesql.oracle.com/apex/livesql/file/tutorial_GPSAXIY7KMD
X4ALZX654OXY6S.html
Singh, S. K. (2011). Database System: Concepts, Design and Application.
Delhi: Pearson.
Umakant Shirshetti, K. K. (2018). Relational Database Management System.
Pune: Narali Prakashan.