Normalisasi Basis Data (Revisi)

61
Manajemen DATA Adam Mukharil Bachtiar, M.T. Normalisasi

Transcript of Normalisasi Basis Data (Revisi)

Page 1: Normalisasi Basis Data (Revisi)

Manajemen

DATAAdamMukharil Bachtiar, M.T.

Normalisasi

Page 2: Normalisasi Basis Data (Revisi)

Pemahaman Normalisasi & Anomali

Page 3: Normalisasi Basis Data (Revisi)

Teknik mendekomposisi satu tabel menjadi beberapa buah tabel agar tidak terjadi anomali pada tabel tersebut

Page 4: Normalisasi Basis Data (Revisi)

apa itu anomali?

Page 5: Normalisasi Basis Data (Revisi)

Anomali Penyisipan (Insert)

Apa yang terjadi jika B. Jerman ditambahkan ke Kursus?

No_Siswa Kursus Biaya

10 B. Inggris 60000

10 B. Perancis 80000

10 B. Jepang 70000

15 B. Inggris 60000

20 B. Jepang 60000

No_Siswa Kursus Biaya

10 B. Inggris 60000

10 B. Perancis 80000

10 B. Jepang 70000

15 B. Inggris 60000

20 B. Jepang 60000

B.Jerman 90000

Page 6: Normalisasi Basis Data (Revisi)

Solusi Anomali Penyisipan (Insert)

No_Siswa Kursus Biaya

10 B. Inggris 60000

10 B. Perancis 80000

10 B. Jepang 70000

15 B. Inggris 60000

20 B. Jepang 60000

Kursus Biaya

B. Inggris 60000

B. Jepang 70000

B.Jerman 90000

No_Siswa ...

10 ..

15 ..

20 ..

No_Siswa Kursus

10 B. Inggris

.. ..

20 B. Jepang

Page 7: Normalisasi Basis Data (Revisi)

Anomali Peremajaan (Update)

Pemasok Kota Barang JumlahKartika Jakarta Mouse 5Citra Bandung Monitor 2Yudi Medan CPU 2Citra Bandung Printer 1

Apa yang terjadi jika Citra pindah kota ke Bogor?

Page 8: Normalisasi Basis Data (Revisi)

Solusi Anomali Peremajaan (Update)

Pemasok Kota Barang JumlahKartika Jakarta Mouse 5Citra Bandung Monitor 2Yudi Medan CPU 2Citra Bandung Printer 1

Pemasok Kota

Kartika JakartaCitra BandungYudi Medan

Pemasok Barang JumlahKartika Mouse 5Citra Monitor 2Yudi CPU 2Citra Printer 1

Page 9: Normalisasi Basis Data (Revisi)

Anomali Penghapusan (Delete)

Apa yang terjadi jika No_Siswa 10 dihapus?

No_Siswa Kursus Biaya

10 B. Inggris 60000

10 B. Perancis 80000

10 B. Jepang 70000

15 B. Inggris 60000

20 B. Jepang 60000

No_Siswa Kursus Biaya

15 B. Inggris 60000

20 B. Jepang 60000

Page 10: Normalisasi Basis Data (Revisi)

Solusi Anomali Penghapusan (Delete)

No_Siswa Kursus Biaya

10 B. Inggris 60000

10 B. Perancis 80000

10 B. Jepang 70000

15 B. Inggris 60000

20 B. Jepang 60000 Kursus Biaya

B. Inggris 60000

B. Jepang 70000

B.Jerman 90000

No_Siswa ...

15 ..

20 ..

No_Siswa Kursus

15 B. Inggris

20 B. Jepang

Page 11: Normalisasi Basis Data (Revisi)

Semua solusi dari anomaliadalah memecah tabel,itulah normalisasi

Page 12: Normalisasi Basis Data (Revisi)

Ada aturannya gapak?

Apakah memecahtabelnya boleh asal-

asalan?

Page 13: Normalisasi Basis Data (Revisi)

tentu tidak, kan ada aturan

dependensi!!!

Page 14: Normalisasi Basis Data (Revisi)

Pemahaman Dependensi

Page 15: Normalisasi Basis Data (Revisi)

mulai dari istilah di

dependensi!!!

Page 16: Normalisasi Basis Data (Revisi)

Menggambarkan relasi/hubungan, batasan, dan keterkaitan antara atribut-atribut dalam suatu relasi

Page 17: Normalisasi Basis Data (Revisi)

No_KTP à NamaDeterminan/Penentu Dependent

Atribut No_KTP menentukan atribut Nama dan atribut Nama bergantung pada atribut No_KTP

