PART 5. ANOMALI DAN INTEGRITAS DATA PADA MODEL RELASIONAL

5.1. Anomali

Anomali adalah proses pada basisdata yang memberikan efek samping yang tidak diharapkan (misal menyebabkan ketidak-konsistenan data atau membuat sesuatu data menjadi hilang ketika data lain dihapus). Anomali pada basis data dapat dibedakan menjadi 3 (tiga ), yaitu beikut ini:

  1. Anomali Peremajaan (Update)
  2. Anomali Penghapusan (Delete), dan
  3. Anomali Penyisipan (Insert).

Berikut ini adalah contoh relasi KRS (Kartu Rencana Studi) mahasiswa pada suatu perguruan tinggi. Dalam relasi ini terdapat 8 (delapan) atribut, yaitu nim,nama_m,kdmk,nama_mk,sks,smt,tahun dan status_ambil, dengan data – data yang ada sebagai berikut:

Gambar 5.1. Relasi KRSGambar 5.1. Relasi KRS

a. Anomali Peremajaan (Update).

Anomali peremajaan terjadi apabila ada perubahan pada sejumlah data yang mubazir pada suatu table tetapi tidak seluruhnya diubah. Pada contoh relasi KRS tersebut, terjadi anomali peremajaan, seandainya nama matakuliah ‘Pengantar Teknologi Informasi’ berubah menjadi ‘Sistem Teknologi Informasi’, dan perubahan hanya dilakukan pada record 1pertama, dan record kedua dan empat tidak dilakukan perubahan, maka hal ini menyebabkan adanya ketidakkonsistenan.

b. Anomali Penyisipan (Insert).

Anomali peremajaan terjadi apabila pada saat penambahan hendak dilakukan, ternyata ada elemen data yang masih kosong, dan elemen data tersebut justru menjadi kunci.

Pada contoh relasi KRS tersebut terjadi anomali peremajaan, seorang mahasiswa mengambil beberapa matakuliah untuk semester dan tahun akademik tertentu. Masalahnya, bagaimanakah menyimpan fakta bahwa ada suatu matakuliah baru yang tidak diambil oelh mahasiswa ?. Penyisipan tidak bisa dilakukan karena tidak ada informasi mahasiswa yang mengambil matakuliah tersebut.

c. Anomali Penghapusan (Delete).

Anomali peremajaan terjadi apabila suatu baris (record) yang tidak terpakai dihapus, dan sebagai akibatya ada data lainnya yang hilang.

Pada contoh relasi HRS tersebut terjadi anomali penghapusan, apabila data pada record pertama dihapus, maka seluruh data yang ada pada record tersebut akan terhapus juga, padahal data tersebut masih diperlukan.

5.2. Ketergantungan Fungsional

Diberikan suatu tabel, misal T dengan 2 atribut A dan B, kita dapat menyatakan notasi sebagai berikut :Gambar 5.2. Ketergantungan fungsional

Dari data diatas, Ketergantungan Fungsional yang dapat diajukan adalah :

  1. Nim -> nama_mhs, Artinya adalah atribut Nama_mhs hanya tergantung pada atribut Nim. Faktanya adalah setiap nilai nim yang sama, maka pasti nama_mhs – nya juga sama.
  2. Nama_kul, Nim -> Indeks_nilai, Artinya adalah atribut Indeks_nilai tergantung pada atribut Nama_kul dan Nim secara bersama – sama. KF mempunyai pengertian bahwa setiap indeks nilai diperuntukkan pada mahasiswa tertentu untuk matakuliah tertentu yang diambilnya.

Contoh Non KF :

  1. Nama_kul -> Nim, artinya adalah atribut Nim tidak tergantung pada Nama_kul. Buktinya bahwa pada Row 1 dan row 2, dengan nilai Mata_kul sama tetapi nilai Nim – nya tidak sama.
  2. Nim -> Indeks_nilai, artinya adalah bahwa atribut Indeks_nilai tidak hanya tergantung pada atribut Nim. Buktinya terlihat pada row 1 dan 6, dengan nilai Nim sama, tapi nilai Indeks_nilai – nya berbeda.

5.3. Domain Atribut

Domain Atribut adalah merupakan suatu gugus nilai yang mungkin dimiliki oleh suatu atribut pada suatu table / relasi dalam database. Berikut ini adalah contoh relasi rekening pada suatu database perbankan.

