Minggu, 12 November 2023

Apa itu Denormalisasi?

 

* Pentingnya Melakukan Denormalisasi pada Perancangan Sistem

Pembentukan struktur database merupakan hal yang penting dilakukan dalam pengembangan sistem informasi suatu sistem, Sebagai seorang perancang database, dibutuhkan pemahaman tentang membuat struktur data yang baik dan sesuai dengan kebutuhan operasional. Dalam proses perancangan database, terdapat satu proses yang dapat dilakukan untuk penyempurnaan tabel-tabel yang dibuat untuk database, proses ini dinamakan normalisasi. Normalisasi merupakan parameter yang digunakan untuk menghindarari duplikasi terhadap tabel dalam database dan juga merupakan proses dekomposisi suatu tabel yang masih memiliki beberapa anomali. Hasil dari normalisasi adalah suatu tabel yang tidak memiliki data redundancy dan memungkinkan user untuk melakukan insert, delete, dan update pada baris (record) tanpa menyebabkan inkonsistensi data.

Denormalisasi adalah kebalikan dari proses normalisasi. Denormalisasi merupakan proses yang dilakukan pada database yang sudah dinormalisasi, dengan cara memodifikasi struktur tabel dan mengabaikan kerangkapan data (yang terkontrol) untuk meningkatkan kinerja database. Pada satu sisi denormalisasi menyebabkan adanya data redundancy yang lebih besar, bahkan dapat mengurangi fleksibilitas basis data untuk perkembangan penggunan dimasa depan. Di sisi lain, denormalisasi dapat mempercepat pemanggilan (retrieval) data, meskipun dapat memperlambat proses update data. Perbedaan normalisasi dan denormalisasi adalah terletak pada data redundancy dan kompleksitas query. Pada data redundancy, data normalisasi harus dihilangkan semaksimal mungkin sehingga apabila kita akan mengakses data dalam suatu database membutuhkan query yang kompleks. Berbeda dengan denormalisasi, denormalisasi disini tidak terlalu memikirkan tentang data redundancy sehingga dalam mengakses data lebih cepat. Secara prinsip, tidak ada metode khusus untuk melakukan denormalisasi.

Denormalisasi dapat dilakukan apabila terdapat:

  1. Atribut yang terderivasi (atribut turunan), yaitu atribut yang nilainya bisa diperoleh dari nilai-nilai yang sudah ada pada atribut lain.
  2. Atribut yang berlebihan, yaitu atribut yang memiliki kode tambahan yang menunjukkan beberapa kondisi lainnya, seperti: Atribut terkodekan (encoded attribute), Atribut gabungan (concatenated attribute), Atribut tumpang-tindih (overlapping attribute), Atribut bermakna ganda (alternate attribute)
  3. Tabel rekapitulasi (summary table), yaitu hasil pengolahan dari semua tabel yang ada. Pengolahan tersebut melibatkan banyak tabel sehingga akan membutuhkan waktu yang lama. Jika hal tersebut sering diakses dan diperlukan, maka perlu dibuat tabel khusus untuk menyimpan data hasil rekapitulasi tersebut.

Beberapa situasi yang menjadi pertimbangan untuk melakukan denormalisasi sebagai upaya mempercepat proses transaksi adalah sebagai berikut:

  1. Mengkombinasikan relasi One to One (1:1)
  2. Menduplikasi field bukan kunci dalam relasi one to many (1:M) untuk mereduksi proses join saat query.
  3. Menduplikasi field FK dalam relasi One to Many (1:M) untuk mereduksi proses join saat query.
  4. Membuat batasan pada multi atribut

Denormalisasi penting dalam perancangan database. Apabila terdapat proses pengaksesan yang dilakukan dabatase sewaktu data yang berada dalam suatu tabel ada 5000 baris dengan 30000 baris, maka proses tersebut akan memakan waktu yang cukup lama untuk mengakses data tersebut, terlebih lagi apabila user mengaksesnya dari beberapa table dan user hanya membutuhkan melihat sebagian datanya saja. Oleh karena itu, denormalisasi diperlukan untuk menjaga kestabilan performa sistem. Untuk menentukan apakah perlu sistem dilakukan denormalisasi atau tidak untuk mengoptimalkan kinerja sistem diperlukan beberapa pertimbangan.

Sumber:

