Tuesday, October 31, 2023

Denormalisasi Database

Denormalisasi adalah teknik optimisasi basis data di mana kita menambahkan data redundan ke satu atau lebih tabel. Ini dapat membantu menghindari penggabungan yang mahal dalam basis data relasional. Perlu dicatat bahwa denormalisasi bukan berarti 'membalikkan normalisasi' atau 'tidak melakukan normalisasi'. Ini adalah teknik optimisasi yang diterapkan setelah normalisasi.

Secara dasarnya, proses mengambil skema yang dinormalisasi dan membuatnya tidak dinormalisasi disebut denormalisasi, dan para perancang menggunakannya untuk menyesuaikan kinerja sistem guna mendukung operasi yang membutuhkan waktu.

Dalam basis data normalisasi tradisional, kita menyimpan data dalam tabel logis terpisah dan berupaya meminimalkan data redundan. Kita mungkin berusaha hanya memiliki satu salinan setiap data di dalam basis data.

Sebagai contoh, dalam basis data yang dinormalisasi, kita mungkin memiliki tabel Courses dan Teachers. Setiap entri di Courses akan menyimpan teacherID untuk sebuah Course tetapi bukan teacherName. Ketika kita perlu mengambil daftar semua Courses dengan nama Guru, kita akan melakukan penggabungan antara kedua tabel ini.

Dalam beberapa hal, ini bagus; jika seorang guru mengubah namanya, kita hanya perlu memperbarui nama tersebut di satu tempat. Kekurangannya adalah bahwa jika tabelnya besar, kita mungkin menghabiskan waktu yang tidak perlu lama untuk melakukan penggabungan tabel. Denormalisasi, kemudian, mencapai kompromi yang berbeda. Dengan denormalisasi, kita memutuskan bahwa kita baik-baik saja dengan beberapa redudansi dan sedikit usaha ekstra untuk memperbarui basis data guna mendapatkan keuntungan efisiensi dari penggabungan yang lebih sedikit.


Mengapa Denormalisasi Digunakan?


  1. Meningkatkan Kinerja: Dengan mengurangi jumlah penggabungan tabel, waktu yang dibutuhkan untuk menjalankan kueri pada basis data dapat dikurangi secara signifikan. Hal ini menjadi sangat penting dalam situasi di mana kinerja sistem menjadi prioritas utama.
  2. Sederhana Dalam Operasi: Denormalisasi dapat membuat operasi penambahan, pengubahan, dan penghapusan data (insert, update, delete) lebih sederhana karena data yang diperlukan sudah tersedia dalam satu tempat.
  3. Mendukung Laporan dan Analisis: Dalam beberapa kasus, denormalisasi dapat memudahkan pembuatan laporan dan analisis data yang kompleks dengan mengurangi kompleksitas kueri.
Namun, terdapat beberapa kelemahan yang perlu dipertimbangkan saat menggunakan denormalisasi:
  1. Penyimpangan Data: Adanya redudansi data dapat menyebabkan inkonsistensi jika data tidak diperbarui secara konsisten di semua tempat yang relevan. Ini dapat mengakibatkan kesulitan dalam menjaga konsistensi data.
  2. Peningkatan Penggunaan Ruang Penyimpanan: Karena redudansi data, ruang penyimpanan yang diperlukan untuk basis data dapat meningkat. hal ini perlu dipertimbangkan terutama ketika berurusan dengan basis data besar.
  3. Kompleks Perawatan: Denormalisasi dapat meningkatkan kommpleksitas perawatan dan pemeliharaan basis data, terutama jika terdapat perubahan struktur data yang sering terjadi.
Denormalisasi harus digunakan dengan hati-hati dan hanya dalam kasus-kasus di mana peningkatan kinerja menjadi lebih penting daripada konsistensi data. Kebijakan yang ketat perlu diterapkan untuk memastikan bahwa data tetap konsisten dan akurat setelah diterapkan denormalisasi.

Normalisasi Database

Normalisasi database adalah teknik desain logis yang mengelompokkan atribut dari berbagai entitas dalam sebuah relasi. Tujuannya adalah menciptakan struktur relasi yang tidak redundan, mudah beradaptasi, dan bebas dari ambiguitas. Normalisasi membantu menghilangkan dan mengurangi redudansi data serta memastikan bahwa data berada di tabel yang tepat.

