M.ASWADI
DATABASE DASAR WITH XAMPP
Diterbitkan secara mandiri melalui Nulisbuku.com
DATABASE DASAR WITH XAMPP Oleh:M.ASWADI Copyright © 2015 by M.ASWADI
Penerbit M.ASWADI
[email protected] [email protected]
Desain Sampul: M.ASWADI
Diterbitkan melalui: www.nulisbuku.com
2
Saya
suka
dengan
kata-kata
ini
nih… Kerjakanlah
hal
dengan
sungguh-
sungguh, dalam 1 tahun anda akan mulai terbiasa.
Dalam
2
tahun
anda
akan
menjadi Ahli. Dalam 3 tahun anda akan menjadi Pakar. Dalam 5 tahun anda akan menjadi Master. Apapun seorang
profesi
master,
anda,
anda
bila
akan
anda
dibayar
mahal. Jangan mengeluh apalagi berhenti ketika
perjuangan
anda
masih
seumur
jagung. Untukmu kekasihku dimanapun kamu berada…..
3
KATA PENGANTAR Assalamu’alaikum wr,wb… 10:49 Malam, 25 November 2015, awalnya ehhh
akhirnya
buku
sederhana
ini
selesai juga, sebenernya belum selesai sih, tapi berhubung masih ada project lain jadi yahh selesai sampe sini aja deh..
Saya
ucapkan
sebesar-besarnya
rasa
syukur
yang
kepada
Allah
SWT
karena berkat izin-Nya lah saya dapat menulis
buku
ini,
semoga
buku
ini
bermanfaat bagi kita semua (inget buku loh
ya),
pengen kirim
kalo
ketemuan,
ada
request
ngobrol
aja
tau
materi, apalah…
ke
email
[email protected] [email protected]
gw
atau tungguin
nih…
makasih sebelum dan sesudahnya *_*
Penulis,
M. ASWADI 4
DAFTAR ISI FIRST KATA PENGANTAR DAFTAR ISI PENDAHULUAN DATABASE KARAKTERISTIK UTAMA BASIS DATA APA ITU SYSTEM BASISDATA TUJUAN BASISDATA PEMANFAATAN KOMPONEN BASISDATA DBMS PANDANGAN TERHADAP BASIS DATA MODEL DATA MACAM-MACAM MODEL DATA ENTITY-RELATIONSHIP MODEL HIRARKI MODEL JARINGAN MODEL RELASIONAL ERD ENTITAS ATRIBUTE RELASI BAHASA BASISDATA DATA DEFINITION LANGUAGE (DDL) 5
DATA MANIPULATION LANGUAGE ANOMALY DAN REDUDANSI ANOMALI (ANOMALY) REDUNDANSI (REDUNDANCY) NORMALISASI NORMALISASI BASIS DATA BENTUK-BENTUK NORMAL KEAMANAN KEAMANAN
PADA
PERANCANGAN
BASISDATA TINGKAT AKSES PRAKTIKUM TIPE DATA INSTALASI XAMPP MEMBUAT DATABASE MODIFIKASI STRUKTUR TABLE FUNGSI AGREGAT OPERATOR FUNGSI MENYATUKAN HASIL TABEL PENUTUP
6
PENDAHULUAN BASISDATA? DATABASE? SYSTEM DATABASE? Tak perduli kan katamu… Tak perduli kan omonganmu… Ku hidup hanya sekali… Ku lakalukan sesuka hati… Hidup jangan dibikin susah Bawa santai seperti kau di pantai ……………………………………………………… ……………………………………….. Maaf terbawa suasana musik jadi ada sedikit lirik lagu ini atas -_Ok sedikit menyinggung masalah database, pertanyaan pertama adalah apa itu database?..... (mau saya yang jawab atau jawab sendiri?) •
Basis
:
Markas/Gudang,
tempat
bersarang/berkumpul. 7
•
Data : Representasi fakta dunia nyata yang mewakili suatu objek seperti manusia (pegawai, siswa, pembeli,pelanggan), barang, peristiwa, dan sebagainya yang direkam dalan bentuk angka, huruf simbol, teks, gambar, bunyi atau kombinasinya.
BASISDATA adalah himpunan kelompok data(arsip) yang
saling
berhubungan
yang
diorganisasi
sedemikian rupa agar kelak dapat dimanfaatkan kembali dengan cepat dan juga
kumpulan
berhubungan
mudah. Dapat disebut
file/tabel/arsip
yang
disimpan
yang
saling
dalam
media
penyimpanan. Jadi database atau basisdata adalah sebuah Kumpulan
file/tabel/arsip
yang
saling
berhubungan yang disimpan dalam media penyimpanan sedemikian
8
tertentu rupa
yang
agar
diorganisasi kelak
dapat
dimanfaatkan kembali dengan cepat dan mudah. Penjelasan tersebut saya dapatkan dari penjabaran data yang berarti berkas/file/arsip/etc… dan basis yang berarti tempat/markas/lemari/etc…. (gw juga tau *-* :v ) Basis Data (Database) = Lemari arsip -
Memberi sampul / map
-
Menentukan kelompok / jenis arsip
-
Memberi Nomor
-
Menempatkan arsip-arsip dengan cara/urutan tertentu Karakteristik utama basis data : Merepresentasikan aspek dari dunia nyata, Terstruktur dengan baik,
9
Dapat merepresentasikan kondisi saat ini (current state) Ada penggunanya dan ada aplikasi, Disimpan dalam memori komputer secara permanen, dan Dapat
diakses
dan
dimanipulasi
menggunakan DBMS Apa itu System BASISDATA? Sistem basis data dapat diartikan “sebagai kumpulan file / table yang saling berhubungan (dalam sebuah basis data di sebuah sistem komputer) sekumpulan
program
(DBMS
/
dan
Database
Management System) yang memungkinkan beberapa user (pemakai), dan / atau program lain untuk mengakses dan memanipulasi file (table) tersebut.
10
TUJUAN BASISDATA Mengapa dapat diakses dengan mudah dan cepat? Apa sebenarnya tujuan database? Apa tujuan dari database ?, ada beberapa tujuan pemanfaatannya sih : 1. Kecepatan dan kemudahan Yakni agar pengguna basis data bisa: -
menyimpan data
-
melakukan
perubahan/manipulasi
terhadap data -
menampilkan kembali data
dengan lebih cepat dan mudah dibandingkan dengan cara biasa (baik manual ataupun elektronis). 2. Efisiensi Space / ruang penyimpanan Dengan basis data kita mampu melakukan penekanan jumlah redundansi (pengulangan) data, baik dengan menerapkan sejumlah pengkodean atau dengan membuat relasi-
11
relasi antara kelompok data yang saling berhubungan. 3. Keakuratan Agar data sesuai dengan aturan dan batasan tertentu dengan cara memanfaatkan pengkodean atau pembentukan relasi antar data
bersama
dengan
penerapan
aturan/batasan (constraint) tipe data, domain data, keunikan data dsb. 4. Keamanan Agar data yang bersifat rahasia atau proses yang vital tidak jatuh ke orang / pengguna yang tidak berhak, yakni dengan penggunaan
account
(username
dan
password) serta menerapkan pembedaan hak akses setiap pengguna terhadap data yang bisa dibaca atau proses yang bisa dilakukan. Dan masih banyak lagi keuntungan-keuntungan lainnya…
12
KOMPONEN BASISDATA Apa komponen utama system basisdata? 1. Perangkat keras (hardware) 2. Sistem operasi (operating system) 3. Basis data (database) 4. Sistem (aplikasi/perangkat lunak) pengelola basis data (DBMS) 5. Pemakai (user) 6. Aplikasi (perangkat lunak) lain (bersifat optional).
Perangkat lunak yang termasuk DBMS adalah MSAccess, Foxpro, Dbase-IV, Foxbase, Clipper, My SQl, dan lainnya untuk kelas yang cukup sederhana. Apa itu DMBS? DBMS (Database Management System) Sistem Manajemen Basisdata atau DBMS (Database Management System) adalah perangkat lunak untuk mendefinisikan, menciptakan, mengelola dan mengendalikan pengaksesan basisdata. 13
Apa kelebihan dari DBMS? Performance yang dapat disimpan dengan penyimpanan dalam bentuk DBMS cukup besar,
sangat
jauh
berbeda
dengan
performance data yang disimpan dalam bentuk flat file. Disamping itu
juga akan
efisiensi penggunaan media penyimpanan dan memori Integritas
data
penggunaan
lebih
DBMS.
terjamin Masalah
dengan redudansi
sering terjadi dalam DBMS. Redudansi adalah
kejadian
berulangnya
data
atau
kumpulan data yang sama dalam sebuah database yang mengakibatkan pemborosan media penyimpanan. Independensi. Perubahan struktur database dimungkinkan terjadi tanpa harus mengubah aplikasi
14
yang
mengaksesnya
sehingga
pembuatan antarmuka ke dalam data akan lebih mudah dengan penggunaan DBMS. Sentralisasi. mempermudah
Data
yang
terpusat
pengelolaan
akan
database.
kemudahan di dalam melakukan bagi pakai dengan DBMS dan juga kekonsistenan data yang diakses secara bersama-sama akan lebiih terjamin dari pada data disimpan dalam bentuk file atau worksheet yang tersebar. Sekuritas. DBMS memiliki sistem keamanan yang lebih fleksibel daripada pengamanan pada file sistem operasi. Keamanan dalam DBMS akan memberikan keluwesan dalam pemberian hak akses kepada pengguna Beberapa alasan perlu dihindari (diminimalkan) terjadinya kerangkapan data: 1. Pemborosan media penyimpanan data 2. Biaya penyimpanan yang semakin besar
15
3. Kesulitan/inefisiensi dalam pengolahan data 4. Pemborosan waktu dalam pengolahan data 5. Semakin besar kemungkinan muncul data tidak konsisten Pandangan terhadap Basis Data Basis Data dapat dipandang dari dua sudut pandang: Sudut pandang pemakai (user view) Sudut pandang perancang - secara konseptual (conceptual view) - secara fisis (physical view)
16
A. User View Sering disebut juga sebagai level eksternal,
merupakan
pandangan
para
pemakai basis data dimana masing-masing pemakai basis data dapat memiliki cara pandang yang berbeda tergantung pada macam data apa saja yang tersedia atau dapat diakses oleh pemakai. B. Conceptual View Merupakan
suatu
pandangan
perancang basis data yang berkaitan dengan data-data apa saja yang perlu disimpan dalam basis data dan penjelasan mengenai hubungan antara data yang satu dan yang lainnya. C. Physical View sering disebut level internal, yaitu suatu pandangan perancang yang berkaitan dengan permasalah teknik penyimpanan datadata dalam basis data ke dalam fisik media penyimpanan data yang digunakan. 17
MODEL DATA Model Data Model data merupakan suatu cara untuk menjelaskan tentang data-data yang tersimpan dalam basis data dan bagaimana hubungan antar data tersebut untuk pemakai secara logik. Macam-macam model data: 1. Model Entity-Relationship 2. Model Hirarki 3. Model Jaringan 4. Model Relational Apa itu Model Entity-Relationship? Model Entity-Relationship Dibuat berdasarkan anggapan bahwa dunia nyata terdiri dari koleksi objek-objek dasar yang dinamakan entitas (entity) serta hubungan (relationship) antara entitas-entitas tersebut.
18
Komponen ER/ERD (Entity Relationship Diagram) 1. Entitas 2. Atribut, dan 3. Relasi Secara garis besar, entitas merupakan objek dasar yang terlibat dalam sistem, atribut berperan sebagai penjelas entitas, dan relasi menunjukkan hubungan yang terjadi di antara dua entitas. Model Hirarki? Model hirarki menjelaskan kepada pemakai tentang hubungan logik antar data dalam basis data dalam bentuk hubungan bertingkat. Model ini menggunakan pola hubungan orangtua anak.
19
Model Jaringan? Model ini menyerupai model hirarki, dengan suatu simpul anak bisa memiliki lebih dari satu orang tua.
Lalu bagaimana dengan Model Relasional? Merupakan model yang menggunakan sejumlah tabel untuk menggambarkan data serta hubungan antara data-data tersebut. Setiap tabel memiliki sejumlah kolom dimana setiap kolom memiliki nama yang unik.
20
Contoh : Penerbit
Pengarang
Koleksi
Kd_PN char(5)
Kd_Pengarang
Jumlah_copy Int(4)
Nama_Penerbit Varchar(20) Alamat Varchar(30) Telp Varchar(12)
char(5) Nama_pengarang Varchar(20) Alamat Varchar(30)
Kode_koleksi varchar(10) Judul Varchar(30) Tahun_terbit Varchar(8) Kode_PN char(5) Kode_Pengarang char(5)
21
ERD Entity Relationship Model ER_M
merupakan
suatu
model
data
yang
dikembangkan berdasarakan objek. ER_M digunakan untuk menjelaskan hubungan antar data dalam basis data
kepada
pemakai
secara
logik.
ER_M
digambarkan dalam bentuk diagram yang disebut diagram ER (Entity Relationship Diagram/ER_D). Komponen ER/ERD (Entity Relationship Diagram) 1. Entitas 2. Atribut 3. Relasi Entitas (Entity) Entitas menunjukkan objek-objek dasar yang terkait didalam sistem. Objek dapat berupa orang, benda atau hal
yang keterangannya perlu
disimpan didalam basis data.
22
Simbol:
Aturan Menulis Entitas: 1. Entitas dinyatakan dengan simbol persegi panjang 2. Nama
entitas
dituliskan
didalam
simbol
persegi panjang 3. Nama entitas berupa: kata benda, tunggal 4. Nama entitas sedapat mungkin menggunakan nama yang mudah dipahami dan dapatv menyatakan maknanya dengan jelas Atribut (Atribute) Atribut sering disebut sebagai Properti (property), merupakan keterangan-keterangan yang terkait pada sebuah entitas yang perlu disimpan sebagai basis data. Atribut berfungsi sebagai penjelas sebuah entitas. 23
Simbol:
Aturan menggambarkan atribut 1. Atribut dinyatakan dengan simbol ellips. 2. Nama atribut dituliskan didalam simbol ellips. 3. Nama atribut berupa kata benda, tunggal. 4. Nama atribut sedapat mungkin menggunakan nama yang mudah dipahami dan dapat menyatakan maknanya dengan jelas. 5. Atribut dihubungkan dengan entitas yang bersesuaian
dengan
menggunakan
sebuah
garis. Kerelasian antar entitas (Relationship) Kerelasian antar entitas mendefinisikan hubungan antar dua buah entitas. Kerelasian adalah kejadian atau transaksi yang terjadi antara dua entitas yang keterangannya perlu disimpan dalam basis data. 24
Simbol :
Aturan dalam menggambarkan kerelasian: 1. Kerelasian dinyatakan dengan simbol belah ketupat. 2. Nama kerelasian dituliskan di dalam simbol belah ketupat. 3. Kerelasian menghubungkan dua entitas. 4. Nama kerelasian berupa: kata kerja aktif (diawali dengan awalan me), tunggal. 5. Nama
kerelasian
sedapat
mungkin
menggunakan nama yang mudah dipahami dan dapat menyatakan maknanya dengan jelas . Jenis Kerelasian Antar Entitas (Relationship)
25
1. Kerelasian jenis 1 ke 1/satu ke satu (one to one) kerelasian jenis ini terjadi jika kejadian atau transaksi
diantara
dua
entitas
yang
berhubungan hanya memungkinkan terjadi sebuah kejadian transaksi pada sebuah entitas. 2. Kerelasian n ke 1/banyak ke satu (many to one) atau kerelasian jenis 1 ke n /satu ke banyak (one to many) kerelasian jenis ini terjadi jika kejadian atau transaksi diantara dua entitas yang berhubungan hanya memungkinkan terjadi satu kali dalam entitas pertama dan dapat terjadi lebih dari satu kali kejadian atau transaksi pada entitas kedua, atau sebaliknya. 3. Kerelasian jenis n ke n/banyak ke banyak (many to many) Kerelasian jenis ini terjadi jika kejadian atau transaksi
26
diantara
dua
entitas
yang
berhubungan memungkinkan terjadi lebih dari satu kali dalam entitas pertama dan entitas kedua. Simbol kerelasian antar entitas Jenis 1-ke-1 simbol:
1-ke-n
n-ke-n
27
Transformasi Model Data ke Basis Data Fisik Transformasi Umum/Dasar Nim
Nama_mhs
Alamat_mhs
Mahasiswa
nim
Nama_mhs
Tgl_lahir
Alamat_mhs
Tgl_lahir
Implementasi lainnya Implementasi Himpunan Entitas Lemah dan Sub Entitas Implementasi
Relasi
Tunggal
(Unary
Relation) Implementasi Relasi Multi Entitas (N-ary Relation)
28
Implementasi
Relasi
Ganda
(Redundant
Relation)
29
BAHASA BASISDATA Bahasa Basis Data Data Definition Language (DDL) bahasa yang digunakan untuk mendefinisikan basis data. Contoh: Menciptakan
basis
data
dengan
nama
akademik Create database akademik; Menciptakan tabel dengan nama mahasiswa, matakuliah -
Create table mahasiswa (NIM char(8), Nama char(30), Kelas char(4));
-
Create table matakuliah (kd_matakuliah char(5), nm_matakuliah char(25), sks int);
Data Manipulation Language bahasa yang digunakan untuk memanipulasi basis data. Manipulasi data pada basis data pada umumnya meliputi hal-hal dibawah ini : 30
a. Pemanggilan informasi yang tersimpan pada basis data (query). b. Penambahan informasi baru pada basis data. c. Penghapusan informasi yang tidak diperlukan lagi pada basis data. d. Modifikasi informasi yang ada pada basis data. Data manipulation language adalah bahasa yang memungkinkan pengguna untuk mengakses atau memanipulasi data dalam sistem basis data relasional. Menambahkan data/informasi, Perintah: Insert into nm_tabel (field1, field2, ... , field..n) values (nilai1,nilai2, ... , nilai..n) Contoh: Insert into mahasiswa (nim, nama, kelas) values(‘07146001’,’RIKA’,’MD2A’) 31
Menghapus data/informasi, Perintah: Delete from nm_tabel where nm_field=value (kriteria penghapusan) Contoh: Delete from karyawan where NIP =‘07001’ Permintaan informasi (query) Contoh: Query untuk menampilkan data-data mahasiswa yang memiliki IP lebih besar atau sama dengan 2.75 adalah sebagai berikut: Select * from mahasiswa Where IP >= 2.75 Modifikasi data/informasi Contoh: Modifikasi alamat karyawan yang memiliki NIP „07002‟ Update karyawan set alamat =‘Plaju’ where NIP=‘07002’ 32
ANOMALY DAN REDUDANSI Anomali dan Redudansi Anomali (Anomaly) Anomali/Penyimpangan adalah suatu masalah yang timbul pada suatu tabel, dimana masalah itu akan terjadi pada saat tabel akan dimanipulasi. Masalah yang timbul : Ketidakkonsistenan data. Data menjadi hilang ketika data lain dihapus. Macam Anomali 1. Anomali Penambahan (Insert Anomaly) Anomali Penambahan terjadi pada saat penambahan
data
hendak
dilakukan
ternyata ada elemen data yang masih kosong
dan
elemen
data
tersebut
diperlukan untuk proses penambahan
33
Contoh
relasi
anomali
yang
menimbulkan
penambahan.
Table
MataKuliah KodeMK
NamaMK
Ruang
Tempat
MK01
Pancasila
A 201
Lantai 2
MK02
Jaringan
A 302
Lantai 3
MK03
Basis Data
A 204
Lantai 2
MK04
Statistika
A 401
Lantai 4
MK05
Kalkulus
A 402
Lantai 4
Relasi diatas menyatakan bahwa : -
Untuk
suatu
KULIAH
menggunakan RUANG (misal
Pancasila
tertentu
menggunakan
Ruang A 201) - Untuk suatu RUANG berada pada TEMPAT tertentu (misal Ruang A 201 berada pada lantai 2) 34
Lalu apa masalahnya? Bagaimana cara menyimpan data bila terdapat fakta ada ruang baru dengan nama A 501 yang terdapat pada lantai 5 ? Penyisipan mengingat
tidak
dapat
tidak
ada
/
dilakukan belum
ada
perkuliahan yang menggunakan ruang tersebut
2. Anomali Pengubahan (Update Anomaly) Anomali
pengubahan
terjadi
apabila
pengubahan pada sejumlah data yang duplikasi tetapi tidak seluruhnya diubah Contoh
relasi
yang
menimbulkan
anomali pengubahan. Tabel Pemasok. Pemasok
Kota
Barang
Jumlah
Bahagia
Palembang
Monitor
10
Sentosa
Bandung
Keyboard
15
35
Makmur
Jakarta
Mouse
20
Bahagia
Palembang
CDROM
50
Apa masalahnya? Masalah : Seandainya pemasok Bahagia pindah ke kota
lain
misalnya
Semarang
dan
pengubahan hanya dilakukan pada data yang pertama (data pemasok Bahagia pada relasi Pemasok ada 2 buah) maka hasilnya
akan
menyebabkan
ketidakkonsistenan Relasi Pemasok setelah adanya pengubahan Pemasok
Kota
Barang
Jumlah
Bahagia
Semarang
Monitor
10
Sentosa
Bandung
Keyboard
15
Makmur
Jakarta
Mouse
20
Bahagia
Palembang
CDROM
50
36
Ketidakkonsistenan yang terjadi : Fakta bahwa
pertama
menyatakan
pemasok
Bahagia
berlokasi di Semarang Fakta bahwa
kedua
menyatakan
pemasok
Bahagia
berlokasi di Palembang Mana yang benar ?
3. Anomali
Penghapusan
(Delete
Anomaly) Anomali Penghapusan terjadi apabila ada suatu tupel yang tidak terpakai dihapus mengakibatkan adanya data lain yang hilang. Contoh
relasi
yang
menimbulkan
anomali penghapusan. Tabel Kursus
37
No Siswa
Nama Siswa
Nama Kursus
Biaya
001
Ali
Bahasa Inggris
100000
002
Budi
Bahasa Jerman
150000
003
Iwan
Bahasa Mandarin
120000
004
Arief
Bahasa Inggris
100000
005
Putri
Bahasa Jepang
175000
Masalahnya? Masalah : Seandainya data siswa dengan No Siswa 005
yang
(dikarenakan
bernama
Putri
data
tersebut
dihapus tidak
digunakan lagi maka recordnya akan dihapus) maka mengakibatkan data yang menyatakan bahwa biaya kursus bahasa Jepang terhapus.
38
sebesar
175000
juga
akan
Redundansi (Redundancy) Munculnya data yang berulang kali pada suatu tabel/relasi yang semestinya tidak diperlukan Kerangkapan data dapat terjadi : Kerangkapan data dalam satu file. Kerangkapan data dalam beberapa file.
39
NORMALISASI Apa itu Normalisasi? Normalisasi
adalah
proses
pembentukan
struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan. Tahap Normalisasi dimulai dari tahap paling ringan (1NF) hingga paling ketat (5NF) Biasanya hanya sampai pada tingkat 3NF atau BCNF karena sudah cukup memadai untuk menghasilkan tabel-tabel yang berkualitas baik. Alasan utama dari normalisasi database minimal sampai dengan bentuk normal ketiga adalah : Insertion anomalies Deletion anomalies Update anomalies
40
Normalisasi Basis Data Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb: 1. Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya dijamin
aman
harus
(Lossless-Join
Decomposition). Artinya, setelah tabel tersebut diuraikan / didekomposisi menjadi tabel-tabel baru, tabel-tabel baru tersebut bisa menghasilkan tabel semula dengan sama persis. 2. Terpeliharanya
ketergantungan
fungsional pada saat perubahan data (Dependency Preservation). 3. Tidak melanggar Boyce-Code Normal Form (BCNF) Jika kriteria ketiga (BCNF) tidak dapat terpenuhi, maka paling tidak tabel tersebut
41
tidak melanggar Bentuk Normal tahap ketiga (3rd Normal Form / 3NF). Suatu tabel dikatakan berada dalam BCNF jika untuk semua KF dengan notasi x y, mk x harus mrp superkey pada tabel tsb, jika tidak mk tabel harus didekomposisi bdskn KF yg ada shg X mjd superkey. Bentuk-bentuk Normal 1. Bentuk Normal Tahap Pertama (1st Normal Form / 1NF) 2. Bentuk Normal Tahap Kedua (2nd Normal Form / 2NF) 3. Bentuk Normal Tahap (3rd Normal Form / 3NF) 4. Boyce-Code Normal Form (BCNF) 5. Bentuk Normal Tahap (4th Normal Form / 4NF)
42
6. Bentuk Normal Tahap (5th Normal Form / 5NF) Bentuk Normal Tahap Pertama (1st Normal Form / 1NF) Bentuk normal 1NF terpenuhi jika sebuah tabel tidak memiliki atribut bernilai banyak (multivalued attribute), atribut composite atau kombinasinya dalam domain data yang sama. Setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi-bagi lagi) Bentuk Normal Tahap Kedua (2nd Normal Form) Bentuk normal 2NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk 1NF, dan semua atribut selain primary key, secara utuh memiliki
Functional
Dependency
pada
primary key Sebuah tabel tidak memenuhi 2NF, jika ada atribut yang ketergantungannya (Functional
43
Dependency) hanya bersifat parsial saja (hanya tergantung pada sebagian dari primary key) Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key, maka atribut
tersebut
harus
dipindah
atau
dihilangkan Bentuk Normal Tahap Ketiga (3rd Normal Form /3NF) Bentuk normal 3NF terpenuhi jika telah memenuhi bentuk 2NF, dan jika tidak ada atribut non primary key yang memiliki ketergantungan terhadap atribut non primary key yang lainnya. Untuk setiap Functional Dependency dengan notasi X A, maka: X harus menjadi superkey pada tabel tsb.
44
Atau A merupakan bagian dari primary key pada tabel
tsb.
Boyce-Code Normal Form (BCNF) Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap functional dependency terhadap setiap atribut atau gabungan atribut dalam bentuk: X Y maka X adalah super key tabel
tersebut
harus
di-dekomposisi
berdasarkan functional dependency yang ada, sehingga X menjadi super key dari tabel-tabel hasil dekomposisi Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF . Perbedaannya, untuk functional dependency
X
A,
BCNF
tidak
membolehkan A sebagai bagian dari primary key.
45
Bentuk Normal Tahap Keempat (4th Normal Form /4NF) Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute Untuk
setiap
multivalued
dependencies
(MVD) juga harus merupakan functional dependencies Bentuk Normal Tahap Keempat (5th Normal Form /5NF) Bentuk normal 5NF terpenuhi jika tidak dapat memiliki
sebuah
lossless
decomposition
menjadi tabel-tabel yg lebih kecil. Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dibentuk dependence.
46
berdasarkan
dependency, 5NF konsep
join
KEAMANAN Keamanan Pada Perancangan Basisdata Ketika kita meletakkan basisdata pada web, dia menjadi mudah diserang oleh hacker dan
penjahat lainnya dari luar organisasi
yang akan merusak atau mencuri data. Bayangkan bahwa gaji semua orang, data personalia, atau data rahasia perusahaan lainnya ditampilkan kepada umum melalui website. Bahkan dari dalam perusahaan sendiri dapat terjadi seorang pegawai merusak sistem ketika mereka dipecat. Kemungkinan orang-orang
terjadinya baik
dalam
gangguan
dari
maupun
luar
organisasi harus dilawan. Masalah yang lebih besar dapat terjadi ketika orang-orang dalam perusahaan
harus
menanggulangi
kemungkinan kesalahan yang tak disengaja. Menghapus atau menimpa suatu file data, menghapus tabel atau
mengupdate kolom 47
secara tidak benar dengan tidak sengaja, dapat menimbulkan masalah seperti yang ditimbulkan oleh hacker. Oleh karena itu keamanan harus direncanakan dengan baik dan diintegrasikan dalam basisdata. Basisdata
seharusnya
tidak
hanya
menyediakan data pada pengguna tapi juga menyediakan proteksi pada data tersebut. Lalu siapa yang berhak mengakses suatu data? Ada beberapa kategori pengguna untuk setiap sistem informasi, mulai dari pengguna akhir sampai
administrator
sistem
informasi.
Pengguna yang mempunyai akses untuk sistem informasi adalah sebagai berikut:
48
•
Pengguna akhir
•
Pelanggan
•
Manajemen
•
Administrator jaringan
•
Administrator sistem
•
Administrator basisdata
•
Pemilik skema
Tingkat akses? Pengguna pengguna
basisdata dengan
kemampuan untuk
diberi password
identitas dan
berhubungan dengan
basisdata. Basisdata keputusan
modern tentang
membutuhkan perancangan
yang
berhubungan dengan identitas pengguna dan password.
Keamanan
digunakan
untuk
mengontrol akses. Pengguna mempunyai akses ke baik data maupun sumberdaya, keduanya dapat dikontrol pada tingkatan basisdata. Apabila pengguna diberi identitas pengguna, mereka dapat mengakses basisdata
secara
langsung kedalam jaringan melalui aplikasi client-server. Mereka juga dapat log in 49
melalui
aplikasi
mengakses
middle
basisdata.
tier
untuk
Sebagai
contoh,
pengguna dapat log in ke server aplikasi web yang mempunyai
banyak pengguna web
yang log in ke server tersebut. Server aplikasi dengan
web
kemudian
basisdata
dengan
berkomunikasi cara
log
in
dengan menggunakan identitas pengguna yang
mempunyai
akses
minimum yang
dibutuhkan untuk menyelesaikan pekerjaan yang sedang dikerjakan oleh aplikasi web.
50
PRAKTIKUM Baik, karena disini kita akan langsung praktik, saya singgung sedikkit lagi masalah software yang sering digunakan dalam membuat suatu database kantoran, yaitu MS.Access, adalah software buatan
Microsoft
yang
ada
dalam
paketan
„MS.Office‟, ya kita secara otomatis mendapatkan software ini ketika kita menginstal MS.Office, karena aplikasi ini buatan Microsoft yang jelasnya aplikasi ini berbayar, jadi jika kalian bisa mendapatkan aplikasi ini secara gratis di situs-situs web yang menyediakan key nya, harusnya kalian sadar jika tindakan itu adalah illegal dan jika kalian adalah pembaca tulisan saya ini itu berarti kalian adalah orang yang berpendidikan yang secara otomatis harusnya kalian tahu jika tindakan illegal dapat dikenakan hukuman, jadi segeralah bertomat… eh salah bertobat….. Aplikasi selanjutnya ada banyak sih… tapi saya mau langsung aja menuju aplikasi yang tidak
51
berbayar, aplikasi yang saya kenal semenjak saya duduk di bangku smk dan sampai saat tulisan ini saya buatpun saya masih setia dengan si doi… MySQL, yang akan saya bahas dalam tulisan ini adalah mysql yang terdapat di paketan Xampp, yap ketika kalian mengistall Xampp maka kalian akan mendapatan Apache sebagai server dan MySQL sebagai database. Xampp software
adalah
yang
sebuah
terdiri
dari
paket
kumpulan
apache,
mysql,
phpmyadmin, php, Perl, Freetype2,dll. Xampp berfungsi untuk memudahkan instalasi lingkungan php, di mana biasa nya lingkungan pengembangan web
memerlukan
php,
apache,
mysql
dan
phpmyadmin serta software-software yang terkait dengan pengembangan web. Dengan menggunakan xampp, kita tidak perlu menginstall aplikasi-aplikasi tsb satu persatu.
MySQL adalah salah satu jenis database server yang sangat terkenal. MySQL menggunakan
52
bahasa SQL untuk mengakses database nya. Lisensi Mysql adalah FOSS License Exception dan ada juga yang versi komersial nya. Tag Mysql adalah “The World's most popular open source database”. MySQL tersedia untuk beberapa platform, di antara nya adalah untuk versi windows dan versi linux.
Sebelum masuk dalam praktikum, dalam database ada banyak tipe-tipe data, ya ada banyak dan kalian harus tahu tentang itu. 53
1. Tipe Numerik Tipe data numerik digunakan untuk menyimpan data numeric (angka). Ciri utama data numeric adalah suatu data yang memungkinkan untuk dikenai operasi aritmatika seperti pertambahan, pengurangan, perkalian dan pembagian. Berikut ini tipe field (kolom) di MySQL yang termasuk ke dalam kelompok tipe numerik: a. TINYINT Penggunaan : digunakan untuk menyimpan data bilangan bulat positif dan negatif. Jangkauan : -128 s/d 127 Ukuran
: 1 byte (8 bit).
b. SMALLINT Penggunaan : digunakan untuk menyimpan data bilangan bulat positif dan negatif. Jangkauan : -32.768 s/d 32.767 Ukuran
: 2 byte (16 bit).
c. MEDIUMINT
54
Penggunaan : digunakan untuk menyimpan data bilangan bulat positif dan negatif. Jangkauan : -8.388.608 s/d 8.388.607 Ukuran
: 3 byte (24 bit)
d. INT Penggunaan : digunakan untuk menyimpan data bilangan bulat positif dan negatif. Jangkauan
:
-2.147.483.648
s/d
2.147.483.647 Ukuran
: 4 byte (32 bit).
e. BIGINT Penggunaan : digunakan untuk menyimpan data bilangan bulat positif dan negatif. Jangkauan : ± 9,22 x 1018 Ukuran
: 8 byte (64 bit)
f. FLOAT Penggunaan : digunakan untuk menyimpan data bilangan pecahan positif dan negative presisi tunggal.
55
Jangkauan
:
3.402823466E+38
s/d
-
1.175494351E-38, 0, dan 1.175494351E-38 s/d 3.402823466E+38. Ukuran
: 4 byte (32 bit).
g. DOUBLE Penggunaan : digunakan untuk menyimpan data bilangan pecahan positif dan negatif presisi ganda. Jangkauan : -1.79...E+308 s/d -2.22...E-308, 0, dan 2.22...E-308 s/d 1.79...E+308. Ukuran
: 8 byte (64 bit).
h. REAL Penggunaan
:
Merupakan
sinonim
dari
DOUBLE. i. DECIMAL Penggunaan : digunakan untuk menyimpan data bilangan pecahan positif dan negatif. Jangkauan : -1.79...E+308 s/d -2.22...E-308, 0, dan 2.22...E-308 s/d 1.79...E+308. Ukuran j. NUMERIC 56
: 8 byte (64 bit).
Penggunaan
:
Merupakan
sinonim
dari
DECIMAL. 2. Tipe Date dan Time Tipe data date dan time digunakan untuk menyimpan data tanggal dan waktu. Berikut ini tipe field (kolom) di MySQL yang termasuk ke dalam kelompok tipe date dan time: a. DATE Penggunaan : digunakan untuk menyimpan data tanggal. Jangkauan
: 1000-01-01 s/d 9999-12-31
(YYYY-MM-DD) Ukuran
: 3 byte.
b. TIME Penggunaan : digunakan untuk menyimpan data waktu. Jangkauan
: -838:59:59 s/d +838:59:59
(HH:MM:SS) Ukuran
: 3 byte. 57
c. DATETIME Penggunaan : digunakan untuk menyimpan data tanggal dan waktu. Jangkauan : '1000-01-01 00:00:00' s/d '999912-31 23:59:59' Ukuran
: 8 byte.
d. YEAR Penggunaan : digunakan untuk menyimpan data tahun dari tanggal. Jangkauan : 1900 s/d 2155 Ukuran
: 1 byte.
3. Tipe String (Text) Tipe data string digunakan untuk menyimpan data string (text). Ciri utama data string adalah suatu data yang memungkinkan untuk dikenai operasi
aritmatika
seperti
pertambahan,
pengurangan, perkalian dan pembagian. Berikut ini tipe field (kolom) di MySQL yang termasuk ke dalam kelompok tipe string:
58
a. CHAR Penggunaan : digunakan untuk menyimpan data string ukuran tetap. Jangkauan : 0 s/d 255 karakter b. VARCHAR Penggunaan : digunakan untuk menyimpan data string ukuran dinamis. Jangkauan : 0 s/d 255 karakter (versi 4.1), 0 s/d 65.535 (versi 5.0.3) c. TINYTEXT Penggunaan : digunakan untuk menyimpan data text. Jangkauan
: 0 s/d 255 karakter (versi 4.1), 0
s/d 65.535 (versi 5.0.3) d. TEXT Penggunaan : digunakan untuk menyimpan data text. Jangkauan : 0 s/d 65.535 (216 - 1) karakter e. MEDIUMTEXT Penggunaan : digunakan untuk menyimpan data text. 59
Jangkauan : 0 s/d 224 - 1 karakter f. LONGTEXT Penggunaan : digunakan untuk menyimpan data text. Jangkauan : 0 s/d 232 - 1 karakter 4. Tipe BLOB (Biner) Tipe data blob digunakan untuk menyimpan data biner.
Tipe
ini
biasanya
digunakan
untuk
menyimpan kode-kode biner dari suatu file atau object. BLOB merupakan singkatan dari Binary Large Object. Berikut ini tipe field (kolom) di MySQL yang termasuk ke dalam kelompok tipe blob: a. BIT (sejak versi 5.0.3) Penggunaan : digunakan untuk menyimpan data biner. Jangkauan : 64 digit biner b. TINYBLOB
60
Penggunaan : digunakan untuk menyimpan data biner. Jangkauan : 255 byte c. BLOB Penggunaan : digunakan untuk menyimpan data biner. Jangkauan : 216 - 1 byte d. MEDIUMBLOB Penggunaan : digunakan untuk menyimpan data biner. Jangkauan : 224 - 1 byte e. LONGBLOB Penggunaan : digunakan untuk menyimpan data biner. Jangkauan : 232 - 1 byte 5. Tipe Data yang Lain Selain tipe data di atas, MySQL juga menyediakan tipe data yang lain. Tipe data di MySQL mungkin akan
terus
bertambah
seiring
dengan
61
perkembangan versi MySQL. Berikut ini beberapa tipe data tambahan MySQL: a. ENUM Penggunaan : Enumerasi (kumpulan data). Jangkauan : Sampai dengan 65535 string. b. SET Pengunaan : Combination (himpunan data). Jangkauan : Sampai dengan 255 string anggotas. Baiklah
akan
saya
tunjukkan
beberapa
langkah untuk membuat database dengan bantuan MySQL
dalam
paketan
Xampp,
kalian
bisa
menggunakan command prompt/CMD, kalian juga bisa langsung mengakses melalui phpmyadmin (localhost/phpmyadmin) melalui browser. adakah timbul pertanyaan dalam diri kalian cara membuat database ?... Instalasi Xampp.
62
1. Download
Xampp
di
https://www.apachefriends.org/download.htm l sesuai Sistem Operasi kalian. 2. Klik dua kali pada file master yang telah di download. 3. Akan tampil Warning seperti dibawah ini, klik ok.
4. Klik Next
63
5. Klik Next.
6. Pilih tempat penyimpanan Xampp, disini saya biarkan secara default.
64
7. Hilangkan centang pada “learn about Bitnami for XAMPP”, lalu klik Next.
8. Selanjutnya klik Next.
65
9. Tunggu sampai proses instalasi selesai.
66
10. Pada jendela ini klik Allow access
11. Anda bisa hilangkan centang pada “Do you want to start the Control Panel now?”, klik finish dan proses instalasi selesai.
67
Sekarang Xampp sudah terinstall di laptop. Buka Xampp Control Panel, klik start Apache dan MySql. buka browser lalu buka (Localhost/) pilih saja bahasa Inggris, untuk membuka phpmyadmin ketikkan (Localhost/phpmyadmin).
68
69
Let‟s going to create Database…….. Isikan nama database lalu klik create, disini saya buat database perpustakaan.
Jika database telah terbuat, selanjutnya buat table, masukkan nama table dan jumlah field/kolom, disini saya akan membuat table Penerbit dengan 4 field, lalu klik go.
Lalu
70
isikan
Name
field,
type
length/values
seperti
dibawah
data,
ini.
dan
(Kd_PN
sebagai Primary Key). Pada atribut pilih primay key untuk Kd_PN.
Jika sudah jadi maka struktur table akan seperti ini.
71
Untuk memasukkan data klik insert. Masukkan data dibawah ini.
Kd_PN
Nama_Penerbit
Alamat
Telp
20
Maxi
JL. Beo
0711567891
6 21 72
Media
Jl. Pipit7 0711678923
22
Bintang
Jl. Punai
0711832450
23
Galang
Jl.Betet
0711432178
Jika sudah klik browse, akan akan tampil seperti ini.
Itu adalah data yang kita isikan tadi, kalian bisa menghapus maupun mengedit data tersebut.
Cukup mudah bukan? ya itu adalah cara membuat database dengan cara klik klik jadi…. :v .. kalian juga bisa menggunakan perintah sql untuk membuat database dan kawan-kawannya, berikut saya jelaskan.
73
Klik tab SQL
Nah disana ada form dimana kita dapat memasukkan perintah. Perintah untuk membuat database
adalah
“create
database
nama_database;” tanpa tanda petik dan pastikan nama database tidak menggunakan spasi. Jadi ketikkan “create database Perpustakaan;” untuk membuat database perpustakaan. Lalu klik go.
74
Database Perpustakaan telah kita buat selanjutkan buat table, klik SQL maka akan muncul form seperti tadi kita membuat database. pastikan kita sudah melilih database Perpustakaan.
75
Perintah untuk membuat table adalah”create table nama_table(nama_field type(ukuran), nama_field type(ukuran), nama_field type(ukuran));” dan seterusnya… kita akan membuat table penerbit, ketikkan
perintah
Penerbit(Kd_PD
berikut char(5)
“create
table
primary
key,
Nama_Penerbit varchar(20), Alamat varchar(30), Telp varchar(12));” disini saya jadikan Kd_PN sebagai primary key, pastikan tanpa tanda petik dan pastikan nama table dan nama field tidak menggunakan spasi. Klik go.
Table telah dibuat, anda bisa melihat struktur table
dengan
nama_table;”,
menggunakan untuk
melihat
perintah
“desc
struktur
table
penerbit, ketikkan “desc penerbit;” maka akan tampil seperti ini.
76
Untuk memasukkan data/menginput data gunakan petintah “insert into nama_table value(„isi field1‟, „isi field2‟, „isi field3‟, „isi field4‟);” dan seterusnya, untuk mengisi table Penerbit ketikkan “insert into penerbit value(„20‟,‟Maxi‟,‟JL.Beo 6‟,‟0711567891‟);”.kalian bisa megisi banyak data sekaligus seperti ini “insert into nama_table values(„isi field1‟, „isi field2‟, „isi field3‟, „isi field4‟), („isi field1‟, „isi field2‟, „isi field3‟, „isi field4‟), („isi field1‟, „isi field2‟, „isi field3‟, „isi field4‟), („isi field1‟, „isi field2‟, „isi field3‟, „isi field4‟), („isi field1‟, „isi field2‟, „isi field3‟, „isi field4‟);”
isi file table Penerbit dengan data
berikut : 77
Kd_PN
Nama_Penerbit
Alamat
Telp
20
Maxi
JL. Beo 6
0711567891
21
Media
Jl. Pipit7
0711678923
22
Bintang
Jl. Punai
0711832450
23
Galang
Jl.Betet
0711432178
Database dan table telah dibuat dan diisi menggunakan syntax melalui browser, sedikit pertanyaan konyol, “Bagaimana jika saya tidak meliliki browser di pc saya?” :3 pertanyaan konyol kan, imposible kalian tidak meliliki browser di pc kalian, tapi jika memang tidak ada kita masih bisa membuat database melalui CMD…. (maksa banget -__-). Baiklah buka CMD malalui start menu – All Program – Accessories – Command Prompt, atau kalian bisa tekan tombol Wondows + R dan ketikkan CMD. Klik ok.
78
Jika command prompt sudah terbuka maka pindahkan ke direktori xampp/mysql/bin ketikkan cd c:\xampp\mysql\bin (enter) mysql.exe –h localhost –u root –p (enter) jika disuruh memasukkan password kosongkan saja dan tekan enter. Anda juga bisa ketikkan ini di run untuk mengaksesnya C:\xampp\mysql\bin\mysql.exe -user=root.
79
Jika sudah seperti gambar diatas berarti kita sudah masuk dalam mysql. Nah untuk membuat database, masukkan perintah yang sama seperti perintah membuat database sebelumnya, yaitu “create database nama_table;”. Begitupun untuk membuat table, insert, dll kita juga menggunakan perintah yang sama seperti tadi, jadi saya tidak akan menjelaskannya lagi. (kan sama buat apa dijelasin lagi -___ kalian bisa berkreasi sendiri).
Kita sudah membuat database, membuat table, mengisinya dengan data, lalu bagaimana cara 80
mengeditnya? Menghapusnya? Menampilkan yang diinginkan? Menjumlahkan? Dan yang lainnya… baiklah jika pertanyaan seperti itu maka kita akan membahas tentang modifikasi struktur table, kali ini saya mencoba menggunakan command prompt. Menambah field dalam table. Untuk menambah field dalam table kita dapat menggunakan perintah add, yaitu “alter table table_nama add nama_field type (size);”. Kita akan menambahkan field email pada table penerbit, ketikkan perintah berikut “alter table penerbit add email varchar(35);”.
81
Maka bertambah field email yang kita tambahkan tadi.
Merubah type dan ukuran field. Untuk merubah type dan ukuran field pada table
kita
dapat
menggunakan
perintah
modify “alter table table_nama modify field type(size);”. Kita coba ubah type field Telp menjadi int, ketikkan perintah berikut “alter table penerbit modify Telp int(12);”. 82
Type field Telp telah berubah menjadi integer. Merubah nama field/kolom Untuk merubah nama field kita dapat menggunakan format
“alter
perintah table
“change”
dengan
nama_table
change
field_lama field_baru type(size);”. Mari kita rumah nama field Alamat menjadi Address (kiar agak keren :D) ketikkan perintah berikut
83
“alter table penerbit change Alamat Address varchar(30);”.
Terengggg Alamat sudah berubah menjadi Address, gak perlu potong kambing buat ganti namanya wkwkwkw *efek liat meme :v. Menghapus (table, database, field) Untuk menghapus database/table/field kita dapat menggunakan perintah drop, untuk menghapus
database
“drop
database
nama_database;”, untuk menghapus table “drop table nama_table;”, untuk menghapus 84
field
“alter
table
nama_table
drop
nama_field;”, sekarang kita coba hapus field email yang tadi kita tambahkan, ketikkan perintah berikut “alter table penerbit drop email;”.
Field email pun menghilang -_-.
Merubah nama table Untuk merubah nama table kita dapat menggunakan perintah rename, “alter table nama_table_lama rename nama_table_baru”,
85
udah
nama
table
penerbit
menjadi
tbl_penerbit, “alter table penerbit rename tbl_penerbit;”.
Gunakan nama table tbl_penerbit untuk perintah selanjutnya. Menghapus record/data Untuk
menghapus
record
kita
dapat
menggunakan perintah delete, “delete from nama_table where field='isi_field';”. Sekarang coba hapus data di table tbl_penerbit dengan
86
Kd_PN 20, ketikkan perintah berikut “delete from tbl_penerbit where Kd_PN=20;” (karena 20 merupakan format angka, tidak perlu menggunakan tanda petik satu).
Jika kalian ingin menghapus berdasarkan nama, maka menggunakan tanpa petik satu, “where Nama_Penerbit =‟Media‟;”.
Update Bagaimana jika data yang dimasukkan salah? Apakah bisa diedit atau harus di hapus dulu lalu masukkan lagi yang benar? (ribet amat ___-),
kita
menggunakan
dapat perintah
mengubah update,
data “update 87
nama_table set nama_field='sekip' where field_condotion=21;”, baiklah kita akan coba mengupdate data dengan Kd_PN 21, kita rubah nama penerbitnya menjadi Media Sehati, ketikkan perintah berikut “update tbl_penerbit
set
Nama_Penerbit
=‟Media
Sehati‟ where Kd_PN=21;”
Data telah berubah sesuai yang diinginkan.
Perintah Select/Menampilkan Terkadang kita hanya ingin menampilkan beberapa data saja, untuk menampilkan semua data pada satu table kita bisa menggunakan
perintah
“select
*
from
nama_table;”. Untuk menampilkan beberapa 88
field saja kita cukup mengganti tanda * menjadi
nama_field
yang
ingin
kita
tampilkan, “select Nama_Penerbit, Address from tbl_penerbit;”.
Untuk menampilkan data dengan kondisi, misalnya data penerbit yang Kd_PN nya hanya 21 maka kita cukup menambahkan “where Kd_PN=21;”.
89
Kita juga bisa menggunakan dua kondisi, misalnya data dan Kd_PN nya 21 dan nama yang karakter depannya M, cukup tambahkan perintah “and Nama_Penerbit like „M%‟;”.
Bisa juga menampilkan dua kondisi dimana Kd_PN sama dengan 21 atau Nama_Penerbit di awali karakter B, ganti perintah and menjadi or. 90
Untuk menampilkan sesuai huruf belakang kalian bisa mengganti menjadi tanda % dulu baru karakter yang diinginkan seperti ini „%i‟, untuk huruf yang berada di tengah kalian bisa menjepit karakter tersebut dengan dua tanda % seperti ini „%s%‟.
Selanjutnya kita akan masuk pada fungsi agregat seperti : Sum Count Avg 91
Min Mix SUM SUM digunakan untuk menjumlahkan kolom tertentu, kita bisa menggunakannya dengan format
perintah
sebagai
berikut
“select
sum(field/kolom) from nama_table;”, coba jumlahkan kolom Kd_PN, ketikkan “select sum(Kd_PN) from tbl_penerbit;”.
92
21 + 22 + 23 = 66, (kasus diatas hanya sebagai
contoh
saja,
buat
apa
kan
menjumlahkan kode -___-), kita juga bisa menggunakan kondisi where, misalnya kita ingin menjumlahkan yang Nama_Penerbitnya Bintang
saja
maka
tambahkan
“where
Nama_Penerbit =‟Bintang‟;”.
COUNT Selanjutnya
adalah
fungsi
count,
count
berfungsi untuk menghitung jumlah field atau kolom, kita dapat menggunakan fungsi ini 93
dengan format perintah “select count(field) from nama_table;”, sekarang coba jumlahkah hitung data yang ada pada field Kd_PN, “select count(Kd_PN) from tbl_penerbit;”.
Terlihat ada 3 data dalam field Kd_PN, kita juga
bisa
misalnya
menggunakan kita
ingin
Nama_Penerbitnya tambahkan =‟Bintang‟;”.
94
kondisi
menghitung
Bintang
“where
saja
where, yang maka
Nama_Penerbit
Terlihat hanya ada 1 record yang dalam field Kd_PN dengan Nama_Penerbit Bintang. AVG Fungsi AVG adalah untuk mencari rata-rata suatu field, misalkan kita ingin mencari ratarata field Kd_PN, maka ketikkan “select avg(Kd_PN) from tbl_penerbit;”.
95
MIN MIN berfungsi untuk mencari nilai terkecil dari suatu field, coba kita cari nilai terkecil dari field Kd_PN, ketikkan perintah berikut “select min(Kd_PN) from tbl_penerbit;”.
Kita lihat nilai terkecilnya adalah 21.
96
MAX Jika MIN berfungsi untuk mencari nilai terkecil, maka MAX berfungsi untuk mencari nilai terbesar, “select max(Kd_PN) from tbl_penerbit;”.
Sesuai
dengan
data
yang
ada,
nilai
terbesarnya adalah 23.
97
Setelah fungsi agregat, sekarang kita masuk pada operator Between – and In Or Not BETWEEN - AND Between berfungsi untuk menampilkan data dari yang kita tentukan sampai yang kita tentukan, bingung? :v ini seperti jangkauan, jadi kita bisa menampilkan misalnya dari 1 sampai 100 atau dari 2 sampai 4 dan sebagainya, kita bisa gunakan fungsi ini dengan
format
nama_field
sebagai
from
berikut
nama_table
“select where
field_konsdisi between 'awal' and 'akhir'; Coba kita tampilkan data tbl_penerbit dari Kd_PN 21 sampai 23 “select * from 98
tbl_penerbit where Kd_PN between '21' and '23';”.
OPERATOR IN Operator menyatakan
IN
dapat keadaan
digunakan
untuk
“SALAH
SATU
DIANTARA” perintah IN dapat digunakan dengan format “select Nama_field from nama_table
where
field_kondisi
IN(„kondisi1‟,‟kondisi2‟);”. Sekarang coba ketikkan “select * from tbl_penerbit where Kd_PN IN(21,22);”.
99
Maka akan tampil data yang mempunyai Kd_PN 21 dan 22.
OPERATOR OR Operator
OR
dapat
digunakan
untuk
Menyatakan keadaan “ATAU” dengan format penulisan
“select
Nama_field
from
nama_table where field_kondisi = „kondisi1‟ OR field_kondisi = ‟kondisi2‟;”,
coba
ketikkan “select * from tbl_penerbit where Kd_PN = 21 OR Kd_PN = 22;”.
100
Fungsi yang sama dengan format penulisan berbeda? Ya benar.
OPERATOR NOT Operator
NOT
Menyatakan
dapat
keadaan
digunakan “TIDAK”,
untuk dengan
format perintah “select nama_field from nama_table where field_kondisi NOT LIKE „kondisi‟;”, sekarang kita akan menampilkan semua
data
namun
kita
tidak
akan
menampilkan data dengan Nama_Penerbit
101
Bintang, “select * from tbl_penerbit where Nama_Penerbit NOT LIKE „Bintang‟;”.
Maka data dengan Nama_Penerbit Bintang tidak akan tampil.
Sekarang kita akan membahas fungsi : Substring Left Right Mid SUBSTRING
102
Substring
digunakan
untuk
menampilkan/mengambil beberapa karakter dengan posisi yang kita tentukan, misalnya kita hanya ingin mengambil 2 karakter dalam suatu field, dengan format penulisan “select substring(nama_field, posisi_pertama_karakter,
jumlah_karakter)
from nama_tabel;”. Kita juga bisa menambah kan kondisi „where‟, sekarang coba ketikkan perintah
berikut
substring(Nama_Penerbit,
“select 1,
3)
from
tbl_penerbit where Kd_PN = 21;”.
Maka yang akan tampil hanyalah Med.
103
LEFT Fungsi left hampir sama dengan substring, hanya saja kita mengambil karakter dari kiri yang berarti kita tidak perlu menentukan posisi
pertama
karakter,
“select
left(nama_field, jumlah karakter yang ingin di ambil) from nama_table;”. Coba ketikkan perintah “select left(Nama_Penerbit, 3) from tbl_penerbit where Kd_PN = 21;”.
Maka data yang tampil pun hanya Med juga.
RIGHT Jika fungsi left untuk mengambil data dari sebelah kiri, maka right akan mengambil data dari sebelah kanan, coba ketikkan “select right(Nama_Penerbit, 3) from tbl_penerbit where Kd_PN = 21;”. 104
Maka data yang tampil adalah 3 karakter dari kanan yaitu ati.
MID Fungsi MID sama dengan fungsi substring, karena kita harus menentukan posisi pertama dan juga posisi terakhir karakter, ketikkan perintah “select mid(Nama_Penerbit,1, 3) from tbl_penerbit where Kd_PN = 21;”.
105
Sama kan -___-
Mengubah Judul Field / Kolom menggunakan As AS Jadi kolom-kolom / field yang ingin kita tampilkan bisa kita beri judul sesusai dengan keinginan kita sendiri, misalnya kita ingin menampilkan field Nama_Penerbit dengan judul Nama saja, perintahnya sebagai berikut, “select
Nama_Penerbit
tbl_penerbit;”.
106
AS
Nama
from
Maka judul field akan berubah menjadi Nama.
Menampilkan data tanpa duplicate menggunakan DISTINCT DISTINCT Distinct berfungsi untuk menampilkan data tanpa duplicate / data ganda dengan perintah “select
distinct
nama_field
from
nama_table;”. Sekarang coba isikan data dengan nama bintang maka kita akan 107
mempunyai 2 data dengan nama bintang, lalu gunakan
perintah
“select
distinct
Nama_Penerbit from tbl_penerbit;”.
Saat kita menggunakan fungsi distinct makan hanya akan ditampilkan 1 nama Bintang.
MENYATUKAN HASIL TABEL Kita dapat menyatukan hasil dari dua table atau lebih menggunakan INNER JOIN, Inner join = Inner join hanya akan ditampilkan baris baris yang satu sama lain memiliki kecocokan, ada Left join
108
= Left join akan menampilkan semua isi tabel sisi kiri , walaupun data di pasangan joinnya yang disisi kanan nilainya tidak sama ataupun berisi null, selanjutnya ada Right join = Right join ini hanya kebalikan left join , akan menampilkan semua isi tabel sisi kanan, walaupun data di pasangan joinnya yang di sisi kiri nilainya tidak sama ataupun berisi null. Sekarang buatlah table penerbit, pengarang, dan koleksi di database Perpustakaan, kita sudah membuat
tbl_penerbit
kalian
hanya
cukup
menyesuaikan lagi seperti berikut : Struktur Table Penerbit
Pengarang
Koleksi
Kd_PN char(5) Kd_Pengarang
Jumlah_copy
Nama_Penerbit char(5)
Int(4)
Varchar(20)
Nama_pengarang Kode_koleksi
Alamat
Varchar(20)
varchar(10)
Varchar(30)
Alamat
Judul 109
Telp
Varchar(30)
Varchar(12)
Varchar(30) Tahun_terbit Varchar(8) Kode_PN char(5) Kode_Pengarang char(5)
Isi table Tabel Penerbit Kd_PN
Nama_Penerbit
Alamat
Telp
20
Maxi
JL. Beo
0711567891
6 21
Media
Jl. Pipit7 0711678923
22
Bintang
Jl. Punai
0711832450
23
Galang
Jl.Betet
0711432178
Tabel Pengarang 110
Kode_Pengarang Nama_pengarang
Alamat
11
Ani
Rajawali 1
12
Ali
Macan 2
13
Badi
Merpati 3
14
Cinta
Kijang 4
Tabel Koleksi Jumlah_copy
Kode_koleksi
Judul
Tahun_terbit
Kode_PN
Kd_Pengarang
25
01
Algoritma
2008
20
11
20
02
Basis Data
2007
21
11
30
03
Internet
2006
22
14
50
04
Mysql
2005
23
13
111
Sekarang kita telah memiliki table penerbit, pengarang, dan koleksi dalam database Perpustakaan dengan isi yang sudah kita tentukan.
INNER JOIN
112
Kini coba kita gunakan fungsi inner join dengan
format,
„select
nama_field.nama_table, nama_field.nama_table, nama_field.nama_table INNER
JOIN
from
nama_table1
nama_table2
nama_table1.field_kode
ON =
nama_table2.field_kode;”. Sekarang
coba
kita
coba
tampilkan
Nama_Pengarang dari table pengarang dan Judul
dari
table
koleksi,
pengarang.Nama_Pengarang,
“select
koleksi.Judul
from pengarang INNER JOIN koleksi ON pengarang.Kd_Pengarang
=
koleksi.Kode_Pengarang;”.
113
Maka
data
yang
tampil
adalah
data
Nama_Pengarang dari table pengarang dan data Judul dari table koleksi sesuai dengan Kode_Pengarang yang ada di table koleksi dan
Kd_Pengarang
yang
ada
di
table
pangarang.
LEFT JOIN Sekarang kita akan menggunakan left join, dimana akan menampilkan semua isi tabel sisi kiri , walaupun data di pasangan joinnya yang disisi kanan nilainya tidak sama ataupun berisi null, untuk mengetahui perbedaannya coba isikan data berikut dalam table penerbit. 25
Fress
JL. Lurus
0711567345
27
Gunin
Jl. Belok
0711678675
114
Selanjutnya ketikkan perintah berikut “select penerbit.Nama_Penerbit, koleksi.Judul from penerbit left join koleksi ON penerbit.Kd_PN = koleksi.Kode_PN;”.
Maka seluruh data Nama_Penerbit dalam table penerbit akan tampil sedangkan data judul yang tidak ada kecocokkannya di penerbit akan tampil NULL.
115
RIGHT JOIN Lawan dari left join, right join akan menampilkan semua isi tabel sisi kanan, walaupun data di pasangan joinnya yang di sisi kiri nilainya tidak sama ataupun berisi null. Coba ketikkan perintah berikut. “select koleksi.Judul, penerbit.Nama_Penerbit from koleksi
right
join
penerbit
ON
penerbit.Kd_PN = koleksi.Kode_PN;”.
Maka akan tampil sebaliknya dari left join. Juga ada Full join akan menampilkan semua isi tabel sisi kiri walaupun data di pasangan joinnya yang disisi kanan nilainya null atau sebaliknya, 116
kalian bisa latihan sendiri sekaligus melatih logika kalian.
117
PENUTUP Alhamdulillah… masih kurangkah materinya? kurang
Saya
banyak,
project
lain
rasa
tapi yang
sih
masih
berhubung juga
ada
harus
di
kerjakan saya rasa ini cukup untuk materi
dasar,
sengaja
materinya
saya
batasi
cukup
sampai
(udah
kayak
lagu)
ya
kalo
disini saya
lanjutin nanti judul bukunya bukan database dasar, tapi database lajut :v …. Makasih buat kalian yang udah bersedia
membaca
tulisan
ini,
silahkan hubungi saya melalui email yang tertera, happy coding… :D
118