Triyono, G., 2011. PERTIMBANGAN MELAKUKAN DENORMALISASI PADA ISASI PADA MODEL BASIS DATA RELASI. Jurnal TELEMATIKA MKOM, Volume III, pp. 19-25.

Yulherniwati, A. I., 2013. PERANCANGAN BASIS DATA UNTUK PENGEMBANGAN SISTEM INFORMASI AKADEMIK BERBASIS WEB JURUSAN TEKNOLOGI INFORMASI. Jurnal Teknik Industri – Universitas Bung Hatta, Volume 2, pp. 13-25.

Apa itu normalisasi pada ERD

 Normalisasi

Bentuk normalisasi adalah suatu aturan yang dikenakan pada tabel-tabel dalam basis data dan harus dipenuhi oleh tabel-tabel tersebut pada level-level normalisasi. Ada macam-macam bentuk normalisasi, diantaranya adalah bentuk tidak normal, bentuk normal pertama, bentuk normal kedua dan bentuk normal ketiga.

Bentuk - bentuk Normalisasi

A. Bentuk tidak normal bentuk ini merupakan kumpulan data yang akan disimpan, tidak ada keharusan mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi dan data dikumpulkan apa adanya. 

B. Bentuk normal pertama suatu tabel dikatakan dalam bentuk normal pertama (1NF) bila setiap kolom bernilai tunggal untuk setiap baris. Ini berarti bahwa nama kolom yang berulang cukup diwakili oleh sebuah nama kolom (tidak perlu ada indeks dalam memberi nama kolom)

C. Bentuk normal Kedua 

- Jika tabel berada dalam bentuk normal pertama, semua kolom bukan kunci primer tergantung sepenuhnya terhadap kunci primer. Suatu kolom disebut tergantung sepenuhnya terhadap kunci primer jika nilai pada suatu kolom selalu bernilai sama untuk suatu nilai kunci primer yang sama. Peraturan ini berlaku bila Anda memiliki kunci primer yang terdiri dari lebih dari satu kolom. Misalnya, Anda memiliki tabel yang berisi kolom berikut, dimana Order ID dan Product ID membentuk kunci primer: Order ID (primary key) Product ID (primary key) Product Name 

- Desain ini melanggar bentuk normal kedua, karena Nama Produk tergantung pada Produk ID, tetapi bukan pada ID Pesanan, sehingga tidak tergantung pada seluruh kunci primer. Anda harus menghapus Nama Produk dari table ini. Ini termasuk dalam tabel yang berbeda (Produk).

D. Bentuk normal ketiga Suatu tabel berada dalam bentuk normal ketiga (3NF) jika tabel berada dalam bentuk normal kedua, setiap kolom bukan kunci primer tidak memiliki ketergantungan secara transitif terhadap kunci primer. 

- Bentuk normal ketiga tidak hanya mensyaratkan bahwa setiap kolom non-key tergantung pada seluruh kunci primer, tapi kolom non-kunci tsb menjadi independen satu sama lain. Misalnya, Anda memiliki tabel yang berisi kolom berikut: ProductID (primary key) Name suggested retail price / SRP Discount 

- Asumsikan bahwa Discount bergantung pada harga eceran yang disarankan/ suggested retail price (SRP). Tabel ini melanggar bentuk normal ketiga karena kolom non-kunci, Discount, bergantung pada kolom lain non-kunci, SRP. Kolom independence berarti bahwa Anda dapat mengubah setiap kolom non-kunci tanpa mempengaruhi setiap kolom lainnya. Jika Anda mengubah nilai dalam kolom SRP, Diskon akan berubah sesuai perubahan pada kolom SRP, sehingga melanggar peraturan itu. Dalam hal ini Diskon harus dipindahkan ke table lain yang mempunyai kunci pada SRP

* Hasil Normalisasi

Kamus Data dari masing-masing relasi tersebut diatas adalah sebagai berikut: 

Supllier = { Kode_Supplier, Nama_Supplier } 

Barang = { Kode_Barang, Nama_Barang, Harga } 

Faktur ={ No Faktur, Kode_Supplier, Tanggal, Jatuh_Tempo } 

Transaksi_Barang = { No Faktur, Kode Barang,Qty}

- ERD ( Entity Relationship Diagram)


