normalisasi database9-10

56
Oleh : Asri, S.Kom 1 NORMALISASI DATA

Upload: iqbal-ahmad-dahlan

Post on 25-Jun-2015

135 views

Category:

Documents


11 download

TRANSCRIPT

Page 1: normalisasi database9-10

Oleh : Asri, S.Kom 1

NORMALISASI DATA

Page 2: normalisasi database9-10

Oleh : Asri, S.Kom 2

• Perancangan basis data diperlukan, agar kita bisa memiliki basis data yang kompak dan efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam pemanipulasian (tambah, ubah, hapus) data.

• Dalam merancang basis data, kita dapat melakukannya dengan :– Menerapkan normalisasi pada struktur table yang

telah diketahui.– Menerapkan model ER (Entity Relationship)

NORMALISASI DATABASE

Page 3: normalisasi database9-10

Oleh : Asri, S.Kom 3

• Proses Normalisasi, merupakan proses pengelompokan data elemen menjadi table-table yang menunjukkan entity dan relasinya. Pada proses normalisasi selalu diuji pada beberapa kondisi,apakah ada kesulitan pada saat menambah / insert, menghapus / delete, mengubah / update, danmembaca / retrieve pada suatu Database.

NORMALISASI DATABASE

Page 4: normalisasi database9-10

Oleh : Asri, S.Kom 4

• Bila ada kesulitan pada pengujian tersebut, maka relasi tersebut dipecahkan menjadi beberapa table lagi, sehingga diperoleh database yang optimal.

NORMALISASI DATABASE

Page 5: normalisasi database9-10

Oleh : Asri, S.Kom 5

• Normalisasi lebih difokuskan pada tinjauan komprehensif terhadap setiap kelompok data (table) secara individual. Lebih jauh tinjauan tersebut dititikberatkan pada data di masing – masing kolom pembentuk tabel. Kita menggunakan istilah baru, yaitu atribut yang sebenarnya identik dengan pemakaian istilah kolom data atau field

Atribut Table

Page 6: normalisasi database9-10

Oleh : Asri, S.Kom 6

Aturan Penulisan Nama File dan Field (PENTING SEKALI)

• Harus berisi Huruf dan angka• Tidak boleh mengandung spasi• Tidak boleh mengandung tanda baca

(, . ! ? Dll)• Tidak boleh menggunakan tanda

matematis (*, -, +, =, / dll)• Tidak boleh menggunakan karakter

