0% menganggap dokumen ini bermanfaat (0 suara)
314 tayangan71 halaman

Tentang PHP

PHP pertama kali dibuat pada tahun 1995 oleh Rasmus Lerdorf sebagai kumpulan skrip untuk memproses formulir web. Bahasa ini terus berkembang dengan ditulis ulang oleh perusahaan Zend dan merilis versi-versi baru dengan fitur-fitur tambahan seperti akses database dan orientasi objek. PHP merupakan bahasa skrip yang banyak digunakan untuk membangun aplikasi web interaktif karena kemudahan pengembangan dan didukung oleh berbagai

Diunggah oleh

CindyFzh
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
314 tayangan71 halaman

Tentang PHP

PHP pertama kali dibuat pada tahun 1995 oleh Rasmus Lerdorf sebagai kumpulan skrip untuk memproses formulir web. Bahasa ini terus berkembang dengan ditulis ulang oleh perusahaan Zend dan merilis versi-versi baru dengan fitur-fitur tambahan seperti akses database dan orientasi objek. PHP merupakan bahasa skrip yang banyak digunakan untuk membangun aplikasi web interaktif karena kemudahan pengembangan dan didukung oleh berbagai

Diunggah oleh

CindyFzh
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 71

A.

Sejarah Tentang PHP


PHP pertama kali dibuat oleh Rasmus lerdroft pada tahun 1995. Pada waktu itu
PHP masih bernama Form Interpreted (FI), yang wujudnya berupa sekumpulan script
yang digunakan untuk mengolah data formulir pada sebuah web.

Kemudian ia mengeluarkan Personal Home Page Tools versi 1.0 secara gratis. Versi
ini pertama kali keluar tahun 1995. isinya adalah sekumpulan script PERL yang
dibuatnya untuk membuat halaman webnya menjadi dinamis. Selanjutnya Rasmus
merilis kode sumber tersebut secara umum dan menamakannya PHP/FI, kependekan
dari "Hypertext Preprocessor"/"Form Interpreted".
1. Pada tahun 1992, dirilis PHP/FI versi 2.0 yang kemampuannya telah dapat
mengakses database dan terintegrasi dengan HTML. Pada rilis ini
interpreter PHP sudah diimplementasikan pada program C. Dalam rilis ini
disertakan juga modul-modul ekstensi yang meningkatkan kemampuan
PHP/Fi secara signifikan.
2. Pada tahun 1997, perusahaan bernama Zend menulis ulang interpreter PHP
menjadi lebih bersih,lebih baik dan lebih cepat. Kemudian pada Juni 1998,
perusahaan tersebut merilis PHP versi 3.0.
3. Pada pertengahan tahun 1999, Zend merilis interpreter baru dan rilis
tersebut dikenal dengan PHP versi 4.0. Perubahan yang paling mendasar
dari PHP 4.0 ini adalah terintegrasi nya Zend engine yang dibuat oleh Zend
Suraski dan Andi Gutmans yang merupakan penyempurnaan dari PHP
scripting engine. Yang lainnya adalah build in HTTP session, tidak lagi
menggunakan library tambahan. Tujuan dari bahasa scripting ini adalah
untuk membuat aplikasi-aplikasi yang dijalankan di atas teknologi web.
Dalam hal ini, aplikasi pada umumnya akan memberikan hasil pada web
browser, tetapi prosesnya secara keseluruhan dijalakan pada web server.
PHP ini adalah PHP yang paling banyak digunakan dikarenakan
kemampuannya untuk membangun aplikasi web kompleks tetapi tetap
memiliki kecepatan dan stabilitas yang tinggi.
4. Pada Juni 2004, Zend merilisi PHP versi 5.0. Dalam versi ini, inti dari
interpreter PHP mengalami perubahan besar. Versi ini juga memasukkan
model pemrograman berorientasi objek ke dalam PHP untuk menjawab
perkembangan bahasa pemrograman ke arah paradigma berorientasi objek.

B. Pengertian PHP
PHP merupakan bahasa scripting yang terpasang pada HTML. Sebagian
besar sintaks mirip dengan bahasa C, Java dan Perl ditambah beberapa fungsi PHP
yang spesifik. Tujuan utama penggunan bahasa ini adalah untuk memungkinkan
perancangan web menulis halaman web dinamis dengan cepat.

C. Kelebihan PHP dari bahasa pemrograman web, antara lain :
1. Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak
melakukan sebuah kompilasi dalam penggunaannya.
2. Web server yang mendukung PHP dapat ditemukan diman-mana dari mulai
Apache, IIS, lighttpd hingga Xitami dengan konfigurasi yang relatif lebih
mudah.
3. Dalam sisi pengembangan lebih mudah, karena banyaknya milis-milis
dandeveloper yang siap membantu dalam pengembangan.
4. Dalam sisi pemahaman, PHP adalah scripting yang paling mudah karena
memiliki referensi yang banyak.
5. PHP adalah bahasa open source yang dapat digunakan di berbagai mesin
(Linux,Unix, Macintosh, Windows ) dan dapat dijalankan secara runtime
melalui console serta juga dapat menjalankan perintah-perintah system.


D. Tipe data PHP

Ada 8 macam tipe data pada PHP, diantaranya :
1. I nteger
Tipe data integer adalah tipe data yang berguna untuk menyimpan bilangan bulat,
bukan desimal. Sebagai contoh (1),(2),(3),(4),(5),(-1),(-2),(-3),(-4) dan lain-lain. Tipe data ini
memiliki range antara -2,147,483,648 sampai dengan +2,147,483,648 platform 32bit.
Namun bila terdapat data diluar jangkauan tersebut, maka secara otomatis PHP akan
mengkonversikannya ke dalam tipe data Floating Point.
Integer merupakan Tipe Data yang berisikan bilangan bulat negatif dan positif atautanpa
ada nilai pecahan.
Tipe ini juga dapat dinyatakan dalam bentuk oktal (berbasis 8), desimal (berbasis 10),
heksadesimal (berbasis 16). Seperti dalam contoh berikut :
$oktal = 031;

$desimal = 25;
$heksadesimal = 010;


2. Double Floating
Tipe data floating point numbers biasa juga disebut dengan double, float atau
real adalah tipe data yang berguna untuk menyimpan bilangan desimal. Sebagai contoh
(0.1),(1.3),(1.7),(1.8),(9.7),(2.4) dan lain-lain.
Contoh penulisannya :
<?php
$a = 1.234;
$b = 1.2e3;
$c = 2E-6;
$d = 1.2E8;
?>


3. Boolean
Tipe Data ini adalah tipe data yang paling sederhana. Hanya berupa true atau false.
Cara memasukan ke dalam variabel adalah dengan memberikan nilai true atau falsepada
variabel tersebut. Penulisannya tidak dipengaruhi penggunaan huruf besar atau kecil.
Contoh penulisannya :
<?php
$a = TRUE; // bernilai 1
$b = true; // bernilai 1
$c = FALSE; // bernilai 0
$d = false; // bernilai 0
?>
Setiap Tipe Data dalam PHP mempunyai Boolean untuk melakukan Seleksi Kondisi. dan
Tipe Data tersebut akan memberikan nilai true atau false pada seleksi kondisi tersebut.
a) Pada Variabel yang bertipe Data integer=0 (nol) mempunyai boolean false, selain itu
true.
b) Pada Variabel yang bertipe Data float=0.0 (nol) mempunyai boolean false, selain itu
true.
c) Pada Tipe Data string yang kosong, dan string="0" mempunyai boolean false, selain
itu true.
d) Array yang tidak mempunyai element mempunyai boolean false, selain itu true.
e) Objek yang tidak mempunyai member mempunyai boolean false, selain itu true.
f) Tipe NULL dan Variabel yang belum terisi mempunyai boolean false.


4. String
String adalah sebuah tipe data yang terdiri dari kata, bisa berupa kata tunggal maupun
kalimat. Penulisan string harus diapit oleh tanda petik, baik petik tunggal( ) maupun petik
ganda ( )
Contoh penulisan tipe data string :

<?php
$kata1 = 'string diapit petik tunggal';
$kata2 = "string diapit petik ganda";
?>
Perbedaan antara petik ganda dan petik tunggal adalah, ketika kita menggunakan petik
tunggal maka variabel tidak akan terbaca nilainya. Beda halnya dengan penggunaan petik
genap yang akan membaca nilai dari suatu variabel.
Lebih spesifiknya :
<?php
$kata = "Haloo Berooo";
echo 'nama saya adalah $kata';
//jika menggunakan tanda petik tunggal browser
//akan menampilkan $kata
echo "nama saya adalah $kata";
//jika menggunakan tanda petik tunggal browser
//akan menampilkan Haloo Beroo
?>

Jika string yang tertutup dalam tanda kutip ganda ( ), PHP akan
menafsirkanescape sequence lebih untuk karakter khusus. Maka penulisan untuk karakter
khusus tersebut harus ditambahkan slash didepan karakter tersebut.


5. Objek
Tipe data object dibuat dengan tujuan agar para programmer terbiasa dengan OOP.
Tipe data object bisa berupa bilangan, variabel atau fungsi. Data ini dapat dimasukkan ke
dalam kode program sehingga meringkas beberapa fungsi dan memperkecil ukuran file.
Agar lebih mudah dapat menggunakan variabel dengan nilai string :

class Nama {

var $jenis = Beroo Haloo;
function ganti_nama($jenis) {
$this->jenis = $jenis;
}
}
$nama = new Nama;

echo $nama->jenis;
$nama->ganti_nama(Haloo Beroo);
echo <br>.$nama->jenis;

Hasilnya :
Beroo Haloo

Haloo Beroo



6. Array
Array atau Larik merupakan Tipe Compound Primitif, terdapat pada bahasa-bahasa
pemrograman lain.
Tipe data array digunakan untuk menyimpan banyak data dalam satu variabel. Jenis array
dalam php ada 3 (tiga) macam yakni :

Numeric Array
<?php
$hari[0]="Senin";
$hari[1]="Selasa";
$hari[2]="Rabu";
$hari[3]="Kamis";
$hari[4]="Jum'at";
$hari[5]="Sabtu";
$hari[6]="Minggu";
//menampilkan tanpa perulangan.
echo "sekarang adalah hari $hari[3] <br />" ;
//menampilkan menggunakan perulangan
//perulangan akan dijelaskan pada artikel berikutnya
for($i=0;$i<=6;$i++){
echo $hari[$i]."<br/>";
}
?>
Pada contoh numeric array diatas dapat disimpulkan bahwa pemanggilan data array tersebut
menggunakan angka, angka dimulai dari 0 sampai jumlah data yang dimasukkan. $hari[0]
adalah pemanggilan untuk data pertama, $hari[1] adalah pemanggilan untuk data kedua dan
seterusnya.

Associative Array
<?php
$hari =
array("Senin"=>"Ayam","Selasa"=>"Lele","Rabu"=>"Tempe","Kamis"=>"Tahu","Jum'at"
=>"Teri","Sabtu"=>"Krupuk","Minggu"=>"Puasa");
//menampilkan tanpa perulangan.
echo "Menu hari senin adalah $hari[Senin]" ;
?>
Pada contoh associative array diatas dapat disimpulkan bahwa pemanggilan data array
tersebut menggunakan string yang ditentukan oleh kita, dengan kata lain pemanggilan
menggunakan angka kita ganti menjadi string yang kita inginkan.

Multidimensional Array
Pengertian multidimension array adalah array didalam array. Pemanggilan array ini
bisa menggunakan numeric array maupun associative array. $makan[0]["pagi"] dapat
diartikan sebagai menampilkan nilai array pertama dan array pagi dari variabel
makan, $makan["senin"]["pagi"] dapat diartikan sebagai menampilkan nilai array senin dan
array pagi dari variabel makan.
<?php
$makan = array(
array("pagi"=>"bubur","siang"=>"ayam","sore"=>"bebek"),
array("pagi"=>"bubur","siang"=>"tahu","sore"=>"tempe")
);
//menampilkan tanpa perulangan.
echo "Menu makan pada hari senin pagi adalah " . $makan[0]["pagi"];
echo "<br />";
echo "Menu makan pada hari senin pagi adalah " . $makan[1]["sore"];
?>


7. Null
NULL adalah Tipe Data yang tidak memuat apapun. Setiap Variabel yang diset
menjadi Tipe Data NULL ini akan menjadikan Variabel tersebut kosong, seperti dalam
penggunaan fungsi unset(). Cara untuk menset Variabel menjadi NULL adalah
dengan memasukan nilai NULL pada variabel yang dimaksud seperti pada
Contoh berikut:
<?php
# Nilai awal $foo adalan 10
$foo = 10;
# $foo akan menjadi NULL
$foo = NULL;
# Sama dengan memanggil unset()
unset($foo);
?>


8. Resources
Tipe Data Spesial yang satu ini di khususkan untuk menyimpan
resource, sumber atau alamat. Variabel tersebut hanya dapat diciptakan oleh suatu fungsi
khusus yang mengembalikan nilai berupa resource seperti penggunaan
fungsi fopen, opendir, mysql_connect, mysql_query dan semacam
E.Contoh Program dan Penjelasannya

Ada beberapa contoh program diantaranya :
1. Kondisi
2. Looping
3. Form
4. Session
5. Input Data
6. Database

Didalam pemrograman kondisi dikenal dalam bentuk IF, CASE ataupun yang setara.:
1. Macam Macam Kondisi

a) Struktur Kondisi If
if (kondisi) {
statement-jika-kondisi-true;
}

Keterangan :
kondisi merupakan statemen atau variabel yang akan diperiksa TRUE atau
FALSE-nya

b) Struktur Kondisi If ... Else

if (kondisi) {
statement-jika-kondisi-true;
} else {
statement-jika-kondisi-false;
}

Keterangan :
kondisi merupakan statemen atau variabel yang akan diperiksa TRUE
atau FALSE-nya. Jika kondisinya TRUE maka statemen yang berada di
blok if akan dieksekusi, sebaliknya jika kondisinya FALSE maka
statemen yang berada di blok else yang akan dieksekusi.

c) Struktur Kondisi Khusus
(kondisi) ? benar : salah;

Keterangan :
kondisi merupakan statemen atau variabel yang akan diperiksa TRUE atau
FALSE-nya. Statement pada blok benar dan salah hanya boleh satu
statemen saja.



d) Struktur Kondisi Switch ... Case
switch ($var) {
case '1' : statement-1; break;
case '2' : statement-2; break;
....
}

Keterangan :
$var merupakan variabel yang akan diperiksa isi atau nilainya. Tipe data
variabel ini tidak dibatasi.
Value pada case juga bisa berupa string, integer, boolean, bahkan bisa
berupa conditional-statement. Boleh memakai kutip tunggal maupun kutip
ganda.


Contoh Program 1
Nama File : if.php
Deskripsi : Program Struktur Kondisi If.

<?php
$nilai = 80;
if ($nilai >= 60) {
echo "Nilai Anda $nilai, Anda LULUS";
}
?>

Penjelasan Program 1:
Pada program di atas, terdapat pemeriksaan kondisi apakah isi variabel $nilai
lebih dari 60 (baris 3). Jika kondisi ini bernilai TRUE (variabel $nilai berisi nilai
yang lebih besar dari 60) maka statement pada baris ke-4 akan dijalankan.
Sebaliknya jika kondisinya FALSE, maka statement pada baris ke-4 tidak akan
dijalankan.


Contoh Program 2:
Nama File : if_else.php
Deskripsi : Program Struktur Kondisi If..Else.


<?php
$nilai = 50;
if ($nilai >= 60) {
echo "Nilai Anda $nilai, Anda LULUS";
} else {
echo "Nilai Anda $nilai, Anda GAGAL";
}
?>


Penjelasan Program 2 :
Pada program di atas, terdapat pemeriksaan kondisi apakah isi variabel $nilai
lebih dari 60 (baris 3). Jika kondisi ini bernilai TRUE (variabel $nilai berisi nilai
yang lebih besar dari 60) maka statement pada baris ke-4 akan dijalankan.
Sebaliknya jika kondisinya FALSE, maka statement pada baris ke-6 yang akan
dijalankan. Pada contoh program di atas, kondisi pada baris ke-3 bernilai FALSE
karena isi variabel $nilai adalah 50.


Contoh Program 3
Nama File : if_else2.php
Deskripsi : Program Memeriksa username dan password dengan If..Else.

<?php
$user = "achmatim";
$pass = "123"
if ($user == "achmatim" && $pass == "123") {
echo "Login Berhasil";
} else {
echo "Login Gagal";
}
?>

Penjelasan Program 3:
Pada program di atas, terdapat pemeriksaan kondisi apakah isi variabel $nilai
sama dengan achmatim dan apakah isi variabel $pass sama dengan 123
(baris 4). Jika kedua kondisi tersebut bernilai TRUE maka statement pada baris
ke-5 akan dijalankan. Sebaliknya jika salah satunya bernilai FALSE, maka
statement pada baris ke-7 yang akan dijalankan.