Dalam ilmu basis data, terdapat sembilan bentuk normalisasi yang berbeda, termasuk 1NF, 2NF, 3NF, EKNF, BCNF, 4NF, 5NF, DKNF, dan 6NF. Normalisasi ini membantu mencegah masalah seperti anomali INSERT, DELETE, dan UPDATE yang dapat merugikan sistem secara keseluruhan.


Anomali Insert

Ini terjadi ketika tidak memungkinkan untuk memasukkan beberapa jenis data secara langsung ke dalam database karena ketergantungan antara entitas atau atribut yang tidak terpenuhi. Misalnya, dalam tabel yang belum dinormalisasi dengan baik, mungkin tidak memungkinkan untuk memasukkan data baru tentang entitas tertentu kecuali data terkait lainnya juga dimasukkan.

Anomali Delete

Ini terjadi ketika penghapusan data menyebabkan kehilangan informasi yang diperlukan atau kehilangan beberapa data yang seharusnya tidak dihapus. Dalam basis data yang tidak terstruktur dengan baik, penghapusan satu entitas atau atribut tertentu dapat secara tidak sengaja menghapus informasi yang penting atau berhubungan.

Anomali Update

Ini terjadi ketika perubahan nilai dalam suatu entitas menyebabkan inkonsistensi data atau ketidaksesuaian dengan nilai di tempat lain. Dalam basis data yang belum dinormalisasi dengan baik, perubahan nilai dalam suatu atribut mungkin memengaruhi data yang tidak seharusnya terpengaruh, menyebabkan ketidakkonsistenan data.


Berikut adalah penjelasan singkat tentang masing-masing dari sembilan bentuk normalisasi dalam basis data:

1NF (First Normal Form)

Memastikan bahwa setiap sel dalam tabel hanya berisi nilai tunggal, tidak ada nilai yang berulang, dan setiap entitas memiliki atribut yang unik.

2NF (Second Normal Form)

Menghilangkan ketergantungan parsial dengan memastikan bahwa setiap atribut non-kunci sepenuhnya tergantung pada kunci utama tabel.

3NF (Third Normal Form)

Menghilangkan ketergantungan transitif di antara atribut dengan memastikan bahwa tidak ada atribut non-kunci yang tergantung pada atribut non-kunci lainnya.

EKNF (Elementary Key Normal Form)

Menyatakan bahwa setiap entitas harus memiliki kunci dasar dan tidak ada atribut yang tidak tergantung pada kunci dasar.

BCNF (Boyce-Codd Normal Form)

Memastikan bahwa setiap ketergantungan fungsional di dalam relasi telah dinyatakan terhadap kunci utama dan hanya kunci utama.

4NF (Fourth Normal Form)

Menyelesaikan masalah multivalued dependencies dalam relasi dengan memisahkan atribut multivalued ke dalam entitas terpisah.

5NF (Fifth Normal Form)

Mengatasi masalah ketergantungan join, di mana tidak ada ketergantungan fungsional yang dapat diwakili lebih baik dengan pemisahan entitas.

DKNF (Domain-Key Normal Form)

Menyatakan bahwa relasi dalam basis data memenuhi persyaratan ketergantungan fungsional, ketergantungan multivalued, dan ketergantungan join.

6NF (Sixth Normal Form)

Ini adalah bentuk normalisasi yang paling canggih di mana setiap fakta terhubung dengan setiap kunci kandidat potensial.

Penting untuk dicatat bahwa tidak semua database dapat dinormalisasi; hanya tipe "relational database" yang dapat mengalami proses normalisasi. Berbagai vendor DBMS seperti Oracle, MySQL, SQL Server, PostgreSQL, dan lainnya mendukung normalisasi database untuk memastikan kehandalan dan konsistensi data.


YouTube: ER Diagram with Intersection Table

Wednesday, October 18, 2023

Apa Itu Relation pada ERD? Mengapa Many-to-Many Tidak Baik Digunakan pada ERD?

Apa Itu Relation pada ERD?