Pengertian Hubungan (Relation) antar pada gambar ERD(entity relationship diagram) pada gambar di atas adalah sebagai berikut: a). Supplier ke Faktur relasinya adalah one to many, artinya adalah satu supplier mempunyai banyak faktur, faktur punya relasi terhadap supplier. b). Faktur ke Transaksi Barang relasinya adalah one to many, artinya adalah satu faktur mempunyai beberapa transaksi barang (satu faktur terdiri dari satu atau lebih transaksi barang). c). Barang ke Transaksi Barang relasinya adalah one to many, artinya adalah satu barang bisa terjadi beberapa kali transaksi pembelian barang.


Apa itu relation pada ERD, Mengapa many-to-many tidak baik digunakan pada ERD

 

Apa itu relation pada ERD?

Basis data atau kerap disebut “database” merupakan kumpulan informasi yang disimpan secara sistematis dalam perangkat komputer sehingga dapat dicari dan diperiksa melalui suatu program komputer saat informasi tertentu sedang dibutuhkan.

Ketika mendokumentasikan data atau proses hingga menjadi database, kamu dapat meningkatkan pemahaman atas sistem tersebut dengan melihatnya dari beberapa perspektif.

Oleh karena itu, agar dapat menjadi sistem database yang rapi dan terstruktur, kamu membutuhkan Entity Relationship Diagram (ERD).  Entity-relationship diagram (ERD) merupakan sebuah model untuk menyusun database agar dapat menggambarkan data yang mempunyai relasi dengan database yang akan didesain.

Istilah dan Komponen Penyusun ERD

Diagram ER biasanya berhubungan langsung dengan diagram data flow untuk menampilkan konten data store. Ketiga hal tersebut dapat membantu memvisualisasikan bagaimana data saling terhubung dan berguna untuk mengonstruksi basis data relasional. Saat kamu ingin mulai membuat ERD, ada beberapa istilah umum dan komponen ERD yang perlu kamu pahami terlebih dulu.

Hal yang harus Anda lakukan sebelum mengetahui cara membuat entity relationship diagram adalah memahami beberapa komponen penyusunnya. Simak komponen penyusun ERD berikut ini.

1. Entitas

Kumpulan objek yang dapat diidentifikasikan secara unik atau saling berbeda. Biasanya, simbol dari entitas adalah persegi panjang. Selain itu, ada juga “Entitas Lemah” yang dilambangkan dengan gambar persegi panjang kecil di dalam persegi panjang yang lebih besar. Disebut entitas lemah karena harus berhubungan langsung dengan entitas lain sebab dia tidak dapat teridentifikasi secara unik.

2. Atribut

Komponen kedua dari ERD adalah atribut. Setiap entitas pasti mempunyai elemen yang disebut atribut yang berfungsi untuk mendeskripsikan karakteristik dari entitas tersebut. Atribut kunci merupakan hal pembeda atribut dengan entitas. Gambar atribut diwakili oleh simbol elips dan terbagi menjadi beberapa jenis:

    1. Atribut kunci (key): atribut yang digunakan untuk menentukan entitas secara unik. Contoh: NPWP, NIM (Nomor Induk Mahasiswa).
    2. Atribut simpel: atribut bernilai tunggal yang tidak dapat dipecah lagi (atomic). Contoh: Alamat, tahun terbit buku, nama penerbit.
    3. Atribut multinilai (multivalue): atribut yang memiliki sekelompok nilai untuk setiap entitas instan. Contoh: nama beberapa pengarang dari sebuah buku pelajaran.
    4. Atribut gabungan (composite): atribut yang terdiri dari beberapa atribut yang lebih kecil dengan arti tertentu. Contoh: nama lengkap yang terbagi menjadi nama depan, tengah, dan belakang.
    5. Atribut derivatif: atribut yang dihasilkan dari atribut lain dan tidak wajib ditulis dalam diagram ER. Contoh: usia, kelas, selisih harga.


3. Relasi

Hubungan antara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Gambar relasi diwakili oleh simbol belah ketupat. Relasi juga terbagi menjadi beberapa jenis:

    1. One to one: setiap entitas hanya bisa mempunyai relasi dengan satu entitas lain. Contoh: siswa dengan nomor induk siswa
    2. One to many: hubungan antara satu entitas dengan beberapa entitas dan sebaliknya. Contoh: guru dengan murid dan sebaliknya.
    3. Many to many: setiap entitas bisa mempunyai relasi dengan entitas lain, dan sebaliknya. Contoh: siswa dan ekstrakurikuler.