Contoh Program 4
Nama File : if_var.php
Deskripsi : Program Memeriksa suatu variabel ada atau tidak.
<?php
$user="";
if (!isset($user)) {
echo "Variabel tidak ada/belum terbentuk";
} else {
echo "Variabel ada";
}
?>

Penjelasan Program 4 :
Pada program di atas, terdapat fungsi isset() yang merupakan fungsi untuk
memeriksa apakah suatu variabel sudah terbentuk (ada) atau belum. Fungsi akan
bernilai TRUE jika variabelnya ada. Jadi jika baris ke-2 dari program di atas diremark
atau dihilangkan maka statement pada baris ke-4 yang akan dijalankan.


Contoh Program 5
Nama File : switch.php
Deskripsi : Program Struktur Switch..Case untuk menampilkan nama hari
dalam bahasa Indonesia.

<?php
$day = date ("D");
switch ($day) {
case 'Sun' : $hari = "Minggu"; break;
case 'Mon' : $hari = "Senin"; break;
case 'Tue' : $hari = "Selasa"; break;
case 'Wed' : $hari = "Rabu"; break;
case 'Thu' : $hari = "Kamis"; break;
case 'Fri' : $hari = "Jum'at"; break;
case 'Sat' : $hari = "Sabtu"; break;
default : $hari = "Kiamat";
}
echo "Hari ini hari <b>$hari</b>";
?>

Penjelasan Program 5 :
Pada program di atas, variabel $day (baris ke-2) akan berisi 3 (tiga) digit
pertama dari nama hari dalam bahasa Inggris. Dengan fungsi date(), kita akan
memperoleh informasi tanggal, hari dan waktu sekarang. Fungsi ini akan
diperlajari lebih lanjut pada Bab mendatang. Selanjutnya isi variabel $day akan
diperiksa dengan switch (baris ke-3), jika isinya adalah Sun maka $hari adalah
Minggu dan seterusnya.

Contoh Program 6
Nama File : if_khusus.php
Deskripsi : Program Struktur Kondisi Khusus ? untuk memeriksa tahun kabisat.

<?php
$tahun = date ("Y");
$kabisat = ($tahun%4 == 0) ? "KABISAT" : "BUKAN KABISAT";
echo "Tahun <b>$tahun</b> $kabisat";
?>

Penjelasan Program 6 :
Pada program di atas, fungsi date() dengan parameter Y (baris ke-2) akan
menghasilkan 4 digit tahun sekarang. Pada baris ke-3 akan diperiksa apakah isi
variabel $tahun jika dimodulus dengan 4 akan menghasilkan nilai 0. Jika TRUE
maka $kabisat akan berisi KABISAT dan jika FALSE $kabisat akan berisi
BUKAN KABISAT.



2. Macam-Macam Looping

a) WHILE
Struktur while adalah jenis pengulangan yang penulisan kondisi algoritma
nya di awal blok, maksudnya jika kondisi algoritma tadi tidak terpenuhi maka
kondisi bernilai false dan proses pengulangan pun tidak akan dilakukan. Dibawah
ini merupakan bentuk umum penulisan dari struktur pengulangan
menggunakan while.
while(ekspresi) {
blok program
}

Contoh Lainnya
<?php
$a = 1;
while($a<=10) {
echo "$a<br />";
$a++;
}
?>

b) FOR
Sturktur for biasanya digunakan ketika kita akan melakukan pengulangan
yang banyaknya sudah pasti atau sudah diketahui oleh kita sebelumnya. Dalam
menuliskan pengulngan for ini sebelumnya kita harus mendefinisikan inisial dan
kondisi terlebih dahulu untuk melakukan pengulangannya. Berikut adalah bentuk
umum dari pengulangan menggunakan for.
for (inisial; kondisi; iterasi) {
//isi dari pengulangan
}


Contoh lainnya,
<?php
$a = 10;
for($i=10; $i>0; $i--) {
echo "PHP $a <br />";
$a--;
}
?>

Program diatas akan mencetak teks PHP sebanyak 10 kali dengan indeks dimulai dari 10
sampai 1 (menurun)
Varisai FOR (Menentukan Bilangan Prima)
<?php
$n = 19; //membuat <span class="x7ybdfp64" id="x7ybdfp64_6">variable</span>
$prima = true;

for($i=2; $i<=($n/2); $i++) {
if(($n%$i)==0) {
$prima = false;
break; //untuk menghentikan looping pada program
}
}
if($prima) {
echo "$n merupakan bilangan prima";
} else {
echo "$n bukan bilangan prima";
}
?>

Contoh Lainnya,
<?php
$n = 3; //menentukan variable yang akan ditambahkan
$hasil = 0;

for($i=1; $i<=$n; $i++) {
$hasil += $i;
if($i !=$n) {
echo "$i + ";
} elseif($i = $n) {
echo "$i = ";
}
}
echo "$hasil";
?>

Hasil keluaran program diatas adalah melakukan penjumlahan seperti dibawah ini,
1 + 2 + 3 = 6

c) DO WHILE
Sebelumnya kita tadi sudah mengenal pengulangan dengan
menggunakan while , terus kenapa? hahaya karena sebenarnya struktur
pengulangan ini mirip dengan struktur while, mungkin perbedaannya hanya terdapat
pada penempatan kondisi saja yang dengan kata lain pada struktur pengulangan ini
kondisinya terletak di akhir blok pengulangan sedangkan pada struktur while yang
kita kenal tadi berada di awal blok pengulangan.

Berikut adalah bentuk umun dari penggunaan struktur pengulangan do-while,
inisial
do {
//proses pengulangan
iterasi
} while(kondisi);



d) FOREACH
Selain fungsi yang telah dituliskan diatas PHP juga menyediakan cara
mengakses data kedalam bentuk array dengan menggunakan fungsiforeach().


Adapun sintaknya adalah:
foreach($data as $value) {
$pernyataan yang akan diproses yaitu $value
}
Silahkan ketikan kode dibawah ini,
<?php
$data = array("Sedan", "Bus", "Angkot", "Kereta Api");
foreach($data as $value) {
echo "Kendaraan " . $value;
echo "<br />";
}
?>
Perulang Dalam Perulangan
Adakalanya dalam menuliskan bahasa pemrograman sering terjadi dimana perulangan
tersebut berada dalam pengulangan yang lain. Silahkan ketikan kode dibawah ini,
<?php
for($i=1; $i<=5; $i++) {
for($d=1; $d<=$i; $d++) {
echo "A";
}
echo "<br />";
}
?>

<> = tag pembuka
</> = diakhiri dengan tag penutup
<html> = pembuka
</html> = penutup
<head> = (header) informasi dari dokumen HTML
</head> = penutup informasi dari dokumen HTML
<title> = merupakan bagian dari Head, tag ini adalah sebagai Titel dari dokumen HTML,
titel ini akan tampil di titel dan tab browser.
<body> = merupakan isi dari suatu dokumen HTML yang akan ditampilkan di web
browser, yang terdiri dari berbagai macam format file berupa teks, grafik, link, animasi
maupun audio-video (multimedia).
<p> = untuk mebuat sebuah kalimat
<br> = untuk membuat sebuah kalimat baru
<hr> = membuat garis horizontal
<h1> sampai <h6> = ukuran yang paling besar adalah h1 dan yang terkecil adalah h6.
<!----> = Comments digunakan untuk memasukkan (menyisipkan) suatu komentar di
dalam HTML. Suatu comments akan diabaikan oleh browser. Kamu dapat menggunakan
komentar untuk menjelaskan sesuatu hal.
<pre> = misalnya jika anda menuliskan syair sebuah lagu atau puisi yang menggunakan
tab
<a> = kemudian diikuti dengan href sebagai alamat tujuan dari link tersebut.
<img scr="..."> = digunakan untuk memasukan gambar dalam html. jika ingin
memasukan gambar dalam keadaan offline harus disatukan file notepad dan gambar yang
akan di masukan dalam 1 folder.
<body background="..."> = untuk memasukan background ke dalam html. caranya sama
dengan cara memasukan gambar ke html dengan cara menyatukan filenya di 1 folder.
<font> = dengan tag ini kita bisa menentukan jenis font (face), warna (color), dan ukuran
(size). Sesuai dengan recomendasi dari World Web Consortium (W3C), Untuk HTML 4.0
keatas, tag <font> tidak dipergunakan lagi, sebagai gantinya dibuat tag <style> atau
disebut dengan Cassading Style Sheets (CSS). Dengan CSS penggunaannya akan lebih
kompleks dan lebih luas lagi karena dapat dikombinasikan dengan tag elemen-elemen
lainnya di dalam dokumen HTML.
atribut font di bagi sebagi berikut :
face="Jenis font yang digunakan", contoh: face="Tahoma"
size="Ukuran dari font (1-7)", contoh: size="3"
size="Memperbesar ukuran font", contoh: size="+1"
size="Memperkecil ukuran font", contoh: size="-1"
color="Warna dari font", contoh: color="blue"
color="Warna dari font", contoh: color="#FF0000"


3. Membuat Form PHP dan XAMPP
Pada posting kali ini saya akan membahas tentang bagaimana cara membuat database dan
form php dengan menggunakan XAMPP. Hal ini terinspirasi dari tugas kuliah jaringan
komputer dan komunikasi data. Langsung saja ke langkah-langkahnya, kawan.

Buat database dan tabel di XAMPP, untuk lebih mudahnya saya tampilkan saja
penampakannya. Jadi kawan tinggal mencontoh. Pada pembuatan database ini, nama
database adalah peantist dan nama tabel adalah bento.




Lalu langkah kedua, yang harus kalian lakukan adalah
membuat file dengan ekstensi .php dan menyimpannya pada folder xampp/htdocs. Daripada
ribet dan bingung membuat, langsung saja copas sourcecode berikut ini. Kebetulan saya
membuatnya dengan notepad++ jadi tinggal memilih language-->php maka tinggal save aja,
jika membuat dengan notepad maka file disimpan dengan namafile.php kemudian all file.



<?php
$host="localhost";
$user="root";
$password="";
$database="peantist";
$koneksi=mysql_connect($host,$user,$password);
mysql_select_db($database,$koneksi);
//cek koneksi
if($koneksi){
//echo "Berhasil Terhubung";
}else{
echo "Gagal Terhubung";
}
?>


Simpan dengan nama "koneksi.php" (tanpa tanda petik) di dalam folder htdocs.

Langkah ketiga, buat formnya. Ketikkan saja sourcecode dibawah ini.

<html>
<head>
<title>Form Pengisian</title>
</head>


<DIV ALIGN = "CENTER">
<H1><U><font color="RED">Selamat Datang Tugas</U></font
color="RED"></H1>
<H2>Silahkan Mengisi Form Di Bawah Ini!</H2>
<H2>111113035</H2>
</DIV>
<HR>

<form action="proses.php" method="post">
<table>
<tr>
<td>NIM </td>
<td colspan="7"><input type="text" name="nim" size="40"></td>
</tr>
<tr>
<td>Nama </td>
<td colspan="7"><input type="text" name="nama" size="40"></td>
</tr>
<tr>
<td>Email </td>
<td colspan="7"><input type="text" name="email" size="40"></td>
</tr>
<tr>
<td>Komentar </td>
<td><textarea cols="40" rows="5" name="komentar"></textarea></td>
</tr>
<tr>
<td><input type="submit" name="proses" value="Kirim"></td>
<td><input type="reset" value="Reset"></td>
</tr>
</table>
</form>
</body>
</html>

Simpan dengan nama isi.php