Dalam konteks Entity-Relationship Diagram (ERD), "relation" merujuk pada hubungan antara entitas dalam basis data. ERD adalah model visual yang digunakan untuk menggambarkan hubungan antara berbagai entitas dalam sebuah sistem informasi atau basis data. "Relation" di sini tidak harus bermakna sama seperti dalam "relational database" yang merupakan jenis basis data yang paling umum digunakan. Istilah "relation" dalam ERD tidak merujuk secara khusus pada tabel atau keterhubungan dalam basis data relasional.

Dalam ERD, "relation" dapat berupa tautan antara dua atau lebih entitas yang menunjukkan bagaimana mereka terkait satu sama lain. Hubungan ini didefinisikan oleh kardinalitas dan jenis hubungan antar entitas. Terdapat beberapa jenis hubungan yang umumnya digunakan dalam ERD, antara lain:

  1. One-to-One (1:1): Satu entitas dari satu jenis terhubung dengan satu entitas dari jenis lainnya.
  2. One-to-Many (1:N): Satu entitas dari satu jenis terkait dengan banyak entitas dari jenis lainnya.
  3. Many-to-One (N:1): Banyak entitas dari satu jenis terkait dengan satu entitas dari jenis lainnya.
  4. Many-to-Many (N:N): Banyak entitas dari satu jenis terkait dengan banyak entitas dari jenis lainnya.

Pemahaman tentang "relation" dalam ERD memungkinkan pengguna untuk merancang struktur basis data yang sesuai dengan kebutuhan dan hubungan antar entitas yang akan disimpan dalam sistem. Melalui penggambaran grafis yang jelas dan pemodelan yang akurat, ERD membantu dalam merencanakan dan memvisualisasikan hubungan antar entitas, sehingga memudahkan pengembangan dan pemeliharaan basis data yang efisien.

Mengapa Many-to-Many Tidak Baik Digunakan pada ERD?

Pada dasarnya, Many-to-Many (N:N) bukanlah hubungan yang direkomendasikan dalam ERD karena dapat menyebabkan masalah saat merancang dan mengimplementasikan struktur basis data. Beberapa alasan mengapa Many-to-Many tidak dianggap ideal adalah sebagai berikut:

  1. Kesulitan dalam Implementasi: Banyak sistem basis data relasional tidak secara langsung mendukung hubungan Many-to-Many. Ini memerlukan mekanisme tambahan seperti tabel hubungan atau penggunaan teknik normalisasi untuk mengatasi hal ini.
  2. Kompleksitas Query: Query yang melibatkan hubungan Many-to-Many sering kali kompleks dan memerlukan operasi gabungan (join) yang intensif. Hal ini dapat memperlambat kinerja sistem, terutama saat basis data menjadi lebih besar.
  3. Kesulitan dalam Memahami dan Memelihara: Skema Many-to-Many sering kali sulit untuk dipahami dan dipelihara karena melibatkan tabel hubungan tambahan. Ini dapat menyebabkan kesulitan dalam mengelola dan memperbarui data.
  4. Ambiguitas dalam Keterkaitan: Dalam konteks bisnis yang spesifik, hubungan Many-to-Many dapat menyebabkan ambiguitas dalam menggambarkan bagaimana entitas terkait satu sama lain. Ini bisa membuat pemahaman terhadap logika bisnis yang mendasari lebih rumit.

Sebagai alternatif, hubungan Many-to-Many sering kali dipecah menjadi dua hubungan One-to-Many terpisah melalui entitas tambahan. Pendekatan ini membantu dalam mempermudah implementasi, pengelolaan, dan pemahaman hubungan antar entitas dalam basis data.


Apa Itu Primary Key, Foreign Key, dan Candidate Key?

Primary Key

Primary Key adalah sebuah nilai atau kolom dalam basis data yang secara unik  yang berfungsi untuk membedakan setiap baris atau entri dalam tabel secara eksklusif. Primary Key tidak boleh berisi nilai yang kosong (NULL), nilainya harus unik untuk setiap baris data, sehingga memungkinkan pengguna untuk mengidentifikasi, mengakses, dan memperbarui data dengan mudah.