4. Garis

Garis yang menghubungkan antar atribut untuk menunjukkan hubungan entitas pada diagram ER.

Mengapa many-to-many tidak baik digunakan pada ERD?

Many-to-many relationship pada ERD tidak disarankan untuk digunakan karena dapat menyebabkan masalah dalam pengelolaan data. Beberapa masalah yang dapat terjadi antara lain:

  • Kesulitan dalam melakukan query data karena banyaknya tabel yang terlibat dalam relasi many-to-many.
  • Kesulitan dalam melakukan pembaruan data karena perubahan pada satu entitas dapat mempengaruhi banyak entitas lainnya.
  • Kemungkinan terjadinya duplikasi data karena banyaknya entitas yang terlibat dalam relasi many-to-many.

Oleh karena itu, sebaiknya menggunakan relasi one-to-one atau one-to-many untuk menghindari masalah tersebut. Namun, jika memang diperlukan relasi many-to-many, dapat digunakan tabel penghubung (junction table) untuk mengelola relasi tersebut.



Apa itu PrimaryKey, Foregent Key dan Candidate Key. berikan masing-masih 5 contoh pada penerapan ERD

1. Primary Key


 Primary key adalah suatu nilai yang ada didalam suatu basis data yang dimana digunakan untuk mengidentifikasi suatu baris yang ada di dalam tabel. Nilai yang ada didalam primary key adalah unik. Sedangkan secara sederhananya primary key dapat juga diartikan sebagai kolom yang berisi nilai unik, yang dimana memiliki fungsi sebagai identitas yang untuk membedakan setiap record yang ada didalam suatu tabel. 

Primary Key merupakan ‘tanda pengenal’ yang ditetapkan untuk suatu tabel. Primary Key ini harus merupakan atribut yang paling cocok dan paling dapat membedakan data-data yang ada di dalam tabel tersebut. Misalnya, setiap mahasiswa pasti memiliki NIM dan nomor ponsel. Kedua atribut ini pasti merupakan data yang unik, ‘kan? Tidak ada dua mahasiswa yang memiliki NIM dan nomor ponsel yang sama persis. Akan tetapi, mana atribut yang paling cocok untuk menjadi ‘tanda pengenal’ dari mahasiswa? Yup, NIM pastinya lebih cocok untuk dijadikan ‘tanda pengenal’ si mahasiswa!

Nah, dari contoh di atas, dapat kita lihat bahwa jenis key dalam database mungkin ada lebih dari satu atribut yang dapat dijadikan ‘tanda pengenal’ dari suatu tabel, karena sifatnya yang memang unik. Akan tetapi, perlu kita pertimbangkan lagi manakah atribut yang paling cocok untuk dijadikan ‘tanda pengenal’ tabel tersebut.

Seperti yang sudah dijelaskan pada sebelumnya primary key ini memiliki fungsi sebagai identitas untuk membedakan antara record yang ada pada suatu tabel. Misalnya dalam suatu database pada perusahaan terdapat 3 orang pegawai yang berbeda namun juga memiliki sama – sama memiliki nama “rizki” nah bagaimana cara untuk membedakan antara ketiga data tersebut? Tentu yang harus anda gunakan adalah menggunakan kunci utama yaitu primary key. Selain itu juga relasional database primary key juga dapat digunakan sebagai penghubung antara sebuah tabel dengan tabel lainnya. Yang mana nantinya dari primary key akan mewakili masing – masing record yang ada pada tabel.

Meski penggunaan primary key ini yang dilakukan kepada setiap tabel tidak diwajibkan akan tetapi dengan adanya primary key ini juga sangat berpengaruh untuk anda jika anda melakukan query pada database anda. seperti pada saat anda melakukan pencarian atau juga pada saat melakukan pengurutan data yang dapat menjadi lebih cepat jika anda menggunakan primary key.

2. Foreign key

Jenis key dalam database selanjutnya adalah Foreign Key. Apabila primary key berfungsi untuk menjalankan fungsi pertama dari key dalam database, yakni sebagai ‘tanda pengenal’, maka foreign key berfungsi untuk menjalankan fungsi kedua dari key dalam database, yakni sebagai penghubung antartabel.