Page 18: Normalisasi Basis Data (Revisi)

Dependensi paling dasaradalah dependensifungsional

Page 19: Normalisasi Basis Data (Revisi)

Dependensi Fungsional

Page 20: Normalisasi Basis Data (Revisi)

Sebuah atribut berdependensi fungsional terhadap atributlainnya jika dan hanya jika satu nilai pada atribut

tersebut tepat dipetakan satu terhadap satu nilaidari atribut dependentnya

Page 21: Normalisasi Basis Data (Revisi)

Pembeli Kota Barang JumlahP1 Yogyakarta B1 10P1 Yogyakarta B2 5P2 Jakarta B1 4P2 Jakarta B2 7P3 Solo B3 6P3 Solo B4 6

Pembeli à Kota{Pembeli, Barang} à Kota

Dependensi Fungsional

Page 22: Normalisasi Basis Data (Revisi)

Selain dependensifungsional, ada 4 jenisdependensi lainnya, yaitu:

Page 23: Normalisasi Basis Data (Revisi)

Dependensi Total

Page 24: Normalisasi Basis Data (Revisi)

Atribut y memiliki dependensi fungsional total terhadap atribut x jika y berdependensi fungsional terhadap x

begitu juga sebaliknya (x ↔ y)

Page 25: Normalisasi Basis Data (Revisi)

Dependensi Fungsional Total

Diasumsikan tidak pernah ada nama yang sama makaNo_Siswa ↔ Nama

No_Siswa Nama Alamat

A1 Budi Bandung

A2 Andi Bogor

A3 Ani Serang

A4 Dian Madura

A5 Andri Ciamis

Page 26: Normalisasi Basis Data (Revisi)

DependensiFungsional Penuh

Page 27: Normalisasi Basis Data (Revisi)

Atribut y memiliki dependensi fungsional penuh terhadap atribut x jika y berdependensi fungsional terhadap x

dan y hanya berdependensi fungsionalterhadap subset dari x

Page 28: Normalisasi Basis Data (Revisi)

{x,y} à z

Dikatakan dependensi fungsional penuh jika z tidak hanya cukup bergantung pada x saja atau y saja

Page 29: Normalisasi Basis Data (Revisi)

DependensiFungsional Sebagian

Page 30: Normalisasi Basis Data (Revisi)

Atribut y memiliki dependensi fungsional sebagian terhadap atribut x jika Y berdependensi

fungsional terhadap X dan Y tidak berdependensi fungsional terhadap subset dari X

Page 31: Normalisasi Basis Data (Revisi)

{x,y} à zx à z

Maka z berdependensi fungsional sebagian terhadap x

Page 32: Normalisasi Basis Data (Revisi)

DependensiFungsional Transitif

Page 33: Normalisasi Basis Data (Revisi)

Atribut z memiliki dependensi fungsional transitif terhadap atribut x jika y berdependensi fungsional

terhadap x dan z berdependensi fungsional terhadap y

Page 34: Normalisasi Basis Data (Revisi)

x à yy à z

Jadi x à zMaka z berdependensi fungsional transitif terhadap x

Page 35: Normalisasi Basis Data (Revisi)

Dependensi Fungsional Transitif

Kuliah à {Kampus, Waktu}Kampus à RuangKuliah à Waktu (Kuliah à Kampus à Waktu)

Kuliah Kampus Ruang WaktuRPL 5 5406 SeninBasis Data 4 4417 SelasaKalkulus 2 2505 RabuData Mining 1 1407 Kamis

Page 36: Normalisasi Basis Data (Revisi)

Mari kita mulai

normalisasi!

Page 37: Normalisasi Basis Data (Revisi)

Proses Normalisasi

Page 38: Normalisasi Basis Data (Revisi)

Tabel PadaBasis Data

Penentuan Atribut

Bentuk Normal1 - BCNF

UnnormalizedForm

Dokumen Manual• Atribut bawaan (dari dokumen)• Atribut bentukan (dari aturan

bisnis atau asumsi)

Jenis Input

Page 39: Normalisasi Basis Data (Revisi)

Bagian pada dokumen akan menjadi atribut apabila isian ataunilainya bersifat dinamis (data bisa berubah nilai)

Contoh Atribut

Contoh Nilai

Page 40: Normalisasi Basis Data (Revisi)

Bentuk Normalisasi

BentukTidak

Normal

BentukNormal Pertama

BentukNormal Kedua

BentukNormal Ketiga

BCNFBentukNormal

Keempat

BentukNormal kelima

Jarang Digunakan kecuali jika masih ada anomali

Page 41: Normalisasi Basis Data (Revisi)