Fungsi dari Primary Key adalah sebagai berikut:

  1. Keunikannya (Uniqueness): Menjamin bahwa setiap baris dalam tabel memiliki identitas yang unik.
  2. Identifikasi (Identification): Memungkinkan pengguna untuk dengan mudah mengidentifikasi dan membedakan setiap baris atau entitas dalam tabel.
  3. Integritas Data (Data Integrity): Mencegah duplikasi data atau data yang tidak valid untuk menjaga integritas data di seluruh database.
  4. Pengindeksan (Indexing): Membantu mempercepat proses pencarian dan pengindeksan data, sehingga memungkinkan akses data yang efisien.
  5. Integritas Referensial (Referential Integrity): Memelihara keutuhan referensial di antara tabel-tabel dalam basis data. Ini memastikan bahwa kunci dapat digunakan sebagai kunci asing dalam tabel lain guna membentuk hubungan yang konsisten dan teratur antara tabel-tabel terkait.

Contoh penggunaan Primary Key dalam ERD adalah sebagai berikut:

  1. ID pelanggan pada tabel pelanggan.
  2. Nomor pesanan pada tabel pesanan.
  3. Kode produk pada tabel produk.
  4. Nomor karyawan pada tabel karyawan.
  5. ID transaksi pada tabel transaksi.



Foreign Key

Foreign Key adalah sebuah kolom ataupun bisa banyak kolom, yang digunakan untuk mengidentifikasi data pada tabel yang direferensikan oleh Primary Key pada tabel lain. kolom atau kombinasi kolom yang berperan dalam mengidentifikasi data dalam satu tabel, yang merujuk pada Primary Key dalam tabel lain. Dengan demikian, Foreign Key digunakan untuk menjaga hubungan antara entitas dalam berbagai tabel dalam basis data.

Fungsi dari Foreign Key adalah sebagai berikut:

  1. Memelihara Integritas Referensial (Maintaining Referential Integrity): Membuat dan memelihara keterkaitan antara data dalam tabel yang berbeda, memastikan integritas referensial.
  2. Menetapkan Hubungan Antartabel (Establishing Table Relationships): Menghubungkan data antar tabel dalam basis data, memungkinkan pengguna untuk melakukan operasi penggabungan dan pengambilan data yang efisien.
  3. Mencegah Aksi yang Tidak Diinginkan (Preventing Unwanted Actions): Mencegah tindakan seperti penghapusan data yang dapat menyebabkan kehilangan referensi atau ketidaksesuaian antar data.
  4. Mengoptimalkan Kinerja (Optimizing Performance): Mempercepat proses pencarian dan manipulasi data antar tabel dengan memanfaatkan indeks yang terkait dengan Foreign Key.
  5. Memberikan Struktur pada Basis Data (Providing Database Structure): Membantu dalam pembentukan struktur yang terorganisir dan terkait antar tabel dalam basis data.

Contoh penggunaan Foreign Key dalam ERD adalah sebagai berikut:

  1. ID pelanggan pada tabel pesanan yang mengacu pada tabel pelanggan.
  2. ID produk pada tabel pesanan yang mengacu pada tabel produk.
  3. ID karyawan pada tabel penugasan yang mengacu pada tabel karyawan.
  4. ID departemen pada tabel karyawan yang mengacu pada tabel departemen.
  5. ID kategori pada tabel produk yang mengacu pada tabel kategori.



Candidate Key

Candidate Key adalah sebuah kolom atau sekumpulan kolom dalam sebuah tabel yang memiliki kemampuan untuk secara unik mengidentifikasi setiap baris atau rekaman dalam tabel tersebut. Candidate Key harus memenuhi dua kriteria utama, yaitu harus unik untuk setiap baris data dan harus minimal sehingga tidak ada subset lain dari kolom yang dapat memenuhi syarat unik tersebut.

Fungsi dari Candidate Key adalah sebagai berikut:

  1. Unik (Uniqueness): Setiap Candidate Key memiliki kemampuan untuk secara unik mengidentifikasi setiap baris atau entitas dalam sebuah tabel.
  2. Kandidat Primary Key (Potential Primary Key): Menjadi kandidat untuk dijadikan Primary Key, yang akan digunakan sebagai pengenal utama dari setiap baris dalam tabel.
  3.  Menjaga Konsistensi Data (Maintaining Data Consistency): Memastikan bahwa tidak ada duplikasi data yang tidak diinginkan dalam tabel.
  4. Mendukung Keterkaitan Data (Supporting Data Relationships): Memungkinkan penggunaan kunci untuk menghubungkan dan membangun hubungan antara tabel-tabel dalam basis data.
  5.  Integritas Data (Data Integrity): Memastikan integritas data dengan mengidentifikasi setiap baris secara unik dan memungkinkan operasi penggabungan data yang efisien.