Langkah keempat, copas sourcecode berikut ini:
<?php
include "koneksi.php";
$nim=$_POST['nim'];
$nama=$_POST['nama'];
$email=$_POST['email'];
$komentar=$_POST['komentar'];
$query=mysql_query("insert into bento(nim, nama, email, komentar)
value('$nim','$nama','$email','$komentar')");
if($query){
echo "Data Berhasil ditambah";
?><a href="/bukutamu.php">&nbsp;&nbsp;Lihat Data Masuk</a><?php
}else{
echo "Gagal input data";
echo mysql_error();
}
?>

Simpan dengan nama "proses.php"

Langkah kelima, membuat daftar data yang masuk. Lansung saja copas sourcecodenya
berikut ini:



<html>
<head>
<title>Data Masuk</title>
</head>
<body>
<?php
include "koneksi.php";
$query=mysql_query("select * from bento");
$jumlah=mysql_num_rows($query);
echo "Jumlah Pesan : ".$jumlah;
echo "<hr>";
?>
<?php
while($row=mysql_fetch_array($query))
{
echo "Pesan ke-"; echo $a=$a+1; echo "<br>";
echo "NIM :$row[nim]<br>";
echo "Nama :$row[nama]<br>";
echo "E-mail :$row[email]<br>";
echo "Komentar :$row[komentar]<br>";
echo "<hr>";
}
?>
<br/>
<a href="/isi.php">Isi buku tamu</a>
</body>
</html>



<html>
<head>
<title>Data Masuk</title>
</head>
<body>
<?php
include "koneksi.php";
$query=mysql_query("select * from bento");
$jumlah=mysql_num_rows($query);
echo "Jumlah Pesan : ".$jumlah;
echo "<hr>";
?>
<?php
while($row=mysql_fetch_array($query))
{
echo "Pesan ke-"; echo $a=$a+1; echo "<br>";
echo "NIM :$row[nim]<br>";
echo "Nama :$row[nama]<br>";
echo "E-mail :$row[email]<br>";
echo "Komentar :$row[komentar]<br>";
echo "<hr>";
}
?>
<br/>
<a href="/isi.php">Isi buku tamu</a>
</body>
</html>
Simpan dengan nama "bukutamu.php"

Lalu langkah terakhir adalah menjalankan XAMPP, klik start pada Apache dan MySQL.
Kemudian ketikkan "localhost/isi.php", isi data --> klik kirim --> pada halaman selanjutnya
klik Lihat Data Masuk dan kemudian akan tampil daftar data yang telah dimasukkan. Hasil
dari yang sudah dibuat seperti ini:

Penampakan form (isi.php)

Form kontak adalah salah satu bagian penting yang harus ada dalam sebuah website. Anda
bisa lihat website-website yang pernah anda kunjungi, semuanya pasti menyediakan form
kontak ini. Form kontak biasanya digunakan sebagai media komunikasi yang nantinya
mengirimkan pesan langsung ke email pemilik website.
Pada tulisan berikut ini saya akan berbagi tentang bagaimana membuat form kontak dan
mengirim pesannya ke email dalam satu file php. Untuk form kontak ini saya tidak buat
database karena from setelah diisi akan langsung dikirim ke email.
Kita mulai dari membuat sebuah model form kontak dengan script html berikut :

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<table width="500">
<form name="kontak" method="post" action="">
<tr>
<td colspan="2"><h2>Form Kontak</h2></td>
</tr>
<tr>
<td>Judul Pesan</td>
<td><input name="judul" id="judul" type="text" size="40" required="true"></td>
</tr>
<tr>
<td>Nama</td>
<td><input name="pengirim" type="text" id="pengirim" size="30" required="true"></td>
</tr>
<tr>
<td><p>Email</p> </td>
<td><input name="email" type="text" id="email" size="30" required="true"></td>
</tr>
<tr>
<td>Pesan</td>
<td><textarea name="pesan" cols="40" rows="5" id="pesan" required="true"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="btnKirim" value="Kirim" id="btnKirim">
<input type="reset" name="btnUlangi" id="button" value="Ulangi"></td>
</tr>
</form>
</table>
Untuk form diatas, saya gunakan method post dengan action dikosongkan dengan tujuan isi
form akan dikirim dan diproses dalam file itu sendiri. Untuk memastikan semua diisi, saya
tambahkan atribut required="true" pada semua isian.
Tampilan form jika anda jalankan akan terlihat seperti gambar berikut :

Setelah form siap, kita memerlukan script php untuk mengirim pesan tersebut ke email.
Script kirim email dengan php saya tulis seperti berikut :
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//alamat email tujuan bisa anda sesuaikan dengan email anda
$tujuan = "[email protected]";
//Ini diambilkan dari nama objek form yang sudah kita buat
$judul = $_POST['judul'];
$pesan = $_POST['pesan'];
$pengirim=$_POST['pengirim'];
$header = "From:$pengrim \r\n";
$kirim = mail($tujuan,$judul,$pesan,$header);
if( $kirim == true )
{
echo "Pesan berhasil terkirim";
}
else
{
echo "Pesan gagal terkirim";
}
?>
Karena rancangan awal, form kontak dibuat dalam satu file maka harus dibuat pengecekan
agar mengetahui kapan form kontak ditampilkan, dan kapan form kontak harus dikirim.
Untuk pengecekannya saya buat script php seperti berikut :
?
1
2
3
4
5
6
7
<?php
if(!empty($_POST['judul'] && !empty($_POST['pengirim'] && !empty($_POST['email'] && !empty($_POST['pesan']
{
//Script kirim email
}
?>
<!-- Disini html -->
Dengan script php diatas, maka pada saat file kontak dijalankan proses awal php akan
mengecek apakah ada nilai submit post dari form kontak, jika ada maka form akan dikirim,
dan jika belum diisi maka tampil form kontak.
Secara keseluruhan maka perintah html dan php saya gabungkan dalam satu file seperti
berikut :

1
2
3
4
5
6
7
<?php
if(!empty($_POST['judul'] && !empty($_POST['pengirim'] && !empty($_POST['email'] && !empty($_POST['pesan']
{
//alamat email tujuan bisa anda sesuaikan dengan email anda
$tujuan = "[email protected]";
$judul = $_POST['judul'];
$pesan = $_POST['pesan'];
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$pengirim=$_POST['pengirim'];
$header = "From:$pengrim \r\n";
$kirim = mail ($tujuan,$judul,$pesan,$header);
if( $kirim == true )
{
echo "Pesan berhasil terkirim";
}
else
{
echo "Pesan gagal terkirim";
}
}
?>
<table width="500">
<form name="kontak" method="post" action="">
<tr>
<td colspan="2"><h2>Form Kontak</h2></td>
</tr>
<tr>
<td>Judul Pesan</td>
<td><input name="judul" id="judul" type="text" size="40" required="true"></td>
</tr>
<tr>
<td>Nama</td>
<td><input name="pengirim" type="text" id="pengirim" size="30" required="true"></td>
</tr>
<tr>
<td><p>Email</p> </td>
<td><input name="email" type="text" id="email" size="30" required="true"></td>
</tr>
<tr>
<td>Pesan</td>
<td><textarea name="pesan" cols="40" rows="5" id="pesan" required="true"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="btnKirim" value="Kirim" id="btnKirim">
<input type="reset" name="btnUlangi" id="button" value="Ulangi"></td>
</tr>
</form>
Script diatas bisa anda copy dan simpan dalam file dengan nama kontak.php.
Catatan :
1. Untuk mencoba menjalankanya sampai proses kirim, komputer anda harus memiliki
layanan email server.
2. Cara mudah mencobanya yaitu dengan mengupload file kontak.php ke dalam hosting
di internet.
3. Ada beberapa hosting yang tidak mendukung pengiriman email dari alamat email
luar, jadi harus diubah sesuai dengan nama domain anda. Perubahan anda bisa
lakukan pada bagian $pengirim=$_POST['pengirim'];
Membuat session dengan PHP

Di dalam sebuah website atau aplikasi basis web, terutama yang memiliki jumlah
halaman yang banyak, seringkali dibutuhkan suatu kesinambungan dari informasi-informasi
tertentu pada saat pengunjung berpindah-pindah dari satu halaman ke halaman lain. Ambil
contoh aplikasi toko online yang menyediakan beberapa kategori barang. Satu kategori
barang ditampilkan dalam sebuah halaman web tersendiri. Jika pengunjung hendak membeli
beberapa barang dengan kategori barang yang berbeda-beda, maka sudah pasti ia akan bolak-
balik dari satu halaman kategori ke halaman kategori yang lain. Tentu saja informasi dari
barang-barang yang telah dibeli sebelumnya harus tetap dijaga sekalipun pengunjung tersebut
telah berpindah ke halaman kategori barang yang lain.
Adanya kemampuan melakukan koneksi ke database yang dimiliki oleh pemrograman
semacam PHP atau ASP sangat membantu dalam menyimpan informasi-informasi tersebut,
akan tetapi jika setiap hal yang terjadi harus disimpan ke dalam database, maka beban server
akan menjadi sangat berat sehingga dapat berakibat server tersebut menjadi lamban bila
diakses. Belum lagi ukuran database bisa membengkak sangat besar, dan itu jelas tidak
ekonomis.
Oleh karena itu diperlukan suatu alternatif lain. Session adalah jawabannya. Session
memiliki kemampuan untuk menyimpan informasi secara berkesinambungan asalkan session
itu masih "aktif". Pada PHP 3 session belum dikenal, sehingga saat itu PHP kurang begitu
dilirik oleh para web developer. Untunglah para programmer PHP tanggap sehingga mulai
PHP 4 dan diatasnya session telah dikenal. Dan ternyata memang reputasi PHP meroket
dengan cepat semenjak versi 4 dirilis.
Ada beberapa cara yang dapat dilakukan untuk memulai sebuah session. Yang
pertama adalah dengan menetapkan nilai session.auto_start di php.ini menjadi 1 atau on.
Dengan demikian maka setiap sebuah aplikasi yang dibangun dengan PHP diakses, seketika
itu pulalah sebuah session akan otomatis "aktif". Namun sekalipun cara ini tidak salah, tetapi
amat sangat tidak dianjurkan. Mengapa? Karena secara default nilai session.auto_start di
php.ini adalah 0 atau off. Anda memang bisa mengedit php.ini di komputer Anda, akan tetapi
bila suatu ketika Anda harus melakukan web hosting di tempat lain, Anda tentu tidak berhak
mengubah file php.ini di web server tersebut. Dan jika php.ini di server tersebut dibiarkan
default apa adanya, maka aplikasi Anda tidak akan berjalan baik di server tersebut.
Untuk itu dianjurkan menggunakan cara lain dalam mengaktifkan sebuah session. Ada dua
cara yang dapat digunakan dalam mengaktifkan session tanpa mengedit php.ini, yaitu secara
eksplisit dan secara implisit. Pengaktifan session secara eksplisit dilakukan dengan
fungsi session_start(), sedangkan secara implisit menggunakan fungsi session_register().
Penggunaan fungsi session_start() tentunya jelas. Dengan menjalankan fungsi tersebut, maka
sebuah session akan dimulai. Fungsi ini tidak memerlukan parameter apapun, sehingga
sintaks penggunaanya adalah dengan langsung saja menuliskan
fungsi session_start() tersebut. Sedangkan fungsisession_register() pada prinsipnya adalah
"mendaftarkan" variabel sehingga variabel-variabel tersebut akan dikenal sepanjang sebuah
session sekaligus memulai sebuah session apabila belum dimulai. Sintaks penggunaan fungsi
session_register() adalah sebagai berikut:
session_register(variabel1[,variabel2[,...]])
Harap diperhatikan, nama variabel di sini ditulis tanpa tanda $ di depannya. Setelah
sebuah variabel di register, maka otomatis variabel tersebut akan menjadi variabel session.


Contoh:
session_register("var1")
Nantinya dalam rangkaian aplikasi web tersebut, variabel $var1 akan dikenal sebagai
variabel session dan bersifat global. Namun sayangnya hal ini tidak lagi berlaku sejak PHP
4.2.0 dan diatasnya, karena nilai register_globals di php.ini adalah off. Sebelum PHP 4.2.0
nilai register_globals adalah on. Sebagai gantinya, PHP memperkenalkan superglobals array
untuk menangkap variabel-variabel session tersebut. Superglobal arrays tersebut
adalah $_SESSION. Sebelum versi 4.0.6 Anda juga dapat
menggunakan$HTTP_SESSION_VARS.
Kedua array ini bersifat asosiatif dan sebagai indeksnya adalah nama dari variabel
session yang hendak digunakan. Sebagai akibat dari perubahan ini, maka
fungsi session_register() tidak lagi diperlukan. Efek dominonya,
fungsi session_unregister() dan session_is_registered() juga tidak lagi diperlukan.
Fungsisession_unregister() adalah kebalikan dari fungsi session_register(), yaitu untuk
"mencabut" variabel dari sebuah session, sedangkan fungsi session_is_registered() digunakan
untuk memeriksa apakah sebuah variabel pernah didaftarkan pada sebuah session atau tidak.
Lalu sekarang bagaimana caranya mendaftarkan variabel ke dalam session dan mencabut
variabel dari session serta memeriksa apakah variabel tersebut pernah didaftarkan atau
belum?
Untuk mendaftarkan variabel ke dalam session, Anda tinggal menggunakan array
$_SESSION saja. Misalnya Anda ingin memasukkan variabel var1 sebagai variabel session,
maka caranya adalah sebagai berikut:
$_SESSION['var1'] = nilai
Jadi prinsipnya adalah sama dengan deklarasi implisit variabel biasa. Untuk
menghapus dan memeriksa variabel session tersebut, Anda dapat "meminjam" fungsi variabel
biasa yaitu unset() dan isset(). Bahkan fungsi-fungsi variabel yang lain dapat juga digunakan
dalam pengolahan variabel session ini.
Fungsi unset() digunakan untuk menghapus variabel, sedangkan fungsi isset() digunakan
untuk memeriksa apakah variabel tersebut sudah pernah dideklarasikan atau belum. Untuk
menghapus variabel session Anda juga dapat menggunakan cara di bawah ini:
$_SESSION = array();
Dengan demikian, array $_SESSION dideklarasikan sebagai array baru yang kosong.
Pada akhir aplikasi jangan lupa untuk menghapus seluruh informasi session ini. Fungsi yang
digunakan adalah session_destroy().
Berikut ini akan diberikan contoh penggunaan session. Kita akan memanfaatkan contoh
Artikel sebelumnya yaitu buat_form.html dan proses.php. Biarkan file buat_form.html seperti
apa adanya sedangkan file proses.php di edit menjadi sebagai berikut:
<?php session_start(); ?>
<HTML>
<HEAD>
<TITLE> Fungsi Session </TITLE>
</HEAD>
<BODY>
<?php
$_SESSION['nama'] = $_POST['nama'];
$_SESSION['umur'] = $_POST['umur'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['waktu'] = date("H:s:i");
?>

<h1> Hallo <?=$_SESSION['nama']?> </h1>
<h2> Selamat Datang di situs Saya </h2>
Umur Anda saat ini adalah <?=$_SESSION['umur']?> tahun <br />
Alamat email Anda adalah <?=$_SESSION['email']?> <br />
Anda login pada jam <?=$_SESSION['waktu']?> <br />
<a href="http://localhost/next.php"> Klik di sini </a> untuk menuju ke halaman berikut.
</BODY>
</HTML>
Setelah itu buatlah sebuah file lagi bernama next.php yang isinya sebagai berikut:
<?php session_start(); ?>
<HTML>
<HEAD>
<TITLE> Halaman Dua </TITLE>
</HEAD>
<BODY>

<h1> Hallo <?=$_SESSION['nama']?> </h1>
<h2> Anda memasuki halaman kedua di situs Saya </h2>
Berikut adalah informasi yang Anda bawa dari halaman pertama:
<hr>
Umur Anda saat ini adalah <?=$_SESSION['umur']?> tahun <br />
Alamat email Anda adalah <?=$_SESSION['email']?> <br />
Anda login pada jam <?=$_SESSION['waktu']?>
<hr>
<?php
$_SESSION=array();
session_destroy();
?>
</BODY>
</HTML>
Jalankan file buat_form.html, lalu isikan data-data pada form tersebut. Setelah Anda
mengklik tombol submit, maka browser akan menuju ke file proses.php. Pada file proses.php
akan terdapat sebuah link untuk menuju ke halaman next.php. Jika link ini Anda klik, maka
browser akan menuju ke halaman next.php dan semua nilai variabel yang didaftarkan ke
dalam session, yaitu variabel $_SESSION['nama'], $_SESSION['umur'],
$_SESSION['email'], dan $_SESSION['waktu'] akan dipertahankan pada halaman next.php.
Jika variabel pada file proses.php tidak dimasukkan ke dalam session, maka nilainya tidak
akan muncul pada halaman next.php. Perhatikan bahwa fungsi session_start() harus
dituliskan pada bagian skrip paling awal sebelum ada output apapun yang diberikan kepada
browser, selamat mencoba.



Fungsi-fungsi session :

1. session_start(), untuk memulai session.
session_start Menginisialisasi data dari session.
session_start() membuat sebuah session atau melanjutkan session sebelumnya berdasarkan pada
pengidentifikasi session via GET atau POST atau cookie.

2. session_destroy()
session_destroy Menghancurkan semua data yang terdaftar dari sebuah session
session_destroy() menghancurkan semua data yang berhubungan dengan session saat ini. Hal ini
tidak merubah variabel global yang berhubungan dengan session tersebut, Hal ini juga tidak merubah
cookie dari session. Untuk menggunakan lagi variabel sssion tersebut,session_start() haruslah
dipanggil.

3. session_id(), untuk mengambil atau menentukan identitas sebuah session.
session_id Mengambil atau mengatur session id saat ini.
session_id() digunakan untuk mengambil atau mengatur session id saat ini.
SID yang konstan dapat juga digunakan untuk mengambil nama dari SID saat ini dan
session_id dalam bentuk string cocok untk ditambahkan kedalam URL.


4. session_register(), untuk mendaftarkan variabel ke sebuah session.
session_is_registered Mengetahui apakah sebuah variabel telah terdaftar atau belum dalam
sebuah session.
Fungsi ini tidak diperkenankan oleh PHP 5.3.0 dan dihapus pada PHP 6.0.0.

Contoh Pemograman PHP menggunakan Session


Langkah Pertama membuat file setup.php untuk membuat database:

setup.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html>

<head>

<title>Setup Database</title>

</head>





<body>

<?php

$cn = @mysql_connect("localhost", "root", "") or die ("Gagal konek ke MySQL.");

mysql_query("drop database if exists db_user", $cn) or die ("Gagal menghapus
database.");

mysql_query("create database db_user", $cn) or die ("Gagal membuat database.");

mysql_select_db("db_user", $cn) or die ("Gagal membuka database.");
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55


mysql_query("create table tb_user (

login_username varchar(32) not null,

login_password char (32),

login_rights varchar (32),

primary key(login_username)

)", $cn) or die("Gagal membuat table.");

mysql_query("insert into tb_user values('admin', md5('admin'), '[A] [U]')", $cn);

mysql_query("insert into tb_user values('user', md5('user'), '[U]'", $cn);

mysql_close($cn);

?>

<p>Sukses meng-setup database!


username: <b>admin</b> dan Password: <b>admin</b>

username: <b>user</b> dan Password: <b>user</b>

</p>

<p>Silakan menuju <a href="index.php">index.php</a></p>

</body>

</html>

Kedua Membuat File Halaman Utama :
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>

<head>

<title>Homepage</title>

</head>



<body>

<P>

<a href="index.php">Home</a> |
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

<a href="login.php">Login</a> |

<a href="member.php">Member</a> |

<a href="logout.php">Logout</a>

</P>

<p>Selamat datang. Di sini semua orang bisa mengakses.</p>

</body>

</html>

Ketiga membuat file yang hanya dapat diakses untuk member saja :
member.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php

session_start();



$username = "";

$password = "";

if (isset($_SESSION['username']) && isset($_SESSION['password'])) {

$un = $_SESSION['username'];

$pw = md5($_SESSION['password']);

$cn = @mysql_connect("localhost", "root", "") or die ("Gagal konek ke
MySQL.");

mysql_select_db("db_user") or die ("Gagal memilih database.");

$query = "select * from tb_user where

login_username ='$un' and login_password = '$pw'";

$hasil = mysql_query($query) or die ("Gagal melakukan query.");

if ($hasil !=false) {

if (mysql_num_rows($hasil) ==1) {

$username = $_SESSION['username'];

$password = $_SESSION['password'];

};
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

};

};

?>

<html>

<head>

<title>Members Only</title>

</head>



<body>

<p>

<a href="index.php">Home</a> |

<a href="member.php">login</a> |

<a href="member.php">member</a> |

<a href="logout.php">logout</a>

</p>

<?php

if (empty($username) || empty($password)) {

echo "<p>Maaf, hanya members yang boleh mengakses halaman ini.</p>";

}

else {

?>

<p>

Selamat datang <b><?php echo $username; ?></b>

</p>

<?php

};

?>

</body>
85


</html>

Keempat membuat form login
login.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php

session_start();



$username = "";

$password = "";

if (isset($_POST['username']) && isset($_POST['password'])) {

$un = $_POST['username'];

$pw = md5($_POST['password']);

$cn = @mysql_connect("localhost", "root", "") or die ("Gagal konek ke
mysql.");

mysql_select_db("db_user") or die ("Gagal memilih database.");

$query = "select * from tb_user where

login_username = '$un' and login_password = '$pw'";

$hasil = mysql_query($query) or die ("Gagal melakukan query.");

if ($hasil !=false) {

if (mysql_num_rows($hasil) ==1) {

$username = $_POST['username'];

$password = $_POST['Password'];

$_SESSION['username'] = $_POST['username'];

$_SESSION['password'] = $_POST['password'];

};

};

};

?>

<html>

<head>
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

<title>Login</title>

</head>



<body>

<p>

<a href="index.php">Home</a> |

<a href="login.php">Login</a> |

<a href="member.php">Member</a> |

<a href="logout.php">Logout</a>

</p>

<p>

<?php

if (empty($username)) {

if (isset($_POST['username']) || isset($_POST['password'])) {

echo "<p>Username dan pasaword yang anda ketik adalah salah!</p>";

};

?>

<form name="login_form" method="post" action="login.php">

username: <input name="username" size="32" maxleght="32" >


password: <input name="password" type="password" maxleght="32" >


<input type="submit" name="button" value="submit" >

</form>

<?php

}

else {

?>

98
99
100
101
102
103
104
105
106
107
108
109

<p>Anda telah berhasil melakukan login.</p>

<?php

};

?>

</p>

</body>

</html>

Kelima atau yang terakhir membuat file logout
logout.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

<?php

session_start();



unset($_SESSION['username']);

unset($_SESSION['password']);

?>



<html>

<head>

<title>logout</title>

</head>



<body>

<p>

<a href="index.php">Home</a> |

<a href="login.php">Login</a> |

<a href="memeber.php">Member</a> |

<a href="logout.php">Logout</a>


1. Input Data Di Mysql Dengan PHP

"Menginput Data ke Database MYSQL Dengan PHP"

kemudian buatlah table dengan nama tbl_input , copy code kedalam text editor

CREATE TABLE `tbl_input` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`nis` varchar(20) NOT NULL,
`nama` varchar(50) NOT NULL,
`alamat` varchar(100) NOT NULL,
`jk` varchar(40) NOT NULL,
`umur` varchar(20) NOT NULL,
`kelas` varchar(20) NOT NULL,
PRIMARY KEY (`id`));

simpan dengan extensi .sql

setelah selesai buat koneksi ketik pada text editor kesayangan anda

<?
mysql_connect("localhost","root","1");
mysql_select_db("db_bt");
?>

simpan dengan nama koneksi.php (disini pass database saya 1

Setelah database selesai dibuat. Sekarang kita akan membuat file "input_data.php" yang
berguna sebagai form penginputan data :
berikut kode nya :


ketik pada text editor anda

<form name="form1" method="post" action="aksi_input_data.php">
<table width="400" border="0" align="center" cellpadding="1" cellspacing="1"
bordercolor="#00FF00" bgcolor="#33CC00">
<tr bgcolor="#CCFFCC">
<td height="50" colspan="2"><div align="center">INPUT DATA SISWA </div></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Nis </td>
<td>:
<input name="nis" type="text" id="nis"></td>
</tr>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Nama </td>
<td>:
<input name="nama" type="text" id="nama"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Alamat</td>
<td>:
<input name="alamat" type="text" id="alamat"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Jenis Kelamin </td>
<td>:
<select name="jk" id="jk">
<option value="Laki-Laki" selected>Laki-Laki</option>
<option value="Perempuan">Perempuan</option>
</select></td>
</tr>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Umur </td>
<td>:
<input name="umur" type="text" id="umur"></td>
</tr>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Kelas </td>
<td>:
<input name="kelas" type="text" id="kelas"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>&nbsp;</td>
<td height="50"><input type="submit" name="Submit" value="Simpan"></td>
</tr>
</table>
</form>

beri nama input_data.php

ini hasilnya



Setelah itu, Kita buat Pemrosesnya "aksi_input_data.php"dengan menggunakan kode php.


<?php
mysql_connect("localhost","root","1");
mysql_select_db("db_bt");


$simpan="INSERT INTO tbl_input SET
nis='$_POST[nis]',
nama='$_POST[nama]',
alamat='$_POST[alamat]',
jk='$_POST[jk]',
umur='$_POST[umur]',
kelas='$_POST[kelas]'";

mysql_query($simpan);

echo "data berhasil disimpan ";
echo "<br>";
echo "<a href=input_data.php>back</a>";
?>

simpan dengan nama aksi_input_data.php

Pada khasus input data dengan PHP yang perlu diperhatikan ialah.. bahwa query yang
diguanakan untuk membuat input data ialah :
mysql_query("INSERT INTO nama_tabel (nama field yang didatabase) Values(nama field
yang ada di form Input data)");
nah.. disini menggunakan "Values" ,, bisa juga menggunakan "SET" Untuk artikelnya anda
bisa lihat Tutorial Input Data ke Database Mysql Dengan PHP) , semua sama saja terserah
anda menggunakan yang mana..


2. Membuat Tampil Data Dengan PHP

copas code di bawah ini

<table width="400" border="0" align="center" cellpadding="2" cellspacing="1"
bgcolor="#000000" celpading="2" celspacing="1" >
<tr bgcolor="#CCFFFF">
<td><div align="center"><strong>No</strong></div></td>
<td><div align="center"><strong>NIS</strong></div></td>
<td><div align="center"><strong>Nama</strong></div></td>
<td><div align="center"><strong>Alamat</strong></div></td>
<td><div align="center"><strong>JK</strong></div></td>
<td><div align="center"><strong>Umur</strong></div></td>
<td><div align="center"><strong>Kelas</strong></div></td>
<td><div align="center"><strong>Aksi</strong></div></td>
</tr>
<?php

mysql_connect('localhost','root','1');
mysql_select_db('db_bt');

$tampil="select * from tbl_input";
$qryTampil=mysql_query($tampil);
while ($dataTampil=mysql_fetch_array($qryTampil)) {
$no++
?>

<tr bgcolor="#FFFFFF">
<td><?php echo $no ; ?></td>
<td><?php echo $dataTampil['nis']; ?></td>
<td><?php echo $dataTampil['nama']; ?></td>
<td><?php echo $dataTampil['alamat']; ?></td>
<td><?php echo $dataTampil['jk']; ?></td>
<td><?php echo $dataTampil['umur']; ?></td>
<td><?php echo $dataTampil['kelas']; ?></td>
<td><div align="center"><a href="delete.php?id=<?php echo $dataTampil['id'] ;
?>">Delete</a> | <a href="Edit_data.php?id=<?php echo $dataTampil['id']; ?>">Edit
</a></div></td>

</tr>
<?php } ?>
</table>

simpan dengan nama tampil_data.php

Pada khasus ini.. untuk menampilkan data dengan php yang perlu di perhatikan dan diingat
ialah query yang digunakan untuk menampilkan data dari database dengan PHP yaitu :
mysql_query("SELECT * FROM nama_tabel");


3. Menghapus Data Dengan PHP

<?php

mysql_connect('localhost','root','1');

mysql_select_db('db_bt');



$id=$_GET['id'];

$delete="Delete from tbl_input Where id='$id'";

mysql_query($delete) or die ("Error tu");



echo "<center><h3>Data berhasil di hapus</h3></center>";



?>

simpan dengan nama delete.php

Query yang digunakan untuk menghapus data yang ada di database ialah :
mysql_query("DELETE FROM nama_tabel WHERE statement")
"statement di atas ialah kondisi penghapusannya .


4. Membuat Edit dan Update Data Dengan PHP

copas code di bawah ini

<form name="form1" method="post" action="aksi_edit_data.php">
<table width="400" border="0" align="center" cellpadding="1" cellspacing="1"
bordercolor="#FFFF99" bgcolor="#FF0000">
<tr bgcolor="#FFFFCC">
<td height="50" colspan="2"><div align="center">EDIT DATA</div></td>
</tr>
<?php
mysql_connect('localhost','root','1');
mysql_select_db('db_bt');

$sqlTampil="select * from tbl_input Where id='$_GET[id]'";
$qryTampil=mysql_query($sqlTampil);
$dataTampil=mysql_fetch_array($qryTampil);
?>
<tr bgcolor="#FFFFFF">
<td height="40">Nis </td>
<td>:
<input name="nis" type="text" id="nis" value="<?php echo $dataTampil['nis'];
?>"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Nama </td>
<td>:
<input name="nama" type="text" id="nama" value="<?php echo $dataTampil['nama'];
?>"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Alamat</td>
<td>:
<input name="alamat" type="text" id="alamat" value="<?php echo
$dataTampil['alamat']; ?>"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Jenis Kelamin </td>
<td>:
<input name="jk" type="text" id="jk" value="<?php echo $dataTampil['jk']; ?>">
<input name="id" type="hidden" id="id" value="<?php echo $dataTampil['id'];
?>"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Umur </td>
<td>:
<input name="umur" type="text" id="umur" value="<?php echo $dataTampil['umur'];
?>"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40">Kelas </td>
<td>:
<input name="kelas" type="text" id="kelas" value="<?php echo $dataTampil['kelas'];
?>"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>&nbsp;</td>
<td height="50"><input type="submit" name="Submit" value="Simpan"></td>
</tr>
</table>
</form>

berinama edit_data.php


kemudian bnuat aksi_data.php

copas code di bawah ini

<?php
mysql_connect('localhost','root','1');
mysql_select_db('db_bt');

$update="UPDATE tbl_input SET
nis='$_POST[nis]',
nama='$_POST[nama]',
alamat='$_POST[alamat]',
jk='$_POST[jk]',
umur='$_POST[umur]',
kelas='$_POST[kelas]', WHERE id='$_POST[id]'";
mysql_query($update);

echo "<center>Data Berhasil Di Update<center>";
echo "<center><h3><a href=tampil_data.php>Back Tampil Data</a></h3></center>";
?>

simpan dengan nama aksi_edit.php

Pada khasus mengedit data di mysql dengan php yang perlu di perhatikan ialah.. query yang
digunakan dan statement nya :
mysql_query("Update nama_tabel SET statement ");
"statement di atas ialah kondisi penghapusannya

PERTEMUAN KE 1

Pengantar Kuliah Database
Ilmu Database
Teori Database
Belajar bagaimana cara merancang suatu konsep database
Pemrograman Database
Cursor/Recordset
- Operasi database didasarkan pada proses secara langsung pada tabel yang
bersesuaian
SQL
- Operasi berdasarkan satu baris perintah untuk satu jenis operasi
PL/SQL
- Operasi berdasarkan perintah prosedural (rangkaian langkah-langkah kegiatan,
seperti bahasa pemrograman pada umumnya) dari perintah SQL
Aplikasi Database
Bagaimana membangun aplikasi yang menggunakan database
Database Lanjutan
Data Mining Menggali informasi lebih jauh dari data yang tersedia
Ware House Kumpulan dari berbagai data, berbagai bentuk, berbagai
keperluan
Distributed Database System Bagaimana cara supaya database dapat dijalankan
pada daerah yang luas
Keterkaitan Kuliah Database dengan Kuliah lainnya

Pemrograman
Aplikasi
Operating
System
Database Networking
Software
Engineering
Aplikasi yang
Baik
Multi-user
Client Server
Web
Pembuatan
Aplikasi
File

Tujuan kuliah database
Banyak aplikasi yang memerlukan penyimpanan
Tidak standardnya cara penyimpanan pada berbagai aplikasi yang berbeda
Muncul berbagai model penyimpanan
Menuju standardisasi database

PERTEMUAN KE 2

Pengantar Database
Pengantar Database
Database dan Teknologi Database memiliki peran/pengaruh yang cukup pada
perkembangan dunia komputer
Database adalah kumpulan dari data yang saling berkaitan. Data adalah suatu fakta
yang dapat direkam/dicatat/disimpan yang memiliki arti tertentu. Contoh : Alamat,
Nama, Nomor Telepon
Arti Khusus Database:
Representasi beberapa aspek dari dunia nyata, yang sering disebut dengan mini
world atau universe of Discourse (UoD). Jika mini world berubah, database
secara keseluruhan ikut berubah
Kumpulan dari data-data yang saling berhubungan satu dengan lainnya yang
memiliki arti tertentu
Dirancang, dibuat, dan dipergunakan untuk keperluan tertentu. Terdapat
sekelompok pemakai dan aplikasi tertentu yang saling terikat
Database bisa berupa sistem manual atau terkomputerisasi
System manajemen database atau Database Management System (DBMS) adalah
kumpulan program yang digunakan untuk pengolahan Database
Sistem Database atau Database System adalah Database dengan DBMS



Gambar Penyederhanaan ruang lingkup sistem database

Sistem
Database
Software
DBMS
Program/Query Aplikasi
Software untuk Memproses
Program/Query
Software untuk Mengakses
Data yang Tersimpan
Definisi
Database
yang
Tersimpan
(Meta-Data)
Database
yang
Tersimpan
Pengguna/Programm
er
Arsitektur Database
- Database Application
- Database Engine/Server/Service
- Database File

Pengantar Database
Pendahuluan
Database adalah suatu kumpulan data-data yang disusun sedemikian rupa sehingga
membentuk informasi yang sangat berguna. Database terbentuk dari sekelompok data-data
yang memiliki jenis/sifat sama. Ambil contoh, data-data berupa nama-nama, kelas-kelas,
alamat-alamat. Semua data tersebut dikumpulkan menjadi satu menjadi kelompok data baru,
sebut saja sebagai data-data mahasiswa. Demikian juga, kumpulan dari data-data mahasiswa,
data-data dosen, data-data keuangan dan lainnya dapat dikumpulkan lagi menjadi kelompok
besar, misalkan data-data politeknik elektronika. Bahkan dalam perkembangannya, data-data
tersebut dapat berbentuk berbagai macam data, misalkan dapat berupa program, lembaran-
lembaran untuk entry (memasukkan) data, laporan-laporan. Kesemuanya itu dapat
dikumpulkan menjadi satu yang disebut dengan database.

Perlunya Database
Data secara umum dapat dikatakan sebagai segala sesuatu yang dapat dikumpulkan.
Tentu saja hal ini akan membuat segala sesuatu di dunia ini menjadi data, dan masing masing
dapat dikumpulkan menurut jenisnya. Segala bentuk catatan mengenai data-data tersebut
sebenarnya dapat dianggap sebagai database (tempat kumpulan data-data). Biasanya catatan
dari data-data tersebut dilakukan dengan relatif sederhana dan dilakukan dengan cara manual
(dicatat di atas lembaran-lembaran kertas, atau paling tidak diketik menggunakan program
aplikasi tertentu). Setelah data-data tersebut dikumpulkan, biasanya diperlukan untuk
pembuatan laporan, pengambilan keputusan atau segala sesuatu bentuk pengolahan yang
berhubungan dengan data tersebut.
Jika data-data tersebut tercatat secara manual, maka segala bentuk pengolahan juga
dilakukan secara manual (disusun, dihitung atau dibuat laporannya secara manual). Cara ini
tentu saja membutuhkan ekstra tenaga dan waktu. Dan lebih sering lagi, diperlukan
pengumpulan data-data yang sejenis secara berkali-kali dan dilakukan juga pengolahan dan
pembuatan laporan secara berkali-kali pula. Bisa dibayangkan ini merupakan pekerjaan yang
sangat membosankan.
Dari kenyataan tersebut, akan lebih mudah jika dibuat suatu sistem yang digunakan
untuk menyimpan data-data tersebut secara lebih terorganisasi, dan dengan bantuan program-
program aplikasi tertentu, data-data tersebut dapat diolah dan dibuat laporannya secara lebih
cepat dan lebih mudah. Hal inilah yang menjadikan perlunya dibuat sistem database.

Beberapa Jenis Database
Meskipun sebenarnya tujuan dari database tersebut sama, yaitu lebih mempermudah
dalam pengolahan data, namun caranya ada berbagai macam. Macam dari database tersebut
dapat dilihat dari bentuk konfigurasi sistemnya atau dari bentuk/isi dari database tersebut.
Ada beberapa jenis dari database, mulai dari yang menggunakan text biasa,
menggunakan exel, lotus, foxpro, dbase, paradoc, access, oracle, SQL dan banyak lagi.
Masing-masing dapat berbeda dari sisi format datanya, fasilitas yang disediakan dan teknik
pengolah databasenya (database engine).

Bentuk Umum Database
Seperti pada uraian-uraian sebelumnya, database terdiri dari kumpulan sekelompok
data, dan biasanya dinyatakan dalam bentuk tabel. Data-data tersebut tersimpan dalam suatu
file. Ambil sebagai contoh data-data mahasiswa, yang terdiri dari data nama, kelas, dan NRP.
Ada beberapa orang mahasiswa, misalkan 5 mahasiswa, seperti pada contoh berikut.
Tabel Mahasiswa
nomor NAMA KELAS NRP
1 ANDI BARIA II ELKA 100210001
2 KARMAN II LISTRIK 100220003
3 SUBARI I ELKA 100210080
4 MARIA SARI III
LISTRIK
100220033
5 UDIN PURNOMO I LISTRIK 100220010

Dari contoh tabel tersebut, nama, kelas dan NRP disebut dengan field (bagian data-
data dengan jenis yang sama). Nomor, dapat dianggap satu field tersendiri yang berisi nomor
urut dari data, atau hanya dianggap sebagai penunjuk nomor urut saja (bukan sebuah
field/tidak ada, dan ditulis hanya untuk mempermudah susunan tabel). Penggunaan dari
nomor ini nantinya tergantung dari pembuatan struktur database sesuai dengan yang
diinginkan. Urutan data-data dengan nomor 1, 2, 3, 4 dan 5 disebut dengan record (satu
kumpulan data lengkap tentang satu mahasiswa). Sedangkan keseluruhan data-data
mahasiswa tersebut (terdiri dari beberapa jumlah mahasiswa), disebut dengan tabel.
Dengan demikian, nanti akan ada data-data dari pegawai (tabel pegawai), data-data
dari barang inventaris (tabel iventaris) dan lainnya. Yang perlu diperhatikan di sini, setiap
tabel-tabel tersebut dapat disimpan dalam file-file tersendiri (satu file untuk satu tabel), atau
semua tabel disimpan dalam satu file. File-file tersebut disebut dengan file-file database.
MAHASISWA.DBF - File yang berisi tabel mahasiswa
PEGAWAI.DBF - File yang berisi tabel pegawai
KEUANGAN.DBF - File yang berisi tabel keuangan
IVENTARIS.DBF - File yang berisi tabel barang iventaris
POLTEK.MDB - File yang berisi tabel mahasiswa, pegawai, dll.

Pada contoh di atas, ada beberapa file dengan file ekstensi *.DBF yang setiap file
digunakan untuk menyimpan satu jenis tabel. Sedangkan file *.MDB adalah contoh, dimana
satu file digunakan untuk menyimpan beberapa jenis tabel. Pemilihan cara penyimpanan
tersebut tergantung dari perancangan databasenya atau tergantung dari jenis database yang
akan digunakan. Misalkan file *.DBF biasanya digunakan pada database foxpro, dbase.
Sedangkan *.MDB digunakan oleh database ACCESS.
Di dalam penggunaannya, data-data dalam tabel tersebut perlu diolah/dibuat
laporannya. Misalkan data mahasiswa kelas satu saja, atau mahasiswa jurusan listrik saja,
atau mahasiswa laki-laki saja dan lain sebagainya. Untuk itu diperlukan suatu program atau
pengolahan tertentu. Yang menarik di sini adalah, program-program pengolahan atau
laporan-laporan tersebut dapat dianggap juga sebagai data, sehingga dapat juga disimpan
dalam suatu file database. Namun ini hanya dapat dilakukan pada jenis-jenis database tertentu
saja.
Agar file-file database dapat diolah dengan mudah, diperlukan suatu database engine.
Database engine adalah suatu program khusus yang dibuat untuk menangani suatu file-file
database. Dengan adanya database engine ini, program-program aplikasi yang menggunakan
database, tidak memerlukan program khusus untuk pengolahan database (tidak diperlukan
pengetahuan khusus mengenai format/susunan dari file-file database). Selain itu, dengan
database engine ini, jika ingin mengembangkan aplikasi database yang berbeda, program
aplikasi dapat dengan mudah menggunakan database engine yang sama.
Database engine yang digunakan harus sesuai dengan jenis database yang digunakan
agar database engine mengenali dan dapat mengolah file-file database tersebut (karena ada
berbagai jenis database, maka setiap jenis dari database tersebut memerlukan database engine
yang berbeda pula).









Gambar a. Tanpa database engine. b. Dengan database engine

Program aplikasi yang dimaksudkan di sini adalah program-program tertentu yang
dikembangkan dan menggunakan database. Misalkan program iventarisari peralatan lab, yang
digunakan untuk penyimpanan barang-barang lab dan pembuatan laporan kondisi barang lab.

Konfigurasi Database
Selain ada beberapa jenis perbedaan database dilihat dari file-file database itu sendiri,
database juga dibedakan dari susunan/konfigurasi dari sistem database. Yang terbanyak dapat
dibagi menjadi tiga bagian.

Database lokal
Jika file-file database, program database engine dan program aplikasi terletak pada
satu mesin komputer yang sama, maka konfigurasi seperti ini disebut dengan database lokal.
Keuntungan utama dari konfigurasi ini adalah sederhana, tidak memerlukan banyak
peralatan, murah dan tidak banyak memerlukan perhatian khusus.
Kekurangan, tidak dapat multi-user (lebih dari satu user menggunakan database
secara bersama-sama), tidak dapat remote access (database dijalankan dari kejauhan).

Program
Aplikasi
Program
Database
File-file
Database
Program
Aplikasi
Database
Engine
File-file
Database










Gambar Database Lokal

Database file server
Jika file-file database diletakkan pada satu komputer khusus (server), sedangkan
database engine dan program aplikasi diletakkan pada komputer lain (tersendiri) dan masing-
masing komputer tersebut terhubung dalam satu jaringan komputer, maka konfigurasi seperti
ini disebut sebagai file server (server hanya melayani file-file database). Kuntungan
utamanya adalah, file-file database tersebut dapat digunakan oleh lebih dari satu pengguna
(multi-user).
Kekurangan, komunikasi dalam jaringan berat (database engine melakukan proses
yang sangat intensif dengan database file melalui jaringan komputer)









Gambar Database File Server

Database client-server
Kalau pada file server, server hanya digunakan untuk menyimpan file database, maka
pada client-server, server digunakan untuk menyimpan file database maupun database
engine-nya. Database dan database engine terintegrasi menjadi satu yang disebut dengan
database server. Pada sisi client hanya terdapat program aplikasi. Dengan teknik ini, client
menjadi lebih ringan cara kerjanya karena semua operasi atau proses database dilakukan oleh
server. Client hanya perlu untuk memerintahkan pengolahan database dan menerima hasil
jadinya.




Client Server
File
Database
Aplikasi
DB Engine
Client Server
File
Database
Aplikasi
DB Engine
Host
File
Database
Aplikasi
DB Engine






Gambar Database Client Server



Arsitektur Umum Database
Desktop/Form
Local Database
File Server Database
Client Server
Kelebihan
- Operasi lebih cepat dan lebih mudah dalam pembuatan aplikasi
- Lebih bersifat private (suatu aplikasi hanya digunakan sendiri oleh pihak-
pihak yang berkepentingan)
Kekurangan
- Proses pengembangan aplikasi dan instalasi menjadi berat, karena setiap
instalasi atau perubahan aplikasi harus dimasukkan satu per satu pada setiap
client yang memerlukan
- Tidak dapat digunakan secara global (suatu aplikasi tidak dapat digunakan
secara ramai-ramai oleh banyak orang dimanapun berada)
Aplikasi Web
Kelebihan mengatasi kekurangan Desktop/Form
Kekurangan aplikasi lambat dan masalah keamanan yang cukup kompleks
Aplikasi Database berbasis Web (Web Database)



Client
Web Browser
(IE)
Server
Web Server
(Apache)
Web File
(*.html)
Network
(Internet/Eternet)



Client
Web Browser
(IE)
Server
Web Server
(Apache)
Web File
(*.html)
Network
(Internet/Eternet)
Application
(Content) Server
(PHP Server)
Application File
(*.php)
Database
Server
(ORACLE)
Database File
(*.ORA)





Jumlah Tier
Single Tier
2-Tier
3-Tier

Server Client
Web Browser
(IE)
Server
Web Server
(Apache)
Web File
(*.html)
Network
(Internet/Eternet)
Application
(Content) Server
(PHP Server)
Application File
(*.php)
Database
Server
(ORACLE)
Database File
(*.ORA)
Front Tier (end)
(Presentation)
Middle Tier (end)
(Business Process)
Back Tier (end)
(Database)



PERTEMUAN KE 3

Contoh Macam-macam DBMS
Berbentuk File
DBase *.DBF
Fox Pro *.DBF
Paradox *.DB
ACCESS *.MDB
Berbentuk Server
InterBase
MySQL
MS SQL Server
ORACLE

Sebuah Contoh
Database Universitas, meliputi mahasiswa, matakuliah, nilai, kuliah, masing-masing
disimpan pada file terpisah
Mendefinisikan struktur record setiap file, dengan menentukan jenis dari setiap
datanya. Misal mahasiswa terdiri atas nrp, nama, kelas dan sebagainya
Menyediakan data untuk setiap file dengan data yang sesuai. Ada kemungkinan, suatu
data dari suatu file berhubungan dengan data lain pada file lainnya
Contoh Struktur Database dan Datanya

MAHASISWA Nama NRP Kelas Jurusan
Andi 123456789 1 1
Edi 214365870 2 1


Pada database yang besar, bisa terdapat sejumlah file dengan struktur yang besar,
serta banyak hubungan (relasi) antar data-data tersebut
Adanya manipulasi database, yang terdiri dari query dan pengubahan data (updating).

Karakteristik dari Pendekatan Database
Beberapa perbedaan, antara pendekatan pengolahan file dan database
Pada pengolahan file, setiap pengguna mendefinisikan sendiri data-data dalam file
yang diperlukan untuk aplikasi tertentu. Muncul adanya redundansi
Pada pendekatan database, satu kumpulan data hanya didefinisikan sekali saja,
dan dapat digunakan oleh lebih dari satu pengguna
Karakteristik utama dari pendekatan database dibandingkan pendekatan file,
Dengan sendirinya menjelaskan sifat alami dari sistem database
Isolasi antara Program dan Data, dan Abstraksi Data
Dapat melihat data dari berbagai sudut pandang
Bagi-bagi Pemrosesan Data dan Transaksi Multi-user

Pelaku Utama pada Sistem Database
Administrator Database
Mengatur Akses pengguna
Koordinasi dan mengawasi
Mempersiapkan sumber daya
Perancang Database
Mendefinisikan data-data yang akan disimpan pada database, serta menentukan
struktur yang sesuai
Mengerti keperluan database dari sudut pandang pengguna
Pengguna Akhir
Yang menjalankan suatu aplikasi tertentu yang berhubungan dengan database
System Analyst dan Programmer Aplikasi
System Analyst menentukan kebutuhan dari pengguna akhir, dan membuat
spesifikasi tertentu
Programmer Aplikasi membuat program sesuai dengan yang telah direncanakan
System Analyst dan Programmer Aplikasi sering disebut sebagai Perekayasa
Software (software engineers)

Pelaku Pembantu pada Sistem Database
Perancang dan Pembuat Sistem DBMS
Pengembang/Pembuat Alat Bantu
Operator dan Perawat Database

Kelebihan Penggunaan DBMS
Mengendalikan adanya Redudansi. Mencegah setiap pengguna memiliki data yang
sama
Membatasi adanya akses pengguna yang tidak diinginkan. Ada beberapa pengguna
yang dibatasi kemampuan aksesnya pada data-data tertentu.
Dapat digunakan sebagai penyimpan tetap untuk obyek program dan struktur data. Ini
diterapkan pada Database berorientasi obyek
Dapat digunakan untuk menghasilkan data-data tambahan yang berasal dari data-data
yang telah ada
Bisa digunakan untuk lebih dari satu pengguna secara bersamaan
Dapat digunakan untuk menunjukkan hubungan antar data yang cukup rumit
sekalipun
Menyediakan integritas data yang baik
Menyediakan keperluan backup dan recovery
Implikasi dari Pendekatan Database

Kapan Tidak Menggunakan DBMS

Konsep dan Arsitektur System Database
Model Data, Skema dan Instant
Kategori dari Model Data
Skema, Instant dan State Database
Skema Database, terdiri atas Konstruksi Skema, Misal Mahasiswa, Jurusan

MAHASISWA
Nama NRP Kelas Jurusan

JURUSAN
Kode Nama


Arsitektur DBMS dan Ketidak-tergantungan Data
Arsitektur Tiga Skema (Tiga Tingkat Abstraksi)
Ketidak-Tergantungan Data
Bahasa Database dan Interface
Bahasa DBMS
Interface DBMS
Lingkungan Sistem Database
Klasifikasi dari Sistem Manajemen Database

PERTEMUAN KE 4

Pemodelan Data menggunakan Model Entity-Relational (ER)
Menggunakan Model Data Konsepsual Tingkat Tinggi untuk Perancangan Database
Penyederhanaan Penjelasan Proses Perancangan Database
Analisis Kebutuhan, untuk mendapatkan Kebutuhan Database dan Kebutuhan
Fungsional
Perancangan konsepsual, untuk mendapatkan Skema konsepsual (HLDM) dan
Analisis Fungsional untuk mendapatkan Spesifikasi Transaksi Tingkat Tinggi
Perancangan Logikal, untuk mendapatkan Skema Logikan (Konsepsual) (DBMS)
Perancangan Fisikal, untuk mendapatkan Skema Internal (Fisik) dan Perancangan
Program Aplikasi
Implementasi Transaksi, untuk mendapatkan Hasil akhir berupa Program Aplikasi

Contoh Aplikasi Database, PERUSAHAAN
Data-data : PEGAWAI, DEPARTEMEN, PROYEK
Mini-word/Spesifikasi/User Requirement :
Perusahaan dibagi dalam Departemen. Tiap Departemen memiliki Nomor dan
Nama yang unik, Pegawai tertentu yang membawahi Departemen (Manajer), dan
catat Awal Pegawai tersebut sebagai Manajer. Setiap Departemen bisa memiliki
beberapa Lokasi
Sebuah Departemen mengendalikan beberapa Proyek. Setiap Proyek memiliki
Nomor dan Nama yang unik, serta satu Lokasi.
Data Pegawai yang disimpan antara lain, Nama, NIP, Alamat, Gaji, Sex, Tanggal
Lahir. Setiap Pegawai menempati satu Departemen, dan mungkin bekerja pada
beberapa Proyek, yang mungkin di bawah Departemen lain. Dicatat jumlah
Jam/Minggu setiap Pegawai yang bekerja pada tiap Proyek. Termasuk Pengawas
untuk tiap Pegawai.
Perlu dicatat Tanggungan tiap Pegawai, dengan mencatat Nama, Sex, Tanggal
Lahir dan Hubungan Keluarga.

Istilah-istilah
Entity
Strong, Weak
Attribute
Key, Partial Key, Atomic, Multi-valued, Composite, Derived
Relationship
Participation
- All, Partial
Ratio
- One to One, One to Many, Many to Many
Tuple
Instance
Jenis Entitas, Set Entitas, Atribut dan Kunci (Key)
Model ER Menggambarkan Data sebagai Entiti, Hubungan Relasi, dan Atribut.
Entitas dan Atribut
Entiti adalah representasi dari obyek dasar pada Model ER, yang benar-benar
secara fisik (contoh orang) atau Konsepsual (contoh perusahaan) ada dan tidak
saling bergantung keberadaannya.
Atribut adalah sesuatu yang dimiliki oleh Entiti dan menjelaskan segala sesuatu
yang berhubungan dengan Entiti.
- Atribut Sederhana (Atomik) atau Komposit (gabungan atribut sederhana)
- Atribut dengan satu nilai atau banyak nilai (jamak)
- Atribut yang tersimpan dan Turunan
- Atribut dengan nilai NULL
+ Ada kemungkinan bernilai NULL, atau banyak sekali yang bernilai NULL
(tidak diisi)
- Atribut Kompleks
+ Kombinasi dari berbagai macam atribut
Jenis Entitas, Set Entitas, Kunci dan Set Nilai
Kumpulan (Set) Entitas yang memiliki atribut sama disebut dengan Jenis Entitas
(Entity Type)
Jenis Entitas dinyatakan dengan Nama dan Atributnya
Atribut Kunci (Key) adalah atribut yang dapat digunakan untuk membedakan satu
informasi dengan informasi lainnya dalam suatu entity, yang disebut dengan
keunikan (Uniquely)
Perancangan Kosepsual Awal dari Database PERUSAHAAN
Hubungan Relasi, Jenis Hubungan Relasi, Role dan Konstrain Struktural
Jenis Hubungan Relasi, Set dan Instan
Jenis-jenis Derajat Relasi
Adalah jumlah entiti yang berpartisipasi pada suatu relasi
Relasi dua entiti berarti derajad dua, disebut binary
Relasi tiga entiti berarti derajad tiga, disebut ternary
Derajad relasi dapat berapa saja, namun derajad dua adalah yang paling umum
Relasi sebagai Atribut

Nama Role dan Hubungan Relasi Rekursif
Nama role adalah nama yang digunakan untuk menunjukkan peran/kegunaan dari
suatu entiti dalam suatu relasi
- Contoh, relasi antara dosen dan mahasiswa dalam memberikan bimbingan
tugas akhir (MEMBIMBING). Bagi dosen disebut sebagai PEMBIMBING
dan bagi mahasiswa disebut YANG_DIBIMBING (BIMBINGAN atau nama
lainnya)
Relasi rekursif adalah relasi yang terjadi pada entiti yang sama
- Contoh, pada entiti pegawai ada kemungkinan relasi antara pegawai dengan
pegawai, misalkan relasi MENGATUR/MENGAWASI (TO
MANAGE/SUPERVISE), dimana ada yang diatur dan ada yang mengatur
(MANAGER/SUPERVISOR)
Konstrain pada Jenis Hubungan Relasi
Perbandingan kardinaliti
- One to one

PEGAWAI
KAJUR JURUSAN
1 1
(0,1) (1,1)

+ 1 Pegawai menjadi Kajur 1 Jurusan
+ 1 Jurusan memiliki Kajur 1 Pegawai
+ 1 Pegawai bisa menjadi Kajur 1 Jurusan atau tidak (Tidak semua Pegawai
menjadi Kajur) dan maksimal 1 Pegawai menjadi Kajur pada 1 Jurusan
(0,1)
+ 1 Jurusan memiliki Kajur dari 1 Pegawai (Semua Jurusan memiliki Kajur)
dan Maksimal 1 Jurusan dipegang oleh 1 Pegawai (1,1)
- One to many

PEGAWAI
BEKERJA JURUSAN
(1,1) (2,N)
N 1

+ JURUSAN : PEGAWAI memiliki perbandingan 1 : N
+ 1 Jurusan memiliki banyak Pegawai yang Bekerja
+ 1 Pegawai Bekerja pada 1 Jurusan
+ 1 Pegawai minimal Bekerja pada 1 Jurusan (Semua Pegawai Bekerja pada
Jurusan) dan maksimal 1 Pekerja Bekerja pada 1 Jurusan (1,1)
+ 1 Jurusan Minimal memiliki 2 Pegawai dan Maksimal banyak Pegawai
(2,N)
- Many to many

PEGAWAI
MENGERJAKAN PROYEK
(1,M)
N
(1,N)
M

+ 1 Pegawai Mengerjakan banyak Proyek
+ 1 Proyek Dikerjakan oleh banyak Pegawai
+ 1 Pegawai minimal Mengerjakan 1 Proyek dan maksimal banyak Proyek
+ 1 Proyek minimal Dikerjakan oleh 1 Pegawai dan maksimal banyak
Pegawai
Partisipan
- Total/All
+ Semua menjadi bagian dari relasi
- Partial
+ Ada anggota yang tidak ikut dalam relasi, contoh relasi PEGAWAI dan
JURUSAN dengan relasi KAJUR, tidak semua PEGAWAI menjadi
KAJUR pada suatu JURUSAN
Atribut dari Jenis hubungan Relasi
Jenis Entitas Weak
Sebuah entity seharusnya dapat dibedakan antara satu informasi dengan informasi
lainnya, sehingga harus memiliki satu atau gabungan beberapa atribut yang dapat
digunakan sebagai pembeda, yang disebut dengan key
Jika key yang ada benar-benar dapat digunakan sebagai pembeda, artinya bersifat
uniks (tidak ada yang sama), maka suatu entity dikatakan kuat
Jika key yang ada memiliki beberapa informasi yang mirip, maka dikatakan key
tersebut bersifat tidak penuh (partial), sehingga entity disebut sebagai entity lemah
Perbaikan Perancangan ER untuk Database Perusahaan
Diagram ER, Perjanjian Penamaan, Isu Perancangan
Notasi Diagram ER
(Strong) Entity

PEGAWAI

- Pegawai memiliki atribut NIP yang dapat digunakan sebagai kunci
Weak Entity


KELUARGA


- Keluarga tidak memiliki atribut tertentu yang dapat digunakan sebagai kunci
Relationship

MENGAJAR

- Jika Dosen dan Mahasiswa bertemu pada Jam dan Ruangan tertentu untuk
membahas Matakuliah tertentu akan terjadi proses Mengajar
Identifying Relationship

MENANGGUNG

- Pegawai Menanggung Keluarga
Attribute

Sex

- Sex merupakan informasi yang sederhana
Key Attribute

NRP

- NRP merupakan atribut yang dapat digunakan untuk membedakan satu
Mahasiswa dengan lainnya
Partial Key Attribute

NAMA

- Nama adalah atribut yang dapat digunakan untuk membedakan Keluarga satu
dengan lainnya, namun kemungkinan ada yang sama
Multi-valued Attribute

ALAMAT

- Dalam beberapa hal, ada seseorang yang memiliki lebih dari satu alamat
Composite Attribute

ALAMAT
KELURAHAN KECAMATAN
KOTA JALAN

- Dalam beberapa hal, alamat dapat dipecah menjadi beberapa atribut yang lebih
sederhana
Derived Attribute

UMUR

- Atribut umur tidak perlu disimpan, tetapi dapat dihitung dari tanggal lahir
Total Participation of Entity In Relationship
- Total Participation

MEMBIMBING DOSEN MAHASISWA

+ Semua Dosen harus sebagai Pembimbing
- Partial Participation
+ Tidak semua Mahasiswa mengambil TA
Cardinality Ratio
- One to One

KAJUR JURUSAN PEGAWAI
1 1

+ 1 Jurusan memiliki 1 Pegawai sebagai Kajur
+ 1 Pegawai bekerja sebagai Kajur pada 1 Jurusan
- One to Many

BEKERJA JURUSAN PEGAWAI
1 N

+ 1 Jurusan memiliki N (banyak) Pegawai yang bekerja
+ 1 Pegawai bekerja pada 1 Jurusan
- Many to Many

MEMBIMBING DOSEN MAHASISWA
N M

+ 1 Dosen Membimbing M (banyak) Mahasiswa
+ 1 Mahasiswa Dibimbing oleh N (banyak) Dosen
Structural Constraint (min, max) on Participation of Entity in Relationship
- 1 Jurusan harus memiliki minimal 4 sampai N Pegawai yang bekerja
- 1 Pegawai harus bekerja minimal 1 sampai 1 Jurusan

BEKERJA JURUSAN PEGAWAI
(4,N) (1,1)

Penamaan yang Benar dari Pembentukan Skema
Pilihan Perancangan untuk Perancangan konsepsual ER
Notasi Alternatif untuk Diagram ER

5. Tata cara penggambaran ERD
Penggambaran harus sesuai dengan kebiasaan (model yang umum digunakan)
Jangan menggunakan konsep perancangan secara praktek, karena akan mengalami
kebingungan saat menggambar ERD. Anggap bahwa komponen dari ERD adalah Entiti,
Atribut, Relasi dan garis-garis penghubung. Jangan berfikir mengenai tabel, primary key,
foreign key
Gambarkan semua item dalam mini world selengkap mungkin, jangan ditambahi atau
dikurangi. Untuk memudahkan, catat/coret item yang sudah digambarkan
Jika ada suatu permasalahan yang belum jelas (tidak tertulis dalam mini world), dapat
dianggap berlaku secara umum (asumsi yang biasa digunakan)
Pemahaman pada suatu mini world bisa muncul perbedaan, tergantung bagaimana
melihat suatu mini world dari sudut pandang tertentu. Yang penting proses pemindahan
dari mini world ke dalam model ERD tidak ada yang terlewatkan dan salah
Periksa/catat adanya entiti
Entiti adalah suatu item yang dia dapat berdiri sendiri (tidak menjelaskan item
lainnya, dan keberadaannya tidak bergantung item lain), serta ada item lain yang
menjelaskan entiti tersebut
Periksa semua atribut dari suatu entiti
Atribut dari entiti adalah suatu item yang digunakan untuk menjelaskan suatu entiti
dan keberadaannya disebabkan entiti tersebut. Atribut dari entiti ini adalah suatu item
yang tidak berhubungan dengan entiti lain
Jika ada yang dianggap sebagai atribut, tetapi terdapat suatu entiti yang dapat
dianggap mewakili atribut tersebut, maka atribut ini dianggap sebagai relasi dari
kedua entiti tersebut. Misalkan, mahasiswa memiliki dosen wali. Mahasiswa adalah
entiti, dan jika tidak ada entiti lain yang berhubungan dengan dosen wali, maka dosen
wali dapat dianggap sebagai atribut dari entiti mahasiswa. Namun jika terdapat entiti,
misalkan dosen, maka dosen wali dapat dianggap berupa relasi antara mahasiswa dan
dosen
Jika ada di antara atribut tersebut yang dapat dianggap sebagai kunci utama, entiti
dianggap sebagai entiti kuat, jika tidak, dianggap entiti lemah
Kunci utama adalah atribut yang nilainya unik (tidak ada yang sama) pada entiti
tersebut. Kunci utama bisa terdiri dari satu atribut untuk mendapatkan nilai yang
unik. Atribut ini ditandai sebagai kunci utama.
Meskipun suatu entiti lemah tidak memiliki atribut yang bernilai unik yang dapat
digunakan sebagai kunci utama, setidaknya ada atribut yang dapat dianggap
sebagai kunci sementara. Misalkan nama, dan tandai sebagai kunci lemah
Periksa adanya relasi
Relasi adalah adanya sesuatu yang menyebabkan lebih dari satu entiti saling bertemu
(muncul suatu urusan atau kegiatan atau hubungan antar entiti)
Periksa partisipan dari relasi, semua atau tidak
Periksa perbandingan relasi, satu atau banyak
Relasi bisa muncul pada lebih dari dua entiti
Periksa adanya atribut dari suatu relasi
Atribut ini muncul karena adanya suatu relasi dan hanya digunakan untuk
menjelaskan relasi tersebut


PEGAWAI
TANGGUNGAN
DEPARTEMEN
PROYEK
PENGA
WASAN
MENANG
GUNG
BEKERJA
MENGA
TUR
MENGENDA
LIKAN
Nama
Sex Tgl_Lahir
Hubungan
Nama
Sex
Alamat Gaji
Tgl_Lahir
Mulai
Nama
Nomor
Lokasi
Nama
Nomor Lokasi
Jumlah
Pegawai
BEKERJA_
PADA
Jam
NIP
1
1
1
1
1
N
N
N
M
N
1
N
Pengawas
Pegawai
Tanggungan
Pegawai
Pegawai
Departemen
Manajer
Departemen
Pekerja
Proyek
Proyek
Departemen

Keterangan
Seorang Pengawas adalah Pegawai yang ditugaskan sebagai Pengawas, karena itu,
Pengawas menjadi suatu relasi Pegawasan antara Pegawai sebagai Pengawas dan
Pegawai yang Diawasi
Nama atau Keterangan pada tiap relasi menunjukkan fungsi relasi dari tiap-tiap entity
PERTEMUAN KE 7

Pengubahan/Mapping dari ERD ke Skema Database
Pendahuluan
Dua level Skema
Logical (conceptual) Level : Bagaimana User menterjemahkan skema relasi dan
arti dari atributnya. Level ini akan memberikan pengertian yang benar mengenai
data-data dalam suatu relasi.
Implementation (storage) Level : Bagaimana baris-baris data disimpan dan
diubah.
Pendekatan perancangan DB
Bottom-up design methodology (sintesis) : Dari atribut-atribut yang ada, disusun
relasi-relasinya
Top-down design methodology : Berangkat langsung dari pengelompokan atribut-
atribut beserta relasinya
Istilah-istilah
Skema
Suatu gambaran mengenai entiti-entiti beserta atributnya yang saling berelasi
Entiti
Atribut
Relasi
Instance
Suatu nilai atau data atau isi dari entiti
Tuple
Baris data dari instance

PASIEN
Nama Alamat Tgl_Lahir
Suhardi Jl. Baliwerti 10 Sby 12-10-1992
Bobo Jl. Ngagel 20 Sby 4-2-2000
Muarta Jl. Indrapura 1 Sby 11-9-1980
Nama Entiti
Nama Atribut
Satu tuple
instance

Catatan
Pada tahap Pemetaan (mapping atau pembuatan skema), jangan menambahkan atribut
baru, misalkan atribut kunci, dengan alasan tidak ada kunci atau alasan lainnya.
Lakukan penambahan kunci dan sebagainya pada tahap masih di ERD atau di
spesifikasinya. Pada saat Pemetaan (mapping atau pembuatan skema), tidak
diperkenankan menambahkan atribut baru, kecuali entiti baru hasil dari relasi N:M
atau relasi orde lebih dari 2 atau hasil dari Normalisasi.
Penambahan kunci baru dapat dilakukan nanti, jika pada tahap Normalisasi (biasanya
NF1) ditemukan data yang redundant sehingga harus dibuatkan entiti baru dan
terpaksa diberikan atribut kunci baru untuk entiti baru tersebut
Entiti
Gambar skema dari entiti sangat bergantung dari atribut yang dimiliki oleh entiti
tersebut

Atribut 1 Atribut 2 Atribut 3 Atribut 4 Atribut n
Nama Entiti
Nama Entiti
Atribut 3
Atribut 1
Atribut 2
Atribut 4
Atribut n

Atribut Tunggal
Atribut tunggal digambarkan dalam bentuk satu kolom atribut dan satu baris
(tuple)

NAMA
Andi
NIP
123456780
Sugeng 123456781
Amin 123456782
Satu satuan informasi
memiliki satu tuple
data NAMA

Atribut Turunan
Atribut turunan tidak perlu digambarkan, karena ia nantinya (dari program
aplikasi) dapat diturunkan dari atribut lainnya
Atribut Kunci Utama (memiliki nilai unik)
Atribut ini dapat terdiri dari satu atribut atau gabungan beberapa atribut yang
memiliki nilai unik dan digambarkan dengan pemberian garis bawah

NAMA
Andi
NIP
123456780
Sugeng 123456781
Amin 123456782
Satu jenis informasi
(NIP) memiliki data
yang tidak akan ada
yang sama

Atribut Kunci Sementara
Seperti pada kunci utama, hanya digambarkan dengan garis titik-titik

NAMA
Andi
TGL_LAHIR
12-02-2000
Sugeng 10-10-1998
Amin 03-12-1970
Satu jenis informasi
(NAMA) memiliki data
yang kemungkinan ada
yang sama

Atribut Komposit
Dapat digambarkan sebagai beberapa atribut tunggal dengan jumlah atribut sesuai
jumlah atribut komposit
Dapat dibuatkan tabel baru dengan relasi 1:1

NAMA JALAN KOTA PROVINSI
PEGAWAI
PEGAWAI
Alamat
Jalan
Nama
Kota
Provinsi
NIP NAMA

PEGAWAI
NIP JALAN KOTA PROVINSI
ALAMAT
NIP
NIP
atau

Atribut Jamak
Seperti pada atribut tunggal, namun memiliki beberapa baris (tuple) sesuai dengan
jumlah atribut

NAMA
Andi
NIP
123456780
Sugeng 123456781
Amin 123456782
Satu satuan informasi
memiliki lebih dari
satu tuple data TELP
TELP
081123456
081132123
081232167
7070123
PEGAWAI

Cara menyimpan data:

NAMA
Andi
NIP
123456780
Sugeng 123456781
Amin 123456782
TELP
081123456
081132123
081232167
Andi

123456780

7070123
Muncul data kembar,
dan kunci NIP
memiliki data yang
sama tidak boleh
PEGAWAI

- Normalisasi langsung Atribut jamak diganti dengan entiti baru, dimana
nama entiti sama dengan nama atribut dan entiti tersebut memiliki atribut
referensi yang sama dengan kunci utama dari entiti sebelumnya, dan atribut
jamak

NAMA
Andi
NIP
123456780
Sugeng 123456781
Amin 123456782
NIP
123456780
123456781
123456782
TELP
081123456
081132123
081232167
123456780

7070123
PEGAWAI TELP
Bukan key,
sehingga tidak
masalah kalau
ada data yang
sama

Catatan: Istilah Redundansi (ada data yang sama)
Adalah suatu data yang memang arti atau maksudnya sama yang disimpan lebih
dari satu kali
- Contoh, data jurusan Elektronika disimpan lebih dari satu kali
+ Tidak mungkin ada dua jurusan yang tidak sama tetapi memiliki nama
yang sama
- Jika data-data tersebut sangat sederhana dan tidak dapat disederhanakan lagi,
maka tidak mengapa ada redundansi
+ Contoh, KODE_JURUSAN, misalkan jurusan Elektronika dikodekan
dengan nilai 1, maka tidak mengapa kode 1 disimpan dibanyak tempat,
asalkan bukan nama Elektronika yang disimpan di banyak tempat
Ini berbeda dengan istilah unik atau tidak unik
Tidak unik artinya ada kemungkinan data-data yang berbeda memiliki nilai yang
sama
- Contoh, dua orang yang perbeda bisa memiliki nama yang sama
Relasi 1:1
Relasi dapat diwaliki dengan menambahkan atribut kunci utama (entiti dengan
partisipan sebagian/parsial) beserta atribut pada relasi tersebut pada entiti dengan
partisipan lebih banyak/penuh (why, sebab menghindari banyaknya nilai NULL)

PEGAWAI JURUSAN
Memimpin
(Kajur)
NIP
1 1
Nama Kode
Mulai
KODE NAMA NIP_KAJUR MULAI
JURUSAN
NIP NAMA
PEGAWAI

Relasi dengan partisipan sama-sama penuh, dapat dimasukkan pada salah satu entiti.
Sebenarnya kedua entiti ini dapat dijadikan satu, karena pasti memiliki jumlah
tuple yang sama, dengan relasi 1:1
Relasi dengan parsisipan sama-sama sebagian, dimasukkan pada entiti dengan derajat
partisipan paling banyak/penuh
Relasi 1:m
Relasi dapat diwakili dengan menambahkan atribut kunci utama dari entiti yang
memiliki relasi 1, termasuk atribut pada relasi tersebut, menjadi atribut dari entiti
yang memiliki relasi

PEGAWAI JURUSAN
NIP
N 1
Nama Kode
Mulai
NIP NAMA KODE_JUR MULAI
PEGAWAI
Nama
BERGABUNG
KODE NAMA
JURUSAN

Relasi m:n
Relasi m:n harus diubah menjadi entiti baru dengan atribut terdiri dari atribut kunci
utama dari kedua entiti, serta kalau ada atribut pada relasi tersebut

PEGAWAI PROYEK
Bekerja
(Proyek)
NIP
N M
Nama Kode
Mulai
NIP KODE_PROYEK MULAI
BEKERJA
Nama
KODE NAMA
PROYEK
NIP NAMA
PEGAWAI

Relasi lebih dari 2 entiti
Relasi ini dapat dipecah menjadi beberapa relasi dari dua entiti dan aturan
pemetaannya sama dengan sebelumnya
Relasi dapat juga dibentuk menjadi entiti baru dengan atribut sesuai dengan atribut
kunci utama dari setiap entiti, termasuk kalau ada atribut dari relasi tersebut

PERTEMUAN KE 8

Ketergantungan Fungsional (Functional Dependency, FD)
Pengertian
Nilai dari suatu atribut dipengaruhi/tergantung dari nilai atribut lain
Suatu konstrain antara dua set atribut
Atribut Y bergantung dari atribut X dalam suatu relasi R : X Y, sehingga
Akan selalu t
1
[X] = t
2
[X] maka t
1
[Y] = t
2
[Y], dimana t
1
dan t
2
adalah tuple dalam R
A B, Jika A maka B, Implikasi
A B A B
Salah Salah Benar
Salah Benar Benar
Benar Salah Salah
Benar Benar Benar
Pengujian dilakukan untuk semua keadaan A dan B
Pengujian paling singkat adalah, B tidak bergantung dari A jika B salah tetapi A
benar
- Jika ada data pada A yang sama, maka apakah data pada B ada kemungkinan
tidak sama, jika demikian maka artinya tidak B tidak bergantung dari A
Contoh
ABSENSI_MAHASISWA
NRP NAMA JURUSAN KULIAH TANGGAL KAJUR
1 1234 Agung IT Database 12-01-2008 Arna
2 1235 Enok IT Database 12-01-2008 Arna
3 1236 Nono IT Database 12-01-2008 Arna
4 1237 Sugi IT Database 12-01-2008 Arna
5 1244 Agung ELKA RE 12-01-2008 Syafruddin
6 1246 Nanang ELKA RE 12-01-2008 Syafruddin
7 1248 Munir ELKA RE 12-01-2008 Syafruddin
8 1234 Agung IT Database 19-01-2008 Arna

NRP NAMA ? Ya
t
1
[NRP]=t
8
[NRP] t
1
[NAMA]=t
8
[NAMA]
Untuk NRP yang sama tidak mungkin dengan dua NAMA yang berbeda
NRP JURUSAN ? Ya
Untuk NRP yang sama tidak mungkin dua JURUSAN yang berbeda
NAMA JURUSAN ? Tidak
t
1
[NAMA]=t
5
[NAMA] t
1
[JURUSAN]t
5
[JURUSAN]
Untuk NAMA yang sama (nama kembar) ada kemungkinan JURUSAN yang
berbeda
NRP KULIAH ? Tidak
Untuk NRP yang sama ada kemungkinan KULIAH yang berbeda (lebih dari satu
mata kuliah)
NRP TANGGAL ? Tidak
Untuk NRP yang sama ada kemungkinan pada TANGGAL yang berbeda (kuliah
lain pada tanggal yang lain)
NRP KAJUR ? Ya
Untuk NRP yang sama tidak mungkin ada dua KAJUR yang berbeda
JURUSAN KAJUR ? Ya
Untuk JURUSAN yang sama tidak mungkin memiliki KAJUR yang berbeda
KULIAH NRP ? Tidak
Untuk KULIAH yang sama ada kemungkinan NRP berbeda (beda orang)
TANGGAL NRP ? Tidak
Pada TANGGAL yang sama ada kemungkinan beda NRP (orang lain)
KULIAH, TANGGAL NRP ? Tidak
Ada kemungkinan KULIAH dan TANGGAL sama, tetapi NRP berbeda (orang
lain)
KULIAH, NRP TANGGAL ? Ya
Untuk satu KULIAH dengan NRP yang sama tidak mungkin ada dua TANGGAL
yang berbeda (kecuali kuliah dilakukan dua kali)
Dalam kasus NRP JURUSAN, NRP KAJUR, tetapi JURUSAN KAJUR,
maka ketergantungan fungsionalnya dapat dibuat NRP JURUSAN KAJUR,
artinya KAJUR bergantung secara tidak langsung kepada NRP.
Sehingga diagram FD

NRP NAMA JURUSAN KULIAH
ABSENSI_MAHASISWA
TANGGAL KAJUR
FD I
FD II
FD III

Mengingat banyak kemungkinan adanya saling ketergantungan, maka untuk
memudahkan dapat dibuat asumsi-asumsi atau berdasarkan pengamatan sesuai dengan
biasanya, suatu atribut biasanya bergantung dengan atribut apa, atau suatu atribut
biasanya mempengaruhi atribut apa saja.

Normalisasi
Pengertian
Alasan
Informasi dengan Redundansi dalam Tuple
- Suatu baris data (tuple) memiliki informasi (sekelompok atribut) yang sama
dengan baris data lainnya. Ini akan menyebabkan terjadinya ketidak-normalan
(Anomaly) pada saat proses pengubahan data (Update)
Ketidak-normalan dalam Update
- Jika akan melakukan penambahan data baris baru dengan kelompok atribut
tertentu yang sama dengan data yang sudah ada (misalkan departemen), maka
data baru tersebut harus benar-benar sama. Kesulitan akan muncul jika data
baru tersebut belum ada pada data yang lama, maka kemungkinan yang
dilakukan adalah mengisikan data kosong atau membuat tabel khusus untuk
menyediakan data atribut tersebut.
- Jika melakukan penghapusan pada suatu baris yang mengandung informasi
penting pada suatu atribut, maka ini akan menghilangkan informasi tersebut.
Lain halnya jika informasi disimpan pada tabel terpisah
- Jika melakukan pengubahan suatu baris yang memiliki kelompok atribut
tertentu (misalkan departemen), maka harus juga dilakukan pengubahan pada
semua baris data yang memiliki kelompok atribut yang sama
Null Values pada Tuple
- Jika suatu skema memiliki banyak relasi (relasi yang gemuk/fat relation),
maka akan banyak kemungkinan saat melakukan pengisian data, tidak semua
atribut terisi yang akan menyebabkan pemborosan media simpan. Hal ini juga
banyak menimbulkan masalah saat dilakukan operasi tertentu, misalkan
menjumlahkan atau menghitung suatu atribut yang banyak mengandung nilai
Null, bisa berarti, tidak digunakan, tidak diisi, atau isinya salah, dan
seterusnya.
Kapan melakukan dan tidak melakukan
Super key, Key, Candidate key, Primary Key
Saat suatu skema dianalisa berdasarkan contoh instant, ada atribut atau beberapa atribut
atau kombinasi dari beberapa atribut yang memiliki nilai unik, artinya tidak sama satu
dengan lainnya. Atribut-atribut tersebut dapat digunakan sebagai key.
Super key
Kombinasi dari beberapa atribut (1 s/d semua atribut) dijadikan kunci (key)
Key
Adalah atribut yang dapat digunakan sebagai kunci (key) dari suatu skema (entiti).
Salah satu dari super key yang paling sederhana.
Candidate key
Jika suatu skema memiliki lebih dari satu key, maka setiap key disebut candidate
key
Primary Key
Salah satu dari candidate key umumnya dianggap sebagai primary key.
Contoh, dalam skema PEGAWAI, ada beberapa atribut yang dapat digunakan sebagai
key, misalkan
{NIP}, atau {NIP, NAMA}, atau {NIP, NAMA, TGLLAHIR}, ketiganya disebut
sebagai super key dari PEGAWAI
{NIP} dianggap sebagai key
Jika {NIP} dan {NAMA} keduanya dapat dianggap key (misalkan isi dari NAMA
dianggap unik), maka keduanya dianggap sebagai candidate key, dan NIP dapat
dianggap sebagai primary key
First Normal Form (1NF)
Tidak diperkenankan atribut dengan nilai jamak, komposit, dan segala kombinasinya
yang akan menyebabkan redundansi
Contoh
Departemen{DNUMBER, DNAME,DMGR,DLOC}
DLOC memiliki kemungkinan lebih dari satu lokasi
Skema DEPARTEMEN dengan kunci DNUMBER

DNUMBER DNAME DMGR DLOC
DEPARTEMEN

Instant DEPARTEMEN

DNUMBER DNAME DMGR DLOC
DEPARTEMEN
1
2
3
Riset
Produksi
Administrasi
Edi
Budi
Andi
{Surabaya}
{Malang, JKT, SBY}
{Surabaya}

1NF dengan Redundansi, Kunci menjadi {DNUMBER dan DLOC}

DNUMBER DNAME DMGR DLOC
DEPARTEMEN
1
2
3
Riset
Produksi
Administrasi
Edi
Budi
Andi
Surabaya
Malang
Surabaya
2 Produksi Budi JKT
2 Produksi Budi SBY
Muncul
redudansi

1NF tanpa redundansi, tabel dipecah menjadi dua

DNUMBER DNAME DMGR DLOC
DEPARTEMEN
1
2
3
Riset
Produksi
Administrasi
Edi
Budi
Andi
Surabaya
SBY
Surabaya
DNUMBER
DLOC
1
2
3
Malang
JKT
2
2

Contoh Lain:
CASHFLOW{NO_TRANSAKSI, ITEM, JUMLAH, NOMINAL, STATUS}
STATUS adalah atribut yang berisi data Keluar/Masuk atau Debit/Kredit
Dalam aplikasinya nanti, proses untuk memasukkan data Keluar atau Masuk
bisa menimbulkan kesalahan data yang menyebabkan ketidak-konsistenan cara
penulisan
Normalisasi NF1, STATUS dijadikan entiti baru dengan atribut STATUS dan
atribut kunci baru (misalkan) KODE.

CASHFLOW
NO_TRANS ITEM JUMLAH NOMINAL STATUS
12345 Mendapat
Bonus
1 1000000 MASUK
12346 Membeli
Sampoo
2 50000 KELUAR
12347 Membeli
Rujak
1 10000 KELUAR
12348 Menerima
Bagi-hasil
1 500000 MASUK

Dilakukan NF1 menjadi:

CASHFLOW
NO_TRANS ITEM JUMLAH NOMINAL STATUS
12345 Mendapat
Bonus
1 1000000 1
12346 Membeli
Sampoo
2 50000 2
12347 Membeli
Rujak
1 10000 2
12348 Menerima
Bagi-hasil
1 500000 1

STATUS
KODE STATUS
1 MASUK
2 KELUAR

Contoh Lain:
SISWA{NRP, NAMA, KELAS, JENIS_KELAMIN}
Jika penulisan JENIS_KELAMIN misalkan Laki-laki atau Pria atau
Perempuan atau Wanita bisa menimbulkan masalah konsistensi
Kalau penulisan menggunakan L/P atau 1/2 masih dianggap benar
Normalisasi NF1, JENIS_KELAMIN dijadikan entiti baru dengan atribut KODE
sebagai key dan JENIS_KELAMIN

Catatan:
Perbedaan antara redundansi dan tidak unik lihat penjelasan mengenai mapping
pada atribut jamak
Masalah penambahan kunci baru pada entiti yang tidak memiliki kunci (dianggap
banyak data yang kembar atau tidak unik) lihat penjelasan pada Catatan saat
dilakukan mapping
- Data yang kebetulan kembar bukan masalah, yang tidak diperbolehkan
adalah data yang benar-benar kembar lihat penjelasan mengenai
perbedaan redundansi dan tidak unik.
Contoh lain:
Anggap ada suatu relasi MELANGGAR antara SISWA dan GURU dengan rasio
N:M sehingga dalam mapping-nya harus dibuatkan entiti baru
Pada entiti baru tersebut memiliki atribut NRP, NIP, TANGGAL dan
PELANGGARAN
Contoh data-datanya
NRP NIP TANGGAL PELANGGARAN
1234 1111 12-01-2010 Mencontek
1233 2222 01-02-2010 Terlambat
1234 2222 10-03-2010 Membuang sampah sembarangan
1234 1111 12-03-2010 Memakai sandal
1233 1111 12-03-2010 Merokok di kelas
1235 1111 12-03-2010 Memakai kaos oblong
1235 1111 12-03-2010 Rambut Gondrong
1235 1111 12-03-2010 Mencoret-coret bangku

Apakah atribut NRP, NIP dan TANGGAL tidak unik ? Ya, karena memang
banyak data yang kembar
Apakah atribut tersebut redundant ? Ya, karena pada atribut tersebut digunakan
untuk menyimpan data yang memang maksudnya sama. Contoh NRP 1235
disimpan berulang-ulang
Apakah entiti tersebut perlu dibuatkan kunci yang bersifat unik ? Tidak perlu,
selama entiti PELANGGARAN dianggap memang tidak memerlukan kunci.
- Kalau memang diinginkan suatu kunci ? Harus sudah dibuat sejak dirancang
spesifikasi atau ERD, misalkan NO_PELANGGARAN
Apakah entiti tersebut perlu dinormalisasi (dipisahkan NRP, NIP dan TANGGAL
menjadi entiti baru) ? Tidak
- Mengapa ? Karena atribut tersebut sudah berupa data yang dianggap
sederhana dan mungkin tidak dapat disederhanakan lagi.
- Contoh, apakah ada kunci lain sebagai pengganti NRP ? Kalau ada, kunci ini
seharusnya sudah digunaan saat merancang spesifikasi atau ERD
- Contoh, apakah ada data lain yang lebih sederhana untuk menggantikan
tanggal ?
Contoh tabel yang sama namun dengan data-data yang berbeda
NRP NIP TANGGAL PELANGGARAN
1234 1111 12-01-2010 Mencontek
1233 2222 01-02-2010 Merokok di kelas
1234 2222 10-03-2010 Memakai kaos
oblong
1234 1111 12-03-2010 Memakai sandal
1233 1111 12-03-2010 Merokok di kelas
1235 1111 12-03-2010 Memakai kaos
oblong
1235 1111 12-03-2010 Rambut Gondrong
1235 1111 12-03-2010 Mencontek
Apakah atribut NRP, NIP, TANGGAL dan PELANGGARAN tidak unik ? Ya,
karena memang banyak data yang kembar
Khusus untuk NRP, NIP dan TANGGAL sudah dibahas pada penjelasan
sebelumnya
Apakah atribut PELANGGARAN berisi data yang redundant ? Ya, karena berisi
data yang maksudnya sama
Apakah entiti tersebut perlu dinormalisasi dengan memisah atribut
PELANGGARAN menjadi entiti baru ? Bisa Ya, bisa Tidak. Loh ?
Jika data-data pada atribut PELANGGARAN dimaksudkan berupa data yang
bersifat mandiri, berupa keterangan yang boleh ditulis bebas, tidak mengapa
menuliskan dengan cara yang berbeda meskipun maksudnya sama, maka tidak
perlu dilakukan normalisasi.
- Contoh, tidak mengapa menuliskan pelanggaran, misalkan, Memakai
sandal, dan kadang ditulis Memakai sandal jepit.
Namun, jika diinginkan untuk jenis-jenis pelanggaran yang sama harus persis
dituliskan sama, dan kelak ingin dilakukan analisa dengan cara mengelompokkan
jenis pelanggaran, maka ini harus dilakukan normalisasi


Second Normal Form (2NF)
Ketergantungan fungsional secara penuh
Suatu atribut harus bergantung sepenuhnya dengan kunci utama, tidak boleh
dengan kombinasi antara kunci utama dengan atribut lain
Contoh
Kuliah {Hari, Jam, Ruang MataKuliah}
- Misalkan, ruang kuliah selalu sama pada satu hari, tetapi mata kuliah berbeda
untuk jam kuliah tertentu
Ruang bergantung Hari (bergantung penuh)
MK bergantung Hari dan Jam (bergantung sebagian/tidak penuh/parsial)
Skema

HARI JAM RUANG MK
KULIAH
FD1
FD2

Instant

HARI JAM RUANG MK
KULIAH
Senin 08.00 HH-105 Elka
Senin 13.00 HH-105 Inggris
Selasa 08.00 HH-104 Agama
Selasa 13.00 HH-104 Matematika
Rabu 08.00 HH-106 Fisika
Rabu 13.00 HH-106 Kimia
Kamis 08.00 HH-205 Telkom
Kamis 13.00 HH-205 Komputer
Jumat 08.00 TC-105 OS
Jumat 13.00 TC-105 Database

Normalisasi bentuk ke dua (2NF)

HARI RUANG
KULIAH_RUANG
FD
HARI JAM MK
KULIAH_MK
FD

Third Normal Form (3NF)
Ketergantungan fungsional langsung
Suatu atribut harus bergantung secara langsung dengan kunci utama, tanpa
melalui perantara atribut lain (bergantung tidak langsung)
Contoh
Data Pegawai {NIP, NAMA, ALAMAT, LULUSAN, JURUSAN, KAJUR,
SEKJUR}
Nama, Alamat, Lulusan, Jurusan bergantung langsung dengan NIP
Kajur dan Sekjur bergantung langsung dengan Jurusan dan bergantung tidak
langsung dengan NIP
Skema

NIP NAMA ALAMAT LULUSAN
PEGAWAI
FD1
FD2
JURUSAN KAJUR SEKJUR

Instant

NIP NAMA ALAMAT LULUSAN
PEGAWAI
JURUSAN KAJUR SEKJUR
123456 Eko Surabaya D3 ELKA DEDID HENDRI
123457 Joko Surabaya D4 ELKA DEDID HENDRI
123458 Andi Surabaya S1 IT IWAN NANA
123459 Munir Surabaya S2 IT IWAN NANA

Normalisasi bentuk ke 3 (3NF)

NIP NAMA ALAMAT LULUSAN
PEGAWAI
FD
KODEJ JURUSAN KAJUR SEKJUR KODEJ
JURUSAN

Catatan:
Jika perancangan ERD dilakukan secara detil (segala aspek diperhitungkan), biasanya
yang sering dilakukan hanya sampai NF1 (membuang redundansi), Sedangkan NF2
dan NF3 hampur tidak perlu dilakukan
Jangan menambahkan atribut baru, misalkan atribut kunci, dengan alasan tidak ada
kunci atau alasan lainnya. Lakukan penambahan kunci dan sebagainya pada tahap
masih di ERD atau di spesifikasinya. Pada saat Pemetaan (mapping atau pembuatan
skema), tidak diperkenankan menambahkan atribut baru, kecuali entiti baru hasil dari
relasi N:M atau relasi orde lebih dari 2 atau hasil dari Normalisasi.

PERTEMUAN KE 9

ER yang Lebih Maju dan Pemodelan Object
Sub-Klas, Super-Klas dan Turunan
Spesialisasi dan Generalisasi
Konstrain dan Karakteristik dari Spesialisasi dan Generalisasi
Pemodelan dari Jenis UNION menggunakan Kategori
Sebuah Contoh Skema UNIVERSITAS EER dan Definisi Formal untuk Model EER
Pemodelan Obyek Konsepsual Menggunakan Diagram Klas UML
Jenis Hubungan Relasi yang Derajatnya Lebih dari Dua

PERTEMUAN 10

Model Data Relasi, Pembatasan Relasi dan Aljabar Relasi
Konsep Model Relasi
Domain, Atribut, Tuple dan Relasi
Karakteristik dari Relasi
Notasi Model Relasi

Konstrain Relasi dan Skema Database Relasi
Konstrain Domain
Konstrain Kunci dan konstrain Null
Database Relasi dan Skema Database Relasi
Integritas Entiti, Integritas Referensi, dan Kunci Foreign

Operasi Update dan Dealing dengan Pelanggaran Konstrain
Operasi Penyisipan
Operasi Penghapusan
Operasi Pengubahan

Operasi Aljabar Relasi Dasar
Operasi PROJECT (t)
Memilih Atribut mana yang akan ditampilkan
Format : ) (R
Ekspresi atau Atribut List
o
Contoh : ) 1 (
2 * 1 , 2 , 1
E
A A A A
o
Operasi SELECT (o)
Memilih Tuple mana saja dari suatu relasi R yang akan ditampilkan
Format : ) (
) (
R
boolean atau an Perbanding Kondisi
t
Contoh : ) 1 (
3 2 10 1
E
A A and A = >
t
Urutan Operasi dan Operasi RENAME
Operasi Teori Set
Union
- Menggabungkan tuple dari dua relasi
Intersect
- Mencari tuple yang sama dari dua relasi
Different
- Mencari selisih dari suatu relasi
Operasi JOIN ( )
Cartesian (Cross Product)
- Mencari semua kemungkinan yang ada (perkalian silang dua relasi)
- Format : A B
- Hasil :
+ Atribut merupakan gabungan dari atribut kedua relasi
+ Tuple merupakan kombinasi (perkalian) dari tuple kedua relasi
Inner Join (Equi Join)
- Mencari data yang ada pada kedua relasi (memasangkan data)
- Format : A
Kondisi Join
B
- Contoh : A
A.X=B.X
B
- Hasil :
+ Atribut merupakan gabungan dari atribut kedua relasi
+ Tuple merupakan tuple sesuai dengan kondisi dari kedua relasi
Outer Join
- Mencari data tidak ada pasangannya
+ Format : A
Kondisi Join
B
+ Contoh : A
A.X=B.X
B
+ Hasil :
Atribut merupakan gabungan dari atribut kedua relasi
Tuple merupakan tuple sesuai dengan kondisi dari kedua relasi
- Left Join
+ Sisi kiri memiliki data yang tidak ada pasangannya pada sisi kanan
+ Format : A
Kondisi Join
B
+ Contoh : A
A.X=B.X
B
+ Hasil :
Atribut merupakan gabungan dari atribut kedua relasi
Tuple merupakan tuple dari relasi sisi kiri yang tidak memiliki
pasangan pada sisi kanan sesuai dengan kondisi dari kedua relasi
- Right Join
+ Sisi kanan memiliki data yang tidak ada pasangannya pada sisi kiri
+ Format : A
Kondisi Join
B
+ Contoh : A
A.X=B.X
B
+ Hasil :
Atribut merupakan gabungan dari atribut kedua relasi
Tuple merupakan tuple dari relasi sisi kanan yang tidak memiliki
pasangan pada sisi kiri sesuai dengan kondisi dari kedua relasi
- Full Join
+ Mencari data yang tidak memiliki pasangan baik pada sisi kiri maupun
pada sisi kanan. Merupakan gabungan dari Left Outer Join dan Right
Outer Join
+ Format : A
Kondisi Join
B
+ Contoh : A
A.X=B.X
B
+ Hasil :
Atribut merupakan gabungan dari atribut kedua relasi
Tuple merupakan tuple dari relasi sisi kiri dan kanan yang tidak
memiliki pasangan pada sisi lain sesuai dengan kondisi dari kedua
relasi
Set Lengkap dari Operasi Aljabar Relasi
Operasi DIVISION
Soal
Buat Aljabar Relasi untuk mencari mata-kuliah apa saja yang telah diambil oleh
mahasiswa semua jurusan kelas 3 program d3 yang mata-kuliah-nya telah
dihapuskan dalam proses ekuivalensi saat terjadi pergantian kurikulum.
Tampilkan nama mahasiswa beserta jurusannya dan mata-kuliah yang dihapus

Operasi Relasi Tambahan
Fungsi Aggregate dan Pengelompokan (Grouping)
Operasi Recursive Closure
Operasi OUTER JOIN dan OUTER UNION

PERTEMUAN 11

Contoh Query pada Aljabar Relasi
Skema : Mahasiswa, Dosen, Jurusan, Kelas, Program

KODEP PROGRAM
NIP NAMA ALAMAT JABATAN
KODEJ JURUSAN NIP_KAJUR NIP_SEKJUR
KODEK KODEP KODEJ KELAS PARALLEL
GOLONGAN
NRP NAMA KODEK ALAMAT
Program
Pegawai
Jurusan
Mahasiswa
Kelas


Buat Aljabar Relasi untuk
Menampilkan semua data Program Studi
- ( ) Program
Program KodeP,
t
Siapa Kajur jurusan Elektronika
- ( ) ( ) Pegawai Jurusan
NIP Kajur NIP a Elektronik Jurusan Nama Jurusan = = _ ' ' ,
o t
atau
-
( )
( ) 2
1 2
1
,
_
' '
R
Pegawai R R
Jurusan R
Kajur as Nama Jururan
NIP Kajur NIP
a Elektronik Jurusan
t
o
=
=


Menampilkan Data Lengkap Jurusan
Menampilkan Data Lengkap Kelas
Menampilkan Data Mahasiswa Satu Kelas (NRP, NAMA) untuk Program D3,
Jurusan Elektronika, Kelas 2B
Query 4
Query 5
Query 6
Query 7

PERTEMUAN 12

SQL - Standard Database Relasi
SQL Structured Query Language
SEQUEL Structured English QUEry Language
Perintah untuk operasi Database dalam bentuk
Berupa satu perintah tunggal untuk satu operasi yang ditulis dalam satu baris
(biasanya) perintah
Pertama kali dibuat oleh IBM, dan digunakan dalam DB2
Pertama kali distandardisasi oleh ANSI tahun 1986 (ANSI SQL 1986)
Diperbaiki dalam standard SQL 92 kemudian SQL99
SQL dalam DBMS tertentu tidak dapat murni mengikuti standard SQL karena
Tergantung DBMS
Tergantung Kemampuan
Tergantung Riwayat/Sejarah
SQL dapat dibagi dalam
Data Retrieval SELECT
DDL CREATE, DROP, ALTER, TRUNCATE
DML INSERT, DELETE, UPDATE
DCL GRANT, REVOKE
Transaction Control COMMIT, ROLLBACK, SAVEPOINT
SELECT
Proyeksi (Single-Row Function)
Seleksi (Single-Row Function)
- Perbandingan =, >, <, <>, >=, <=
- Boolean AND, OR
- Fungsi Single Row Tergantung DBMS
- Ekspresi Matematik *, +, - , /
- Range BETWEEN AND
- List IN(,,,)
- Null IS NULL, IS NOT NULL
Join
- Kartesian
- Inner (Equi)
- Outer (Left Outer, Right Outer, Full Outer)
GROUP
- Format : SELECT List_Proyeksi_SingleRow, List_Proyeksi_MultiRow
FROM Tabel/Join WHERE List_Seleksi_SingleRow GROUP BY
List_Proyeksi_SingleRow HAVING List_Seleksi_MultiRow
- List_SingleRow pada bagian proyeksi boleh dibuang
- Multi-Rows Function
- HAVING
Operasi SET
- UNION
- UNION ALL
- INTERSECT
- DIFFERENCE
Sub Query
VIEW

PERTEMUAN 13

DDL
DML
DCL
Transaction Control
ER dan Pemetaan dari EER ke Relasi, dan Bahasa Relasi Lainnya
Contoh dari System Manajemen Database Relasi (DBMS): Oracle dan Microsoft Access
Konsep dari Database Berorientasi Obyek
Standard Database Obyek, Bahasa dan Perancangan
Relasi Obyek dan Sistem Database Relasi yang Lebih Maju

Algoritma Perancangan Database Relasi dan Ketidak-tergantungan
Perancangan dan Tuning Database Praktis
Arsitektur Sistem Database dan Katalog Sistem
Pemrosesan Query dan Optimasi
Konsep Pengolahan Transaksi
Teknik Pengendalian Konkuren (Pengerjaan Parallel)
Teknik Recovery Database
Pengamanan dan Autorisasi Database
Model Database yang Lebih Maju untuk Aplikasi Lanjutan
Database Terdistribusi dan Arsitektur Client-Server
Database Deduksi
Data Warehousing dan Data Mining
Teknologi Database Emerging dan Aplikasi

PERTEMUAN XVI

Organisasi Penyimpanan Record dan File Primer

Struktur Indeks untuk File
Penyimpanan Tidak memerlukan waktu ekstra untuk menyimpan, karena informasi
mengenai tuple sudah didapatkan secara pasti
Tuple Baru Selalu setelah tuple terakhir (atau pada DBMS tertentu bisa tuple yang
tidak digunakan)
Ubah Tuple Tuple berasal dari proses pencarian
Hapus Tuple Tuple berasal dari proses pencarian
Pembacaan Muncul masalah kecepatan, yaitu diperlukan pencarian untuk
mendapatkan beberapa data dari sejumlah data
Baca Tuple Hanya untuk baca data dari suatu tuple
Ubah Tuple Untuk proses pengubahan data pada suatu tuple
Hapus Tuple Untuk proses menghapus data pada suatu tuple
Cara mempercepat proses pencarian
Perangkat Keras
Partisi Disk secara fisikal (bukan logikal) menggunakan beberapa disk, dengan
setiap disk untuk data tertentu
Penyimpanan secara cluster entiti-entiti yang berhubungan disimpan dalam
disk secara berdampingan
Perangkat Lunak
Index
- Maksud Menyalin atribut-atribut tertentu dalam suatu entiti terpisah
sekaligus mengurutkan atribut tersebut, serta menyimpan posisi tuple dari
entiti aslinya
- Tujuan Mempercepat proses pencarian data berdasarkan kata kunci dari
suatu atribut yang di-index-kan
- Mekanisme
+ Mencari data dari entiti index untuk mendapatkan posisi tuple pada entiti
aslinya
+ Mendapatkan data dari entiti aslinya berdasarkan posisi tuple yang telah
ditemukan pada entiti index
- Macam
+ ISAM
+ B-Tree, B
+
-Tree
+ Hash
+ Bitmap
+ Tabel terorganisasi dalam bentuk Indeks hanya satu index
- Batasan/Masalah
+ Jumlah tuple yang dibaca/dicari kurang dari 10%
+ Kardinalitas/jumlah data yang berbeda (distinct) lebih dari 10
+ Hanya menggunakan index jika diperlukan
Masalah kapasitas penyimpanan
Index akan selalu di-update setiap terjadi penyimpanan data
+ Hindarkan penggunaan index pada aplikasi yang melakukan transaksi
dalam jumlah yang besar dalam interval waktu tertentu dan memiliki
jumlah tuple yang besar


Silabus Database

1. Pengantar Kuliah Database
2. Sistem Database
a. Konsep Dasar
i. Database dan Pengguna
ii. Konsep dan Arsitektur System Database
iii. Pemodelan Database
3. Perancangan Database
a. Keterkaitan dengan matakuliah lain : RPL, Pemrograman, Arsitektur Komputer,
Jaringan
b. Praktis : User User Requirenment Sistem Analis (Doc Flow Diagram, DFD,
ERD) DBA (ERD) dan Supervisor (DFD) Programmer
c. Konsep : Mini word (User Requirenment) Rancangan Konsepsual Rancangan
Fisikal (DBMS)
d. Contoh Perancangan dari mini word sampai mendapatkan skema
4. Pemodelan pada Skema Secara Konsep
a. Pemodelan Data menggunakan Model Entity-Relational (ER)
i. Entiti (& Weak Entity)
ii. Atribut (Tunggal, Jamak, Kompleks, Key, Turunan, )
iii. Relasi (1:1, 1:N, N:M, Partisipan, Bersyarat, )
b. Model Data Relasi, Pembatasan Relasi dan Aljabar Relasi
c. Pemodelan Data menggunakan DFD
d. Hubungan Relasi Entitas yang lebih maju dan Pemodelan Obyek
5. Latihan - Pemodelan pada Skema Secara Konsep
6. Latihan - Quiz
7. Mapping dari ERD ke Skema Database
a. Entiti dengan Atribut
b. Relasi antar Entiti
c. Relasi yang memiliki Atribut
8. Ketergantungan Fungsional dan Normalisasi untuk Database Relasi
a. Ketergantungan Fungsional
b. Bentuk Normal Pertama (1NF)
c. Bentuk Normal Kedua (2NF)
d. Bentuk Normal Ketiga (3NF)
9. Latihan Perancangan sampai tahap Normalisasi
10. UTS
11. Struktur Indeks untuk File
12. Aljabar Relasi
13. SQL
a. Standard Database Relasi, Dasar-dasar
b. DDL
i. Constraint (primary, foreign, unique, not null, check)
c. DML
14. SQL
a. SELECT
i. Proyeksi
ii. Seleksi
iii. Join
15. SQL Lanjutan
a. Group, Having
b. Sub Query
c. In Line View
16. SQL - Latihan
17. DBMS ORACLE - SQL Lanjutan
a. VIEW
b. Trigger
18. PL/SQL
a. Dasar-dasar
b. Stored Procedure
i. Prosedur
ii. Fungsi
19. Database Aplikasi
a. Komponen Database
b. Arsitektur Database
c. Masalah Koneksi Aplikasi dengan Database
d. Database Web
i. Konsep tier
ii. Macam-macam pemrograman berbasis Web
20. Optimasi Database
a. Optimasi pada Server Database
b. Optimasi pada perintah SQL

Anda mungkin juga menyukai