ARSIP TUGAS : DATABASE : BCNF

Posted on
Tabel terlampir menunjukkan contoh data daftar rencana kunjungan dokter gigi dengan pasiennya. Seorang pasien mendapatkan jadwal (tanggal dan waktu) kunjungan dokter di suatu klinik tertentu. Pada setiap hari jadwal kunjungan pasien, seorang dokter gigi dijadwalkan untuk melayani di klinik tersebut.

1/ tabel tersebut berpotensi terjadi anomali. tunjukkan dengan contoh anomali insert, update, maupun delete.
2/ identifikasi dependensi-dependensi fungsional antar atribut pada tabel tersebut.
3/ lakukan normalisasi tabel tersebut sampai dengan 3NF.
4/ apakah hasil normalisasi 3NF memenuhi ketentuan BCNF? jika tidak lakukan normalisasi agar memenuhi ketentuan BCNF.

Jawab:
1. Contoh anomali update, insert dan dellete
Anomali dellete: Ketika kita menghapus rincian dokter gigi yang bernama ‘HelenPearson’, maka kita juga kehilangan rincian pasien yang bernama ‘Ian MacKay’.
Anomali insert: Ketika dokter gigi baru dimasukkan maka semua nilai-nilai lain perlu dimasukkan tetapi akan menjadi masalah ketika dokter gigi belum ditugaskan untuk pasien tertentu. (2 tanda)
Anomali update: adalah ketika kita memperbarui rincian dokter gigi misalnya Tony Smith maka semua catatan lain tentang dia perlu diperbarui, misalnya pasiennya, waktu atau yang lainnya.
2. Dependensi Fungsional
fd1: staffNo –> dentistName
fd2: patNo–> patName
fd3: Appointment date,Appointment Time,SurgeryNo–> staffNo,patNo
fd4: patNo,Appointment Date, Appointment time–> staffNo,surgeryNo
fd5: staffNo,Appointment Date–>surgeryNo
fd6: Appointment Date, surgeryNo–> staffNo
fd7: staffNo,Appointment Date, Appointment time–> patNo
fd8: patNo, Appointment Date, Appointment Time–> staffNo
fd9: staffNo,Appointment Date,Appointment Time–> patNo
3. Normalisasi Tabel Sampai dengan 3NF
1NF
Appointment (staffNo, appointmentDate, appointmentTime, dentistName, patNo, patName, surgeryNo)
2NF
Appointment (staffNo, appointmentDate, appointmentTime, patNo, patName)
SurgeryReg (staffNo, appointmentDate, surgeryNo)
Dentist (staffNo,dentistName)
3NF
Appointment(StaffNo, PatNo, AppointmentDate, appointmentTime)
SurgeryReg(StaffNo, Appointment_date, SurgeryNo)
Dentist (staffNo, dentistName)
Patient (patNo, patName)
4. Apakah tabel 3NF sudah memenuhi kriteria BCNF?
Keadaan dimana suatu relasi berpeluang terjadi masalah BCNF adalah ketika:
  • Candidate key lebih dari dua
  • Candidate key overload, dalam artian berada di lebih dari satu tempat.
Dan suatu kondisi dimana suatu relasi 3NF sudah pasti memenuhi BCNF, adalah ketika pada suatu relasi hanya memiliki satu priary key.
Pada tabel Dentist dan Patient, sudah pasti memenuhi BCNF karena setiap relasi hanya memiliki satu kunci primer.
Dentist(StaffNo, dentistName)
Patient(PatNo, PatName)
Selanjutnya pada tabel yanag lain, kunci kandidatnya sebagai berikut.
SurgeryReg(StaffNo, Appointment_date, SurgeryNo)
candidate key: Appointment_date, SurgeryNo.
Appointment(StaffNo, PatNo, Appointment_date, Appointment_Time)
candidate keys: a) StaffNo, Appointment_date, Appointment_Time.
b) PatNo,Appointment_date, Appointment_Time
Jika dilihat dari penjelasan diatas, setiap relasi tidak memiliki kunci kandidat lebih dari dua. Dan kunci kandidatnya pun hanya berada pada relasi tersebut. Maka kedua relasi tersebut juga telah memnuhi BCNF.

Dengan demikian, maka tabel 3NF sudah memenuhi kriteria BCNF.