Contoh penggunaan Candidate Key dalam ERD adalah sebagai berikut:

  1. Nomor telepon pada tabel pelanggan.
  2.  Email pada tabel pelanggan.
  3. Nomor identifikasi nasional pada tabel karyawan.
  4.  Kode pos pada tabel alamat.
  5. Nomor lisensi pada tabel kendaraan.



Kesimpulan

Dalam struktur basis data, terdapat tiga jenis kunci penting, yaitu Primary Key, Foreign Key, dan Candidate Key. Berikut adalah ringkasan singkat masing-masing:

  1. Primary Key: Digunakan untuk secara unik mengidentifikasi setiap baris dalam tabel. Ini memastikan keunikan dan integritas data, serta digunakan untuk mengaitkan tabel dengan tabel lain melalui Foreign Key.
  2. Foreign Key: Menghubungkan tabel dengan tabel lain dalam basis data dan merujuk pada Primary Key dari tabel tersebut. Ini memastikan hubungan antartabel dan menjaga integritas referensial.
  3. Candidate Key: Kandidat untuk menjadi Primary Key dan memiliki kemampuan unik untuk mengidentifikasi setiap baris dalam tabel. Ini membantu menjaga keunikan data dan mendukung integritas data dalam basis data.

Ketiganya memiliki peran penting dalam mendefinisikan struktur dan hubungan antar tabel dalam basis data, serta memastikan konsistensi dan integritas data. Dengan memahami perbedaan dan fungsi masing-masing kunci, pengguna dapat merancang dan mengelola basis data dengan lebih efisien dan efektif.

 

YouTube: Primary Key and Foreign Key in ERD

Thursday, October 12, 2023

Apa Itu Atribut, Entitas, dan Relasi dalam ERD?

Entity Relationship Diagram atau yang biasa dikenal dengan istilah ERD merupakan suatu diagram yang berbentuk dalam gambar beserta dengan simbol-simbol yang berfungsi untuk mengidentifikasikan tiap entitas dan atribut yang berada di dalamnya. Selain itu, ERD juga menjelaskan hubungan atau relasi dari entitas-entitas tersebut. ERD berfungsi untuk memberikan gambaran terhadap konsep-konsep dan kerangka dasar dalam pembuatan software.


  1. Entitas

Entitas adalah individu yang mewakili suatu obyek yang nyata dan dapat dibedakan dari sesuatu yang lain. Secara lebih rinci, Hoffer, dkk (2005) menjelaskan bahwa entitas dapat berupa seseorang, tempat, objek, kejadian atau suatu konsep. Pada ERD, sebuah entitas digambarkan dengan simbol berupa persegi panjang dengan  nama entitas di dalamnya yang ditulis dengan huruf kapital.

 

 

  1. Atribut

Komponen selanjutnya adalah atribut. Atribut adalah karakteristik (properti) yang mendeskripsikan suatu entitas. Pada ERD, sebuah atribut digambarkan dengan simbol lingkaran lonjong (elips) dengan nama atribut di dalamnya yang ditulis menggunakan huruf kapital untuk setiap awal kata dan dipisahkan oleh karakter garis bawah (_) apabila lebih dari satu kata.

 

 

  1. Relasi

Beberapa entitas yang berbeda dapat saling berkaitan dan dapat dihubungkan. Dalam sistem basis data, hubungan ini dinamakan relasi (relationship). Jadi, relasi menunjukkan adanya hubungan di antara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Pada ERD, sebuah relasi digambarkan dengan simbol belah ketupat dengan nama relasi berupa kata kerja di dalamnya yang ditulis menggunakan huruf  kapital untuk setiap awal kata dan dipisahkan oleh karakter garis bawah (_) apabila lebih dari satu kata.

 

 

Gambar 1. Contoh ERD sederhana





YouTube: How to Install MySQL in Windows 11

Denormalisasi Database

Denormalisasi adalah teknik optimisasi basis data di mana kita menambahkan data redundan ke satu atau lebih tabel. Ini dapat membantu menghi...