Sebelum mempelajari penggunaan foreign key, mari kita simak kedua tabel di bawah ini:



Dari kedua tabel di atas, kita dapat melihat bahwa ada siswa dan ada kelas dalam suatu sekolah. Akan tetapi, kita tidak bisa melihat siswa mana masuk di kelas mana. Untuk memperjelas tabel di atas, kita dapat mengetahui jenis key dalam database menghubungkan kedua tabel dengan menggunakan foreign key.

Dari tabel di atas, dapat kita ketahui bahwa primary key dari tabel siswa adalah NIS atau Nomor Induk Siswa. Sementara, primary key dari tabel kelas adalah Kode Kelas. Untuk menghubungkan kedua tabel di atas, kita cukup menambahkan Kode Kelas sebagai foreign key pada Tabel Siswa. Dengan begitu, tampilan tabel siswa secara keseluruhan akan seperti di bawah ini:

Perlu diingat bahwa jenis key dalam database memiliki atribut. Atribut yang akan kamu gunakan sebagai foreign key haruslah merupakan primary key pada tabel asalnya ya, teman-teman.

Secara sederhana foreign key ini dapat diartikan sebagai kunci asing. Yang dimana definisi ini juga berlaku didalam pengolahan relasional database. Kunci asing (foreign key) adalah sebuah atribut yang terdapat didalam suatu tabel yang dimana untuk digunakan untuk menciptakan hubungan  antara dua tabel.

Di dalam relational database penggunaan foreign key merujuk pada suatu kunci primer yang terdapat pada tabel pertama atau juga dikenal dengan tabel master.

Fungsi dari forign key adalah foreign key digunakan untuk menandakan hubungan tabel yang satu dengan yang lainnya. Yang dimana istilah ini dikenal sebagai parent dan child. Suatu tabel dapat dikatakan sebagai child apabila didalam suatu tabel terdapat kolom yang merupakan rujukan terhadap tabel pertama atau parent. Selain itu juga foreign key ini memiliki fungsi:

  • Dengan menggunakan kunci asing maka anda akan secara otomatis database akan konsisten dalam mempertahankan yang namanya integritas referensial. Dengan begitu maka database anda akan dapat memonitor setiap data yang akan dimasukan.
  • Ketika anda telah menetapkan kunci primer di tabel utama anda maka itu akan memudahkan anda juga dalam melihat perancangan fisik database dengan menggunakan komponen yang saling terkait.
  • Dengan membuat kolom yang digunakan sebagai foreign key maka dapat juga memudahkan anda untuk melakukan operasi pengolahan setiap data yang akan disimpan didalam database anda.
3. Composite Key

Didalam sebuah desain database composite key ini merupakan sebuah kunci yang didalamnya terdiri dari dua atau lebih atribut. Yang dimana atribut – atribut tersebut akan secara unik akan melakukan identifikasi terhadap sebuah kejadian yang namanya entitas.

Pada saat ini banyak sekali orang – orang yang masih bingung dalam menggunakan composite key ini hal ini dikarenakan di dalam composite key ini terdiri lebih dari dua atribut yang dimana satu atributnya nanti akan membentuk yang namanya composite key yang nantinya akan menjadi kunci sederhana.

4. Alternate Key

Jenis key dalam database selanjutnya adalah alternate key ini adalah sebuah kunci yang dimana banyak yang tidak dipilih. Yang dimana semisal ada dua kandidat yang akan menjadi sebuah dari kunci utama. Maka salah satu pasti akan ditunjuk sebagai primary keynya. Sementara kunci yang tidak dipilih maka akan dijadikan sebagai alternate key.

5. Candidate Key

Jenis key dalam database selanjutnya adalah Candidate key ini berperan sebagai untuk mengidentifikasi adanya kejadian yang spesial pada tabel anda. pada candidate key ini juga memiliki syarat sebuah kunci yang dinamakan candidate key adalah unik identifier, serta juga candidate key ini non duplikat. Yang dimana maksudnya tidak ada kunci yang memiliki ciri khas yang sama dengan candidate key.







Apa itu Denormalisasi?

  * Pentingnya Melakukan Denormalisasi pada Perancangan Sistem Pembentukan struktur  database  merupakan hal yang penting dilakukan dalam pe...