khusus (#, $, ^, &, dll)

Page 7: normalisasi database9-10

Oleh : Asri, S.Kom 7

Panjang Field (Atribut)• Panjang dari field (atribut) harus diisi sesuai dengan

kebutuhan, jangan selalu mengisi dengan default.

Page 8: normalisasi database9-10

Oleh : Asri, S.Kom 8

• Table Dosen, memiliki 9 buah field / atribut, yaitu :– Nid– nama_d– tempat_lhr– tgl_lahir– Jkelamin– Alamat– Kota– Kodepos– gajipokok

CONTOH

Page 9: normalisasi database9-10

Oleh : Asri, S.Kom 9

• Table Matakuliah, memiliki 4 buah atribut, yaitu : – Kdmk– nama_mk– Sks– semester

CONTOH

Page 10: normalisasi database9-10

Oleh : Asri, S.Kom 10

• Table Jurusan, memiliki 4 buah atribut, yaitu : – kode_jur– nama_jur– Jenjang– nama_kajur

CONTOH

Page 11: normalisasi database9-10

Oleh : Asri, S.Kom 11

• Table Mengajar, memiliki 9 buah atribut, yaitu : – Nid– thn_akademik– Smt– Hari– jam_ke– Kdmk– Waktu– Kelas– kode_jur

CONTOH

Page 12: normalisasi database9-10

Oleh : Asri, S.Kom 12

• Dari 4 table di atas, masing-masing table memiliki field / atribut sebagai key, dan field / atribut lainnya sebagai atribut deskriptif. Ada pula atribut yang tergolong atribut sederhana atau komposit dan lainnya.

CONTOH

Page 13: normalisasi database9-10

Oleh : Asri, S.Kom 13

Key dan Atribut Deskriptif

• Key, adalah satu atau gabungan beberapa atribut yang dapat membedakan semua baris data (row) dalam tabel secara unik. Artinya adalah apabila suatu field / atribut dijadikan key, maka tidak boleh ada dua atau lebih baris data dengan nilai yang sama untuk field / atribut tersebut.

Page 14: normalisasi database9-10

Oleh : Asri, S.Kom 14

Key dan Atribut Deskriptif

• Sehubungan dengan pernyataan tersebut, maka kita dapat membedakan 3 (tiga) macam key

• yang dapat diterapkan pada suatu tabel :• 1. Candidate-Key.• 2. Key Primer (Primary-Key).• 3. Kunci tamu (Foreign Key)

Page 15: normalisasi database9-10

Oleh : Asri, S.Kom 15

Candidate-Key

• Candidate_key adalah merupakan kumpulan field / atribut minimal yang dapat membedakan setiap baris data dalam sebuah table secara unik.Sebuah Candidate-key tidak boleh berisi atribut atau kumpulan atribut yang telah menjadi superkey yang lain. Jadi sebuah Candidate-key pasti superkey, tapi belum tentu sebaliknya.

Page 16: normalisasi database9-10

Oleh : Asri, S.Kom 16

Candidate-Key

• Pada table Dosen tersebut diatas, yang dapat menjadi Candidate-key adalah :– (nid).– (nama_d), jika kita bisa menjamin tidak ada

nilai yang sama untuk atribut ini.

Page 17: normalisasi database9-10

Oleh : Asri, S.Kom 17

Candidate-Key

• Pada sebuah table dimungkinkan ada lebih dari satu Candidate-key, seperti contoh diatas.

• Salah satu dari Candidate–key ini (jika memang lebih dari satu) dapat dijadikan sebagai Key Primer (Primary key).

Page 18: normalisasi database9-10

Oleh : Asri, S.Kom 18

Primary-Key

• Primary_key adalah candidate-key yang dipilih untuk mengidentifikasi tupel secara unik pada suatu relasi. Kunci utama dapat terbentuk dari satu atribut atau lebih.

Page 19: normalisasi database9-10

Oleh : Asri, S.Kom 19

Primary-Key

• Pemilihan Key Primer dari sejumlah Candidate-key pada suatu table didasari pada ketiga hal berikut ini:– Key tersebut lebih sering (natural) untuk

dijadikan acuan.– Key tersebut lebih ringkas.– Jaminan keunikan Key tersebut lebih baik.

Page 20: normalisasi database9-10

Oleh : Asri, S.Kom 20

Primary-Key

• Dengan pertimbangan tersebut, kedua Candidate-key pada table dosen, yaitu nid dan nama_d, yang lebih cocok sebagai Key Primer adalah (nid). Hal ini dikarenakan bahwa jaminan keunikan daripada nid (nomor induk dosen) akan terjamin karena karena setiap nid pada suatu perguruan tinggi pastinya tidak akan sama nilainya, sedangkan kenapa tidak memilih nama_d, karena nama_d kemungkinan ada yang sama nilainya.

Page 21: normalisasi database9-10

Oleh : Asri, S.Kom 21

Foreign-Key

• Kunci tamu adalah satu atribut (satu set atribut) yang melengkapi satu relationship (hubungan) yang menunjukkan ke induknya. Kunci tamu ditempatkan pada relasi anak dan sama dengan kunci primer induk direlasikan.

Page 22: normalisasi database9-10

Oleh : Asri, S.Kom 22Gambar 4.1. Relasi one to many

Hubungan antara relasi induk dengan anak adalah satu lawan banyak (one to many relationship).

Page 23: normalisasi database9-10

Oleh : Asri, S.Kom 23

KUNCI TAMU

• Kunci tamu dari table / relasi mengajar adalah : nid, kdmk dan kode_jur karena dalam table ini membutuhkan data – data yang ada dalam table dosen, matakuliah dan jurusan

• Kunci primer untuk table / relasi mengajar adalah id, thn_akademik, smt, hari, jam_ke, karena unik dan mewakili entity.

Page 24: normalisasi database9-10

Oleh : Asri, S.Kom 24

KUNCI TAMU

• Dalam hal hubungan 2 buah relasi yang mempunyai relation banyak ke banyak (many to many), maka terdapat 2 buah kunci tamu pada relasi konektornya.

Page 25: normalisasi database9-10

Oleh : Asri, S.Kom 25

KUNCI TAMU

• Contoh:

• Gambar 4.2. Relasi many to many

Page 26: normalisasi database9-10

Oleh : Asri, S.Kom 26

KUNCI TAMU

• Hubungan relasi proyek dengan pegawai adalah many to many, dengan pengertian bahwa satu pegawai mengerjakan lebih dari 1 proyek dan 1 proyek dikerjakan oleh beberapa pegawai.

• Untuk menunjukkan hubungan tersebut, maka dipakai relasi konektor yang berisi kunci tamu dari kedua relasi (proyek dan pegawai).

Page 27: normalisasi database9-10

Oleh : Asri, S.Kom 27

KUNCI TAMU

• Pada relasi proyek_pegawai tersebut atribut nik dan no_proyek merupakan kunci tamu (FK) dan keduanya juga menjadi primay key, dan keduanya merupakan kunci primer (primary key) pada relasi induknya.

Page 28: normalisasi database9-10

Oleh : Asri, S.Kom 28

BENTUK NORMAL DATABASE

Bentuk tidak Normal (UNF)

Btk Normal Pertama (1NF)

Btk Normal Kedua (2NF)

Btk Normal Ketiga (3NF)

Btk Normal Boyce-Codd (BCNF)

Btk Normal Keempat (4NF)

Btk Normal Kelima (5NF)

Hilangkan atribut bernilai ganda

Hilangkan dependensi parsial

Mengatasi dependensi gabungan

Hilangkan >1 dependensi bernilai ganda

Hilangkan dependensi transitif

Hilangkan ketergantungan kepada yg bukan

kunci kandidat

Page 29: normalisasi database9-10

Oleh : Asri, S.Kom 29

ANOMALI

• Anomali adalah masalah yang timbul ketika terjadi pemutakhiran data dalam relasi, diantaranya :– Anomali penyisipan– Anomali perubahan– Anomali penghapusan

Page 30: normalisasi database9-10

Oleh : Asri, S.Kom 30

ANOMALIKode_barangNama_brg Hrg_jual Kode_pemas

okNm_Pemasok Kota

T-001 TV ABC 14" 600000P22 PT Citra Jaya Bogor

T-002 TV ABC 21" 950000P22 PT Citra Jaya Bogor

T-003 TV ABC 14" 450000P11 PT Amerta Bandung

T-004 TV Rhino 29" 1750000P33 PT Kartika Yogya

T-005 TV Rhino 14" 475000P44 PT Nindya Tangerang

Page 31: normalisasi database9-10

Oleh : Asri, S.Kom 31

ANOMALI PENYISIPAN

• Adalah masalah yang timbul akibat terjadinya penyisipan data.

• Contoh pada relasi diatas, jika ada pemasok baru yang akan memasok barang, data pemasok tidak bisa dimasukkan karena yang menjadi primery key adalah kode barang, sampai si pemasok memasukkan barang ke perusahaan diatas.

Page 32: normalisasi database9-10

Oleh : Asri, S.Kom 32

• Masalah kedua, misalnya pemasok P33 akan memasukkan barang lain berupa TV Rhino 14”, maka data P33 harus diinput lagi, berikut, jika data kotanya bukan Yogya, tetapi Yogyakarta, maka terjadi ketidak konsistenan data, karena kedua nama tersebut menunjukkan satu kota.

ANOMALI PENYISIPAN

Page 33: normalisasi database9-10

Oleh : Asri, S.Kom 33

Anomali Perubahan

• Adalah masalah yang timbul ketika data dalam relasi dirubah.

• Contoh, jika pemasok P22 yang semula berlokasi di Bogor dan sekarang pindah ke Bekasi, jika datanya lebih dari 1 buah maka harus dilakukan perubahan terhadap seluruh data yang ada, jika hanya dirubah 1 data saja, maka datanya menjadi tidak konsisten

Page 34: normalisasi database9-10

Oleh : Asri, S.Kom 34

Anomali Penghapusan

• Adalah masalah yang timbul akibat suatu baris dalam relasi dihapus.

• Misalnya adalah jika kode barang T004 akan dihapus, data tersebut hanya dipasok oleh pemasok P33, akibatnya data pemasok P33 menjadi hilang.

Page 35: normalisasi database9-10

Oleh : Asri, S.Kom 35

Dependensi

• Dependensi adalah kekangan yang terjadi antara atribut-atribut dalam suatu tabel data, terdiri dari :– Dependensi fungsional (disebut Dependensi)– Dependensi Sepenuhnya– Dependensi Parsial– Dependensi Total– Dependensi Transitif

Page 36: normalisasi database9-10

Oleh : Asri, S.Kom 36

• Adalah kekangan antara dua buah atribut atau antara dua buah himpunan atribut, misalnya dalam relasi R dengan atribut X dan Y biasanya dinotasikan

X � YDibaca dengan

X menentukan Y , atauY tergantung secara fungsional pada XX disebut DeterminanY disebut dependen

Dependensi Fungsional

Page 37: normalisasi database9-10

Oleh : Asri, S.Kom 37

• Contoh:Kode_barang � harga_jual

Bisa diuji dengan satu kode barang hanya memiliki 1 harga jual, sekarang coba kita balik apakah 1 harga jual memiliki hanya 1 kode barang, tentu saja tidak, jadi harga jual tidak menentukan kode barang, jadi dependensinya dirubah menjadi

{X, Y} � Z

Dimana Z mempunyai dependensi terhadap pasangan X dan Y (Z=harga jual, X=kode barang, Y=Nama Barang)

Dependensi Fungsional

Page 38: normalisasi database9-10

Oleh : Asri, S.Kom 38

Database ContohDosen_Pendidikan

No_Dosen Nama_Dosen Je_Kel Pendidikan Lulus_tahun

D41 Fahmi Pria S1 1987

D41 Fahmi Pria S2 1990

D42 Sita Dewi Wanita S1 1988

D42 Sita Dewi Wanita S2 1990

D42 Sita Dewi Wanita S3 1999

D43 Rio Febian Pria S1 1994

Page 39: normalisasi database9-10

Oleh : Asri, S.Kom 39

• Suatu atribut Y dikatakan memiliki dependensi sepenuhnya terhadap X apabila memenuhi dua kondisi berikut :– Y mempunyai dependensi fungsional

terhadap X– Y tidak memiliki dependensi terhadap bagian

dari X

Dependensi Sepenuhnya

Page 40: normalisasi database9-10

Oleh : Asri, S.Kom 40

• Contoh :{No_Dosen, Pendidikan} � Tahun_lulus

Pada dependensi fungsional, Tahun_Lulus bergantung pada gabungan No_Dosen dan pendidikan, perhatikan bahwa no_dosen D41, memiliki 2 tahun lulus, dan pendidikan S1 memiliki 3 tahun lulus, artinya tahun lulus bergantung pada gabungan no_dosen dan pendidikan, jadi dikatakan bahwa Tahun_lulus memiliki dependensi sepenuhnya terhadap {No_dosen , pendidikan}

Dependensi Sepenuhnya

Page 41: normalisasi database9-10

Oleh : Asri, S.Kom 41

Dependensi Parsial

• Suatu atribut Y dikatakan memiliki dependensi parsial terhadap X apabila memenuhi dua kondisi, yaitu – Y adalah atribut non-kunci primer dan X

adalah kunci primer– Y memiliki dependensi terhadap bagian dari X

(tetapi tidak terhadap keseluruhan dari X)

Page 42: normalisasi database9-10

Oleh : Asri, S.Kom 42

• Contoh : relasi Dosen_Pendidikan

Atribut Jen_Kel memiliki dependensi terhadap No_Dosen (bagian dari kunci primer yaitu {No_Dosen, pendidikan}

Dependensi Parsial

Page 43: normalisasi database9-10

Oleh : Asri, S.Kom 43

Dependensi Total

• Atribut Y dikatakan memiliki dependensi total terhadap X jika memenuhi dua kondisi berikut :– Y memiliki dependensi fungsional terhadap X– X memiliki dependensi fungsional terhadap Y

Dependensi seperti ini dinotasikan sebagai berikut :

X � Y

Page 44: normalisasi database9-10

Oleh : Asri, S.Kom 44

• Contoh :

- kode_pemasok � nama_pemasok

- nama_pemasok � kode_pemasok

Dependensi Total

Page 45: normalisasi database9-10

Oleh : Asri, S.Kom 45

Dependensi Transitif

• Suatu atribut Z dikatakan memiliki dependensi transitif terhadap X apabila memenuhi dua kondisi berikut :– Z memiliki dependensi fungsional terhadap Y– Y memiliki dependensi fungsional terhadap X

Dinotasikan sebagai berikut :X � Y � Z

Page 46: normalisasi database9-10

Oleh : Asri, S.Kom 46

• Contoh :

kode_barang � nama_pemasok

Dimana sesungguhnya :

kode_barang � kode_pemasok

kode_pemasok � nama_pemasok

Dependensi Transitif

Page 47: normalisasi database9-10

Oleh : Asri, S.Kom 47

Bentuk Tidak Normal

• Berupa data yang diterima, tanpa membaginya kedalam tabel-tabel yang ditentukan, contoh :Seorang pegawai memiliki nomor_pegawai, nama_pegawai, nomor_klien, nama_klien, alamat_klien, keperluan_klien

Satu orang pegawai mungkin akan melayani lebih dari 1 orang klien.

Page 48: normalisasi database9-10

Oleh : Asri, S.Kom 48

Bentuk Tidak Normalno_pegawa

inama_pegawai no_klien nama_klien

P27 Amir Udinsah K01 Rini Suwandi

K02 Edi Damhudi

K04 Fatwa Sari

P28 Kartika Amelia K03 Robert Irwandi

K07 Veronica Suci

P29 Barkah K05 Gabriela Febrianti

P30 Mahendra K06 Siti Amiarti

K08 Sandi Sunardi

Page 49: normalisasi database9-10

Oleh : Asri, S.Kom 49

Bentuk Normal Pertama (1NF)

• Adalah suatu keadaan yang membuat setiap perpotongan baris dan kolom dalam relasi hanya berisi satu nilai

• Untuk membentuk 1NF perlu dilakukan langkah-langkah menghilangkan atribut-atribut yang memiliki nilai ganda.

Page 50: normalisasi database9-10

Oleh : Asri, S.Kom 50

Bentuk Normal Pertama (1NF)no_pegawa

inama_pegawai no_klien nama_klien

P27 Amir Udinsah K01 Rini Suwandi

P27 Amir Udinsah K02 Edi Damhudi

P27 Amir Udinsah K04 Fatwa Sari

P28 Kartika Amelia K03 Robert Irwandi

P28 Kartika Amelia K07 Veronica Suci

P29 Barkah K05 Gabriela Febrianti

P30 Mahendra K06 Siti Amiarti

P30 Mahendra K08 Sandi Sunardi

Page 51: normalisasi database9-10

Oleh : Asri, S.Kom 51

Bentuk Normal Kedua (2NF)

• Adalah bentuk yang mensyaratkan bahwa relasi harus sudah dalam bentuk 1NF dan tidak mengandung dependensi parsial.

• Cara untuk menghilangkan dependensi parsial adalah :– Ubahlah setiap dependensi parsial menjadi sebuah

relasi, dengan kunci primernya adalah determinannya.

– Ubahlah dependensi yang terkait langsung dengan kunci primer sebagai relasi tersendiri dan kunci primernya adalah kunci primer dalam relasi semula

Page 52: normalisasi database9-10

Oleh : Asri, S.Kom 52

Bentuk Normal ketiga (3NF)

• Bentuk 3NF adalah dengan syarat, sudah berada dalam bentuk normal kedua dan tidak mengandung dependensi transitif

• Dependensi transitif didekomposisi relasinya dengan cara sebagai berikut :– Bentuk relasi yang mewakili dependensi

fungsional yang tidak melibatkan kunci primer dalam relasi semula, determinannya menjadi kunci primer relasi yang dibentuk.

Page 53: normalisasi database9-10

Oleh : Asri, S.Kom 53

– Bentuk relasi yang berisi kunci primer relasi semula, kemudian pindahkan semua atribut bukan kunci primer yang bergantung pada kunci primer tetapi tidak bergantung pada determinan lain ke relasi tersebut. Jadikan atribut yang menjadi kunci primer relasi semula sebagai kunci primer relasi baru. Adapun atribut yang berasal dari determinan yang menjadi perantara dalam dependensi transitif akan bertindak sebagai kunci asing.

Bentuk Normal ketiga (3NF) Con’t

Page 54: normalisasi database9-10

Oleh : Asri, S.Kom 54

Bentuk Normal Boyce-Codd (BCNF)

• Bentuk BCNF ini melibatkan kunci kandidat, dikatakan tabel sudah dalam bentuk normal Boyce-Codd jika– Tabel tersebut sudah dalam bentuk 3NF– Tidak ada dependensi fungsional yang

determinannya merupakan bukan kunci kandidat

Page 55: normalisasi database9-10

Oleh : Asri, S.Kom 55

• Untuk membentuk BCNF, maka bentuk 3NF yang memiliki dependensi yang melibatkan determinan bukan kunci kandidat harus dinyatakan dalam relasi tersendiri dan atribut yang berkedudukan sebagai dependen dikeluarkan dari relasi semula.

Bentuk Normal Boyce-Codd (BCNF) Con’t

Page 56: normalisasi database9-10

Oleh : Asri, S.Kom 56

Bahan Bacaan :

• Kadir, Abdul; Dasar Perancangan & Implementasi Database Relasional, Penerbit Andi Yogyakarta.

• Kristanto, Harianto, Ir, Konsep & Perancangan Database, Penerbit Andi Yogyakarta