Gambar 5.3. Domain atribut

Pada relasi rekening diatas mempunyai pengertian sebagai berikut yang berhubungan dengan domain :

  • Domain dari atribut Status adalah { Saving, Checking }, yang mempunyai arti adalah nilai yang mungkin diberikan pada atribut status adalah hanya Saving dan Checking
  • Domain dari atribut Saldo, adalah semua bilangan nyata yang positif, domain atribut ini merupakan gugus tak hingga.
  • Domain atribut No_Rekening adalah semua kode rekening yang meungkin dikeluarkan oleh Bank tersebut.

5.4. Integritas Data

Informasi yang disimpan pada basisdata hanya bagus jika DBMS membantu mencegah pemasukan informasi yang tidak benar. Konstrain integritas adalah syarat yang dispesifikasikan pada skema basisdata dan mebatasi data yang dapat disimpan dalam basisdata. Jika basisdata memenuhi semua konstrain integritas yang dispesifikasikan pada skema basisdata maka basis data adalah legal. DBMS memaksakan konstrain integritas sehingga hanya mengijinkan basisdata legal yang akan disimpan oleh DBMS. Konstrain integritas menjamin bahwa perubahan – perubahan yang dilakukan orang yang diotorisasi tidak menghasilkan pelanggarakan konsistensi data.

Integritas data mengacu ke konsistensi dan akurasi data yang disimpan dalam basisdata. Konstrain integritas dispesifikasikan dan dipaksakan pada waktu yang berbeda, yaitu:

  1. Ketika DBA mendefinisikan skema basisdata (lewat DDL), DBA menspesifikasikan konstrain integritas yang harus selalu dipenuhi basisdata.
  2. Ketika aplikasi basisdata dijalankan, DBMS melakukan Pemeriksaan untuk mencegah terjadinya pelanggaran dan mencegah perubahan – perubahan yang melanggar konstrain integritas. Pada beberapa situasi, DBMS tidak melarang suatu aksi yang dapat menimbulkan pelanggaran namun kemudian DBMS membuast tindakan – tindakan otomatis untuk memenuhi konstrain integritas. Dengan demikian dijamin perubahan – perubahan pada basisdata tidak menghasilkan baisdata yang melanggar konstrain integritas.

5.4.1. Jenis konstrain integritas

Integritas dapat dikelompokkan menjadi 2 (dua), yaitu integritas didalam relasi yaitu aturan integritas entitas dan aturan integritas domain dan integritas dengan luar relasi yaitu aturan integritas referensial.

Selain itu terdapat aturan integritas untuk memenuhi aturan – aturan yang berlaku di perusahaan yang disebut aturan integritas perusahaan atau aturan bisnis yang harus dipenuhi oleh basisdata. Dengan demikian, dapat diringkaskan integritas data di model relasional, meliputi:

  1. Aturan integritas domain.
  2. Aturan integritas entitas.
  3. Aturan integritas referensial.
  4. Aturan integritas perusahaan (didefiniskan pemakai).

Hubungan antara domain, entitas dan referensial integritas dapat dilihat pada gambar berikut ini:


Gambar 5.4. Hubungan antar konstrain integritas

a. Integritas domain

Domain adalah nilai – nilai yang dimungkinkin diasosiasikan dengan setiap atribut. Kemungkinan beberapa atribut mempuyai domain yang sama, misalnya atribut nama_pelanggan, nama_pekerja dapat mempunyaim domain yang sama. Namun tidak jelas apakah nama_pekerja dan nama_kota seharusnya mempunyai doamin yang sama. Pada level implementasi, baik nama_pekerja dan nama_kota adalah string karakter. Namun kita tidak bisa membuat query “tampilkan nama pekerja yang namanya sama dengan nama kota” sebagai query yang mempunyai arti. Dengan demikian, jika kita memandang basisdata pada level konseptual buka level fisik, maka nama_pekerja dan nama_kota adalah mempunyai domain yang berbeda.

Konstrain domain tidak hanya memungkinkan kita menguji nilai-nilai yang dimasukkan ke basisdata tapi juga memungkinkan kita melakukan pemeriksaan query untuk menjamin perbandingan yang dibuat mempunyai arti.

b. Integritas entitas

