Selasa, 28 Agustus 2018

NORMALISASI

NORMALISASI
Normalisasi merupakan teknik analisis data yang mengorganisasikan atribut-atribut data dengan cara mengelompokkan sehingga terbentuk entitas yang non-redundant, stabil, dan fleksible
Normalisasi dilakukan sebagai uji coba pada suatu relasi secara berkelanjutan untuk menentukan apakah relasi itu sudah baik, yaitu dapat dilakukan proses insert,update,delete, dan modifikasi pada satu atau beberapa atribut tanpa mempengaruhi integritas data dalam relasi tersebut.
*Pada proses normalisasi terhadap tabel pada database dapat dilakukan dengan tiga tahap normalisasi antara lain :
1. BENTUK TIDAK NORMAL (UNNORMALIZED FORM)
Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan
mengikukti format tertentu, dapat saja data tidak lengkap atau terduplikasi. Data dikumpulkan apa adanya sesuai dengan saat menginput.
photo 1........................
Untuk mentransformasikan tabel yang belum ternomalisasi di atas menjadi tabel yang memenuhi kriteria 1NF adalah kita harus merubah seluruh atribut yang multivalue menjadi atribut single value, dengan cara menghilangkan repeating group pada tabel di atas.
Repeating Group (elemen data berulang) adalah (No_Property, Alamat_Property,Tgl_Pinjam, Tgl_Selesai, Biaya, No_Pemilik, Nama_Pemilik)
2. BENTUK NORMAL KE SATU (FIRST NORMAL FORM / 1 NF)
Pada tahap ini dilakukan penghilangan beberapa group elemen yang berulang agar menjadi satu harga tunggal yang berinteraksi di antara setiap baris pada suatu tabel, dan setiap atribut harus mempunyai nilai data yang atomic (bersifat atomic value). Atom adalah zat terkecil yang masih memiliki sifat induknya, bila terpecah lagi maka ia tidak memiliki sifat induknya.
Syarat normal ke satu (1-NF) antara lain:
1. setiap data dibentuk dalam flat file, data dibentuk dalam satu record demi satu record nilai dari field berupa “atomic value”.
2. tidak ada set atribute yang berulang atau bernilai ganda.
3. telah ditentukannya primary key untuk tabel / relasi tersebut.
4. tiapatribut hanya memiliki satu pengertian.
Langkah pertama yang dilakukan pada Tabel Pelanggan Biaya (pada Tabel 9.3) tersebut adalah menghilangkan elemen data yang berulang dengan data-data Pelanggan yang sesuai pada setiap baris. Hasil dari tabel yang telah memenuhi bentuk normal pertama dapat dilihat pada Tabel 9.4. kita dapat mengidentifikasi primary key untuk relasi Pelanggan_Biaya yang masih memiliki composite key (No_Pelanggan, No_Property). Pada kasus ini kita akan memperoleh primary key yang bersifat composite key. Relasi Pelanggan_Biaya dapat didefinisikan sebagai berikut. Pelanggan_Biaya =(No_Pelanggan, No_Property, Nama, Alamat_Property, Tgl_Pinjam, Tgl_Selesai, Biaya,No_Pemilik, Nama_Pemilik)
photo 2............
3. BENTUK NORMAL KE DUA (SECOND NORMAL FORM / 2 NF)
Bentuk normal kedua didasari atas konsep full functional dependency (ketergantungan fungsional sepenuhnya) yang dapat didefinisikan sebagai berikut. Jika A adalah atribut-atribut dari suatu relasi, B dikatakan full functional dependency (memiliki ketergantungan fungsional terhadap A, tetapi tidak secara tepat memiliki ketergantungan fungsional dari subset (himpunan bagian) dari A.
Syarat normal kedua (2-NF) sebagai berikut.
1. Bentuk data telah memenuhi kriteria bentuk normal kesatu.
2. Atribute bukan kunci (non-key) haruslah memiliki ketergantungan fungsional sepenuhnya (fully functional dependency) pada kunci utama / primary key.
Tabel  Tabel Pelanggan Biaya dalam bentuk normal kedua (2-NF)
photo 3..........
photo4...........
4. BENTUK NORMAL KE TIGA (THIRD NORMAL FORM / 3 NF)
Walaupun relasi 2-NF memiliki redudansi yang lebih sedikit dari pada relasi 1-NF, namun relasi tersebut masih mungkin mengalami kendala bila terjadi anomaly peremajaan (update) terhadap relasi tersebut. Misalkan kita akan melakukan update terhadap nama dari seorang Pemilik (pemilik), seperti Durki (No_Pemilik: CO93), kita harus melakukan update terhadap dua baris dalam relasi Property_Pemilik (lihat Tabel 9.5, (c) relasi Property_Pemilik). Jika kita hanya mengupdate satu baris saja, sementara baris yang lainnya tidak, maka data didalam database tersebut akan inkonsisten / tidak teratur. Anomaly update ini disebabkan oleh suatu ketergantungan transitif (transitive dependency). Kita harus menghilangkan ketergantungan tersebut dengan melakukan normalisasi ketiga (3-NF).
Syarat normal ketiga (Third Normal Form / 3 NF) sebagai berikut.
1. Bentuk data telah memenuhi kriteria bentuk normal kedua.
2. Atribute bukan kunci (non-key) harus tidak memiliki ketergantungan transitif, dengan kata lain suatu atribut bukan kunci (non_key) tidak boleh memiliki ketergantungan fungsional (functional dependency) terhadap atribut bukan kunci lainnya, seluruh atribut bukan kunci pada suatu relasi hanya memiliki ketergantungan fungsional terhadap priamry key di relasi itu saja.
Seluruh atribut non-primary key pada relasi Pelanggan dan Biaya di atas terlihat memiliki ketergantungan fungsional (functional dependency) terhadap primary key dari masing-masing tabel / relasi. Relasi / tabel Pelanggan dan Biaya di atas tidak memiliki ketergantungan transitif (transitive dependency), sehingga tabel tersebut telah memenuhi
kriteria normal ketiga (3-NF). Seluruh atribut non-primary key pada relasi Property_Pemilik di atas terlihat memiliki ketergantungan fungsional (functional dependency) terhadap primary key, kecuali Nama_Pemilik yang masih memiliki ketergantungan fungsional (functional dependency) terhadap No_Pemilik. Inilah contoh ketergantungan dari transitif (transitive dependency), yang terjadi ketika atribut non-primary key (Nama_Pemilik) bergantung secara fungsi terhadap satu atau lebih atribut non-primary key lainnya (No_Pemilik). Kita harus menghilangkan ketergantungan transitif (transitive dependency) tersebut dengan menjadikan relasi Property_Pemilik menjadi 2 relasi / tabel dengan format / bentuk sebagai berikut.
· Relasi / Tabel Property_Untuk_Pemilik yang terdiri dari atribut-atribut:
No_property  Alamat_Property, Biaya, No_Pemilik
{No_property sebagai primary key}
· Dan relasi Pemilik yang terdiri dari atribut-atribut:
No_Pemilik  Nama_Pemilik
{No_Pemilik sebagai primary key}
Hasil akhir normalisasi tabel Pelanggan_Biaya sampai ke bentuk normal ketiga adalah
sebagai berikut X � f n `& ��% .0pt; font-family:”Calibri”,”sans-serif”; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:”Times New Roman”; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;}
4. BENTUK NORMAL KE TIGA (THIRD NORMAL FORM / 3 NF)
Walaupun relasi 2-NF memiliki redudansi yang lebih sedikit dari pada relasi 1-NF,
namun relasi tersebut masih mungkin mengalami kendala bila terjadi anomaly
peremajaan (update) terhadap relasi tersebut.
Misalkan kita akan melakukan update terhadap nama dari seorang Pemilik (pemilik), seperti Durki (No_Pemilik: CO93), kita harus melakukan update terhadap dua baris dalam relasi Property_Pemilik (lihat Tabel 9.5, (c) relasi Property_Pemilik). Jika kita hanya mengupdate satu baris saja, sementara baris yang lainnya tidak, maka data didalam database tersebut akan inkonsisten / tidak teratur. Anomaly update ini disebabkan oleh suatu ketergantungan transitif (transitive dependency). Kita harus menghilangkan ketergantungan tersebut dengan melakukan normalisasi ketiga (3-NF).
Syarat normal ketiga (Third Normal Form / 3 NF) sebagai berikut.
1. Bentuk data telah memenuhi kriteria bentuk normal kedua.
2. Atribute bukan kunci (non-key) harus tidak memiliki ketergantungan transitif, dengan kata lain suatu atribut bukan kunci (non_key) tidak boleh memiliki ketergantungan fungsional (functional dependency) terhadap atribut bukan kunci lainnya, seluruh atribut bukan kunci pada suatu relasi hanya memiliki ketergantungan fungsional terhadap priamry key di relasi itu saja. Seluruh atribut non-primary key pada relasi Pelanggan dan Biaya di atas terlihat memiliki ketergantungan fungsional (functional dependency) terhadap primary key dari masing-masing tabel / relasi. Relasi / tabel Pelanggan dan Biaya di atas tidak memiliki ketergantungan transitif (transitive dependency), sehingga tabel tersebut telah memenuhi kriteria normal ketiga (3-NF).
Seluruh atribut non-primary key pada relasi Property_Pemilik di atas terlihat memiliki ketergantungan fungsional (functional dependency) terhadap primary key, kecuali Nama_Pemilik yang masih memiliki ketergantungan fungsional (functional dependency) terhadap No_Pemilik. Inilah contoh ketergantungan dari transitif (transitive dependency), yang terjadi ketika atribut non-primary key (Nama_Pemilik) bergantung secara fungsi terhadap satu atau lebih atribut non-primary key lainnya (No_Pemilik). Kita harus menghilangkan ketergantungan transitif (transitive dependency) tersebut dengan menjadikan relasi Property_Pemilik menjadi 2 relasi / tabel dengan format / bentuk sebagai berikut.
· Relasi / Tabel Property_Untuk_Pemilik yang terdiri dari atribut-atribut:
No_property  Alamat_Property, Biaya, No_Pemilik
{No_property sebagai primary key}
· Dan relasi Pemilik yang terdiri dari atribut-atribut:
No_Pemilik  Nama_Pemilik
{No_Pemilik sebagai primary key}
Hasil akhir normalisasi tabel Pelanggan_Biaya sampai ke bentuk normal ketiga adalah
sebagai berikut:
photo5.............
Seluruh atribut bukan kunci pada suatu relasi hanya memiliki ketergantungan fungsional terhadap primary key di relasi itu saja.

curd



1. Pengenalan PHP dan MySQL
PHP adalah singkatan dari PHP Hypertext Preprocessor yang merupakan bahasa pemrogramman berbasis web yang memiliki kemampuan untuk memproses data dinamis. PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. PHP adalah bahasa pemrograman server side. Sehingga dia memerlukan sebuah web server contohnya apache yang sudah ada didalam software XAMPP untuk menjalankan scriptnya.
Catatan : untuk lebih lanjutnya teman-teman bisa baca materi tentang pengenalan PHP

2. Software yang digunakan belajar PHP
Adapun software yang biasa digunakan dalam belajar ataupun pengembangan web PHP
adalah software XAMPP. Didalam software tersebut sudah terdapat beberapa komponen
software pendukung yaitu :
· Apache untuk webserver yang digunakan untuk menjalankan PHP
· MySQL untuk DMBS(Database Management System) yang digunakan untuk
menyimpan content atau isi web didalam sebuah database.
· PhpMyadmin aplikasi MySQL berbasi web yang digunakan untuk merancang
dan membuat database dan table-table nya.
· Notepad++ yang digunakan sebagai text editor.

3. Langkah untuk memulai belajar PHP
Dalam memulai belajar PHP ada tahapan yang biasa dilakukan. Walaupun tidak baku
harus seperti ini. Adapun langkah-langkahnya adalah sebagai berikut :
· Jalankan software XAMPP dan klik tombol start untuk apache dan mysql
· Buka web browser misalnya mozila dan ketik http://localhost/ untuk mengetes

4. Langkah pembuatan database di PhpMyadmin
Pada langkah ini kita akan menjelaskan tentang fungsi dan cara pemakaian aplikasi web
PhpMyadmin.
Adapun yang akan dibahas dalam PhpMyadmin (http://localhost/phpmyadmin) adalah :
1) Fungsi menu Browse untuk menampilkan data
2) Fungsi menu Structure untuk melihat struktur tabel
3) Fungsi menu Insert untuk memasukan data ke tabel
4) Fungsi menu Export untuk mengeluarkan query dari database atau tabel
5) Fungsi menu Import untuk memasukan query dari database atau tabel
6) Fungsi menu Empty untuk mengosongkan isi data di tabel
7) Fungsi menu Drop untuk menghapus table tertentu
8) Pembuatan Database
Setelah mengetik nama databasenya (db_cc), klik tombol create
9) Pembuatan Tabel
Setelah database terbentuk, kita akan membuat table nya dengan nama table
biodata dan banyaknya field adalah 4 yaitu (id, nama, alamat, usia). Setelah itu klik
tombol go yang berada di sebelah paling kanan.
Setelah itu masukan nama field nya dengan menyesuaikan type data dan
panjang data (length). Untuk field id ditambah dengan index=PRIMARY dan AI(Auto
Increment) setelah semua diisi, klik tombol Save

5. Langkah pembuatan modul program
Setelah database dibuat, kita akan membuat file phpnya yang berisi script PHP. Nantinya
script tersebut disimpan di folder C:\xampp\htdocs\koneksi dan disimpan dengan ekstensi
(*.php). adapun file-file yang akan kita buat adalah sebagai berikut :
1) koneksi.php = digunakan untuk koneksi PHP ke database
2) form.php = berisi form yang digunakan untuk menginput data.
3) proses.php = digunakan untuk proses menyimpan data ke database
4) tabel.php = digunakan untuk menampilkan data dalam bentuk tabel
5) delete.php = digunakan untuk menghapus data didatabase
6) update.php = digunakan untuk mengubah data yang diinginkan
7) simpan.php = digunakan untuk menyimpan kembali data hasil perubahan
Adapun syntax dari masing-masing file adalah sebagai berikut :
Koneksi.php
<?php
$host="localhost";
$user="root";
$password="";
$database="db_cc";
$koneksi=mysql_connect($host,$user,$password);
mysql_select_db($database,$koneksi);
//cek koneksi
if($koneksi){
//echo "berhasil koneksi";
}else{
echo "gagal koneksi";
}
?>

Form.php
<html>
<head><title>Form</html></head>
<body>
<form action="proses.php" method="post">
<table>
<tr>
<td>Nama</td>
<td><input type="text" name="nama" size="20"></td>
</tr>
<tr>
<td>Alamat</td>
<td><textarea cols="20" rows="5" name="alamat"></textarea></td>
</tr>
<tr>
<td>Usia</td>
<td><input type="text" name="usia" size="20"></td>
</tr>
<tr>
<td><input type="submit" name="proses" value="Proses"></td>
<td><input type="reset" value="Batal"></td>
</tr>
</table>
</form>
</body>
</html>

Proses.php
<?php
include "koneksi.php";
$nama=$_POST['nama'];
$alamat=$_POST['alamat'];
$usia=$_POST['usia'];
$query=mysql_query("insert into biodata(nama, alamat, usia) value('$nama','$alamat','$usia')");
if($query){
echo "Berhasil input data ke database ";
?><a href="tabel.php">Lihat data di Tabel</a><?php
}else{
echo "Gagal input data";
echo mysql_error();
}
?>
Tabel.php
<?php
include "koneksi.php";
$query=mysql_query("select * from biodata");
$jumlah=mysql_num_rows($query);
echo "Jumlah data ada : ".$jumlah;
?>
<table border="1">
<tr>
<th>Nomor</th><th>Nama</th>
<th>Alamat</th><th>Usia</th>
<th>Aksi</th>
</tr>
<?php
while($row=mysql_fetch_array($query)){
?>
<tr>
<td><?php echo $c=$c+1;?></td>
<td><?php echo $row['nama'];?></td>
<td><?php echo $row['alamat'];?></td>
<td><?php echo $row['usia'];?></td>
<td>
<a href="delete.php?id=<?php echo $row['id']; ?>" onclick="return confirm('Apakah anda
yakin?')">Delete</a>
<a href="update.php?id=<?php echo $row['id']; ?>">Update</a>
</td>
<?php
}
?>
</table><br />
<a href="form.php">Input data form</a>

Delete.php
<?php
include "koneksi.php";
$id=$_GET['id'];
$query=mysql_query("delete from biodata where id='$id'");
if($query){
?><script language="javascript">document.location.href="tabel.php";</script><?php
}else{
echo "gagal hapus data";
}
?>

Update.php
<?php
include "koneksi.php";
$id=$_GET['id'];
$query=mysql_query("select * from biodata where id='$id'");
?>
<form action="simpan.php" method="post">
<table border="1">
<?php
while($row=mysql_fetch_array($query)){
?>
<input type="hidden" name="id" value="<?php echo $id;?>"/>
<tr>
<td>Nama</td><td><input type="text" name="nama" value="<?php echo $row['nama'];?>" /></td>
</tr>
<tr>
<td>Alamat</td>
<td><textarea cols="20" rows="5" name="alamat"><?php echo $row['alamat'];?></textarea></td>
</tr>
<tr><td>Usia</td><td><input type="text" name="usia" value="<?php echo $row['usia'];?>" /></td>
</tr>
<tr><td><input type="submit" value="Simpan" name="simpan" /></td>
</tr>
<?php
}
?>
</table>
</form>



Simpan.php
<?php
include "koneksi.php";
$id=$_POST['id'];
$nama=$_POST['nama'];
$alamat=$_POST['alamat'];
$usia=$_POST['usia'];
$query=mysql_query("update biodata set nama='$nama', alamat='$alamat', usia='$usia' where id='$id'");
if($query){
echo "Berhasil update data ke database ";
?><a href="tabel.php">Lihat data di Tabel</a><?php
}else{
echo "Gagal update data";
echo mysql_error();
}
?>

Jika semua script sudah selesai di ketik dan disimpan didalam folder htdocs/koneksi.
Maka untuk menjalankan programnya ketik http://localhost/koneksi/form.php