Diberikan suatu kasusbentuk unnormalized

Page 42: Normalisasi Basis Data (Revisi)

PROJ_NUM PROJ_NAME EMP_NUM EMP_NAME JOB_CLASS CHG_HOUR HOURS15 Evergreen 103 Juni E. Arbough Elect. Engineer 84.50 23.8

101 John G. News Database Engineer 105.00 19.4

105 Alice K. Johnson Database Engineer 105.00 35.7

106 William Smithfield Programmer 35.75 12.6

102 David H. Senior System Analyst 96.75 23.8

18 Amber Wave 114 Annelise Jones Application Designer 48.10 24.6

118 James J. Frommer General Support 18.36 45.3

104 Anne K. Ramoras System Analyst 96.75 32.4

112 Darlene M. Smithson DSS Analyst 45.95 44.0

22 Rolling Tide 105 Alice K. Johnson Database Desginer 105.00 64.7

104 Anne K. Ramoras System Analyst 96.75 48.4

113 Delbert K. Joenbrood Application Designer 48.10 23.6

111 Geoff B. Wabash Clerical Support 26.87 22.0

106 William Smithfield Programmer 35.75 12.8

25 Starflight 107 Maria D. Alonzo Programmer 35.75 24.6

115 Travis B. Bawangi System Analyst 96.75 45.8

101 John G. News Database Designer 105.00 56.3

114 Annelise Jones Application Designer 48.10 33.1

108 Ralph B. Washington System Analyst 96.75 23.6

118 James J. Frommer General Support 18.36 30.5

112 Darlene M. Smithson DSS Analyst 45.95 41.4

Page 43: Normalisasi Basis Data (Revisi)

Bentuk normal pertama(1st normal form)

Page 44: Normalisasi Basis Data (Revisi)

• Eliminasi nilai null pada repeating groups

• Identifikasi primary key (Suggestion)

• Identifikasi seluruh dependensi (Suggestion)

Page 45: Normalisasi Basis Data (Revisi)

PROJ_NUM PROJ_NAME EMP_NUM EMP_NAME JOB_CLASS CHG_HOUR HOURS15 Evergreen 103 Juni E. Arbough Elect. Engineer 84.50 23.8

15 Evergreen 101 John G. News Database Designer 105.00 19.4

15 Evergreen 105 Alice K. Johnson Database Engineer 105.00 35.7

15 Evergreen 106 William Smithfield Programmer 35.75 12.6

15 Evergreen 102 David H. Senior System Analyst 96.75 23.8

18 Amber Wave 114 Annelise Jones Application Designer 48.10 24.6

18 Amber Wave 118 James J. Frommer General Support 18.36 45.3

18 Amber Wave 104 Anne K. Ramoras System Analyst 96.75 32.4

18 Amber Wave 112 Darlene M. Smithson DSS Analyst 45.95 44.0

22 Rolling Tide 105 Alice K. Johnson Database Designer 105.00 64.7

22 Rolling Tide 104 Anne K. Ramoras System Analyst 96.75 48.4

22 Rolling Tide 113 Delbert K. Joenbrood Application Designer 48.10 23.6

22 Rolling Tide 111 Geoff B. Wabash Clerical Support 26.87 22.0

22 Rolling Tide 106 William Smithfield Programmer 35.75 12.8

25 Starflight 107 Maria D. Alonzo Programmer 35.75 24.6

25 Starflight 115 Travis B. Bawangi System Analyst 96.75 45.8

25 Starflight 101 John G. News Database Designer 105.00 56.3

25 Starflight 114 Annelise Jones Application Designer 48.10 33.1

25 Starflight 108 Ralph B. Washington System Analyst 96.75 23.6

25 Starflight 118 James J. Frommer General Support 18.36 30.5

25 Starflight 112 Darlene M. Smithson DSS Analyst 45.95 41.4

Page 46: Normalisasi Basis Data (Revisi)

Primary key:{PROJ_NUM,EMP_NUM} {PROJ_NUM,EMP_NUM} à PROJ_NAME, EMP_NAME, JOB_CLASS, CHG_HOUR, HOURS

Dependensi Fungsional Sebagian:PROJ_NUM à PROJ_NAMEEMP_NUM à EMP_NAME, JOB_CLASS, CHG_HOUR

Dependensi Fungsional Transitif:JOB_CLASS à CHG_HOUR

PROJ_NUM PROJ_NAME EMP_NUM EMP_NAME JOB_CLASS CHG_HOUR HOURS

Primary key

Partial DependencyPartial Dependency

TransitiveDependency

Page 47: Normalisasi Basis Data (Revisi)

Bentuk normal kedua(2nd normal form)