Null merepresentasikan suatu nilai untuk atribut dimana pada saat itu nilainya belum diketahui atau tidak diterapkan untuk tupel itu. Null adalah cara menanggapi ketidaklengkapan atau kondisi kekecualian yang terjadi pada data. Null tidak sama dengan nilai numerik nol (0) atai string teks spasi.

Null dapat menyebabkan masalah pada implementasi, kesulitan akan muncul karena pada model relasional berdasarkan kalkulus predikat order pertama yaitu logika bernilai dua atau logika boole-yaitu nilai yang diperbolehkan hanyalah true atau false.

Kita dapat menciptakan kalimat Create Table yang mencegah kolom yang bernilai Null dengan menggunakan konstrain Not Null, konstrain ini berlaku untuk kolom. Jika kita menempatkan Not Null segera setelah tipe data dari kolom maka peletakan nilai Null di kolom akanj ditolak. Bila tidak dinyatakan, SQL mengasumsikan Null diijinkan kecuali bila dispesifikasikan sebagai bagian dari kunci utama dengan Primary Key.

Create Table Dosen(
  nid char(10) Primary Key,
  nama_d varchar(50) Not Null,
  tempat_lhr varchar(25),
  tgl_lahir datetime,
  jkelamin varchar(10),
  alamat varchar(90),
  kota varchar(30),
  kodepos char(5),
  gajipokok numeric(9)
)

nama_d tidak boleh diisi dengan Null, sedangkan tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos, gajipokok boleh diisi dengan nilai Null pada kalimat insert ataupun update. Sementara nid dengan sendirinya adalah not null karena sebagai bagia dari kode primer yang didefinisikan dengan primary key.

c. Integritas referensial

Integritas pengacuan adalah jika foreign key terdapat di relasi maka nilai foreign key harus cocok pada nilai candidate key suatu tupel di relasi asal (home relation) atau nilai foreign key seluruhnya Null. Kita sering berkehendak menjamin nilai yang muncul di satu relasi untuk suatu himpunan atribut tertentu juga muncul sebagai himpunan atribut tertentu pada relasi lain.

Create Table Mangajar(
  nid char(10) not null,
  thn_akademik char(4) not null,
  smt int not null,
  hari varchar(10) not null,
  jam_ke char(1) not null,
  kdmk char(9),
  waktu char(10),
  kelas char(5),
  kode_jur char(2),
  Constraint PkAjar Primary Key(nid, thn_akademik, smt, hari, jam_ke),
  Constraint Fkmatakuliah Foreign Key(kdmk) References Matakuliah(kdmk),
  Constraint Fkdosen Foreign Key(nid) References Dosen(nid),
  Constraint Fkjurusan Foreign Key(kode_jur) References Jurusan(kode_jur)
)

d. Integritas enterprise

Integritas keperusahaan adalah aturan – aturan tambahan yang dispesifikan pemakai atau administrator basisdata. Pemakai menspesifikasikan konstrain tambahan yang harus dipenuhi data.
Konstrain tipe, domain, kunci dan referensial bersifat struktural, membatasi struktur ata. Aturan perusahaan tidak berkaitan erat dengan struktur. Konstrain perusahaan ini disebut konstrain semantiks karena diturunkan dari domain aplikasi tertentu yang dimodelkan basidata.

Contoh : jika telah dibatasi jumlah staf di satu kantor cabang berjumlah 20 orang, maka administrator harus dapat menspesifikasikan ketentuan itu dan DBMS mampu memaksakan konstrain ketentuan ini. Anggota staf baru tidak dapat dimasukkan ke relasi staf jika jumlah staf saat itu telah mencapai 20.

 

referensi : http://didiksetiyadi.com/

 

Catatan kecil: Jangan lupa di komen ia, karna komenmu berguna banget buat berkembangnya blog ini. Mau kritik juga boleh ko.

 

Baca juga artikel terkait

  1. Belajar Database SQL part 1 (Constraint not null, unique, primary key)
  2. Part 4. Normalisasi Data
  3. Part 3. BAHASA BASIS DATA (DATABASE LANGUAGE)
  4. Part 2. Operasi Dasar Basis Data
  5. Pengertian Sistem Manajemen Basis Data

One thought on “PART 5. ANOMALI DAN INTEGRITAS DATA PADA MODEL RELASIONAL

Leave a comment