Page 48: Normalisasi Basis Data (Revisi)

• Pastikan tabel sudah dalam bentuk normal pertama

• Eliminasi depedensi fungsional sebagian

• Tentukan atribut yang berdepedensi terhadap atribut lain

Page 49: Normalisasi Basis Data (Revisi)

PROJ_NUM PROJ_NAME

EMP_NUM EMP_NAME JOB_CLASS CHG_HOUR

HOURS

Nama tabel: PROJECT

PROJ_NUM à PROJ_NAME

Nama tabel: EMPLOYEE

EMP_NUM à EMP_NAME, JOB_CLASS, CHG_HOURS

JOB_CLASS à CHG_HOUR

PROJ_NUM EMP_NUM

{PROJ_NUM,EMP_NUM} à HOURSNama tabel: ASSIGNMENT

Page 50: Normalisasi Basis Data (Revisi)

Nama tabel: PROJECT

Nama tabel: EMPLOYEE

Nama tabel: ASSIGNMENT

PROJ_NUM PROJ_NAME

15 Evergreen

18 Amber Wave

.. ..

EMP_NUM EMP_NAME JOB_CLASS CHG_HOUR101 John G. News Database Engineer 105.00

102 David H. Senior System Analyst 96.75

.. .. .. ..

PROJ_NUM EMP_NUM HOURS

15 103 23.8

15 101 19.4

.. .. ..

Tabel hasil normalisasi bentuk kedua (2nd form)

Page 51: Normalisasi Basis Data (Revisi)

Bentuk normal ketiga(3rd normal form)

Page 52: Normalisasi Basis Data (Revisi)

• Pastikan tabel sudah dalam bentuk normal kedua

• Eliminasi depedensi transitif

• Tentukan kembali depedensi antar atribut

Page 53: Normalisasi Basis Data (Revisi)

PROJ_NUM PROJ_NAME EMP_NUM EMP_NAME JOB_CLASS

HOURS

Nama tabel: PROJECT

PROJ_NUM à PROJ_NAME

Nama tabel: EMPLOYEE

EMP_NUM à EMP_NAME, JOB_CLASS

JOB_CLASS à CHG_HOUR

PROJ_NUM EMP_NUM

{PROJ_NUM,EMP_NUM} à HOURS

Nama tabel: ASSIGNMENT

JOB_CLASS CHG_HOUR

Nama tabel: JOB

Page 54: Normalisasi Basis Data (Revisi)

Nama tabel: PROJECT Nama tabel: EMPLOYEE

Nama tabel: ASSIGNMENT

PROJ_NUM PROJ_NAME

15 Evergreen

18 Amber Wave

.. ..

EMP_NUM EMP_NAME JOB_CLASS101 John G. News Database Engineer

102 David H. Senior System Analyst

.. .. ..

PROJ_NUM EMP_NUM HOURS

15 103 23.8

15 101 19.4

.. .. ..

JOB_CLASS CHG_HOURDatabase Engineer 105.00

System Analyst 96.75

.. ..

Nama tabel: JOB

Tabel hasil normalisasi bentuk ketiga (3rd form)

Page 55: Normalisasi Basis Data (Revisi)

Bentuk normal Boyce-Codd(Boyce-Codd normal form)

Page 56: Normalisasi Basis Data (Revisi)

• Pastikan tabel sudah dalam bentuk normal ketiga

• Hanya dilakukan jika dan hanya jika semua determinan

merupakan candidate key

Page 57: Normalisasi Basis Data (Revisi)

CA B

{A,B} à C, DC à B

3rd normal form but not BCNF

D

DA C

{A,C} à D

3rd normal form and BCNF

BC

C à B

Page 58: Normalisasi Basis Data (Revisi)

SISWA KURSUS TUTOR

Anwar B. Perancis Pierre

Anwar B. Inggris Richard

Budi B. Perancis Pierre

Cecep B. Inggris Suzanne

Ilustrasi tabel BCNFSISWA TUTOR

Anwar Pierre

Anwar Richard

Budi Pierre

Cecep Suzanne

TUTOR KURSUS

Pierre B. Perancis

Richard B. Inggris

Suzanne B. Inggris

{SISWA,KURSUS} à TUTORTUTOR à KURSUS

TUTOR à KURSUS

Relasi SISWA dengan TUTOR

Page 59: Normalisasi Basis Data (Revisi)

Pada kasus sebelumnya, tabel sudah dalam bentuknormal ketiga dan BCNF

Page 60: Normalisasi Basis Data (Revisi)

Latihan Normalisasi

Page 61: Normalisasi Basis Data (Revisi)