Minggu, 12 November 2023

Apa itu Denormalisasi


Denormalisasi adalah kebalikan dari normalisasi dalam desain basis data. Ini adalah proses di mana tabel-tabel yang telah dinormalisasi digabungkan atau dikombinasikan kembali menjadi struktur yang lebih sedikit normal, dengan tujuan meningkatkan kinerja sistem dan memudahkan eksekusi query. Denormalisasi bertentangan dengan prinsip normalisasi, yang mencoba mengurangi redundansi data dengan memisahkan data ke dalam tabel yang lebih kecil dan lebih terorganisir.

Beberapa alasan umum untuk menerapkan denormalisasi meliputi:

1. Kinerja Query
Dalam beberapa kasus, normalisasi dapat menghasilkan struktur tabel yang memerlukan penggabungan (join) yang kompleks dalam query, yang dapat memperlambat kinerja sistem. Denormalisasi dapat mengurangi jumlah join dan mempercepat eksekusi query.

2. Pemeliharaan yang Mudah
Denormalisasi dapat mempermudah pemeliharaan karena struktur tabel menjadi lebih sederhana dan lebih intuitif. Ini bisa mengurangi kompleksitas dalam pengembangan dan pemeliharaan basis data.

3. Penggunaan Ruang Penyimpanan yang Efisien
Dalam beberapa kasus, denormalisasi dapat mengurangi jumlah ruang penyimpanan yang dibutuhkan karena redundansi data dapat dikompresi.

4. Mengatasi Batasan Sistem
Dalam situasi di mana kinerja sistem menjadi prioritas utama dan redundansi data tidak menjadi masalah utama, denormalisasi dapat menjadi pilihan yang lebih baik.

Namun, ada konsekuensi yang perlu dipertimbangkan saat menerapkan denormalisasi:

1. Redundansi Data
Denormalisasi dapat menghasilkan redundansi data, yaitu duplikasi informasi di beberapa tempat. Ini dapat memperbesar ukuran basis data dan meningkatkan risiko inkonsistensi data.

2. Kesulitan dalam Pemeliharaan Kesintasan Data
Kesulitan dalam memastikan integritas referensial dan konsistensi data, karena perubahan pada satu tempat mungkin memerlukan pembaruan di beberapa tempat.

3. Ketidakpastian terkait Konsistensi Data
Dengan banyak salinan data, ada risiko ketidaksesuaian atau ketidakpastian terkait data yang berubah.

Penerapan denormalisasi harus dilakukan dengan bijak dan mempertimbangkan kebutuhan spesifik aplikasi dan lingkungan sistem. Keputusan untuk menerapkan normalisasi atau denormalisasi harus didasarkan pada pertimbangan kinerja, kebutuhan pemeliharaan, dan desain aplikasi secara keseluruhan.


 

Sabtu, 11 November 2023

Primary Key, Foreign Key dan Candidate Key



 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. 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? jawabannya adalah NIM yang pastinya lebih cocok untuk dijadikan ‘tanda pengenal’ si mahasiswa.

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.


Berikut ini adalah contoh Primary Key:

1. Kode Produk: Dalam tabel "Produk," kolom "Kode Produk" bisa menjadi primary key untuk mengidentifikasi setiap produk yang dijual.

2. Nomor Karyawan: Dalam tabel "Karyawan," kolom "Nomor Karyawan" bisa menjadi primary key untuk mengidentifikasi setiap karyawan.

3. Nomor Kendaraan: Dalam tabel "Kendaraan," kolom "Nomor Kendaraan" bisa menjadi primary key untuk mengidentifikasi setiap kendaraan dalam sebuah perusahaan.

4. Nomor Pesanan: Dalam tabel "Pesanan," kolom "Nomor Pesanan" bisa menjadi primary key untuk mengidentifikasi setiap pesanan yang ditempatkan oleh pelanggan.


5. ID Pelanggan: Dalam tabel "Pelanggan," kolom "ID Pelanggan" bisa digunakan sebagai primary key untuk mengidentifikasi setiap pelanggan secara unik.

2.Foreign Key

Foreign key adalah sebuah atribut atau sebuah gabungan dari atribut yang terdapat di dalam sebuah tabel dan digunakan untuk menciptakan hubungan atau relasi dari dua tabel.

Dalam dunia database, keberadaan dan penggunaan dari foreign key ini akan merujuk pada sebuah kunci primer dimana posisinya terdapat pada tabel pertama atau bisa juga dikenal dengan tabel master. Kunci asing ini bisa berlaku penggunaannya dalam pengolahan relasional database.

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.

Berikut ini adalah contoh Foreign Key:

1. ID Pelanggan (dalam tabel Pesanan): Dalam tabel "Pesanan," kolom "ID Pelanggan" mungkin berfungsi sebagai foreign key yang merujuk pada primary key "ID Pelanggan" dalam tabel "Pelanggan." Hal ini digunakan untuk menghubungkan setiap pesanan dengan pelanggan yang melakukan pesanan tersebut.

2. ID Kategori Produk (dalam tabel Produk): Dalam tabel "Produk," kolom "ID Kategori Produk" bisa berperan sebagai foreign key yang merujuk ke primary key "ID Kategori Produk" dalam tabel "Kategori Produk." Ini membantu dalam mengkategorikan setiap produk sesuai dengan kategori yang sesuai.

3. ID Supervisor (dalam tabel Karyawan): Dalam tabel "Karyawan," kolom "ID Supervisor" mungkin berfungsi sebagai foreign key yang merujuk pada primary key "ID Karyawan" dalam tabel yang sama (Karyawan). Hal ini digunakan untuk menunjukkan hubungan hierarki antara karyawan dan supervisor mereka dalam organisasi.

4. ID Kota (dalam tabel Alamat Pelanggan): Dalam tabel "Alamat Pelanggan," kolom "ID Kota" bisa digunakan sebagai foreign key yang merujuk ke primary key "ID Kota" dalam tabel "Kota" atau "Daerah." Ini membantu dalam menghubungkan alamat pelanggan dengan kota atau daerah tempat mereka tinggal.

5. ID Pemasok (dalam tabel Pembelian): Dalam tabel "Pembelian," kolom "ID Pemasok" bisa berperan sebagai foreign key yang merujuk ke primary key "ID Pemasok" dalam tabel "Pemasok." Hal ini digunakan untuk menghubungkan setiap pembelian dengan pemasok yang menyediakan barang atau layanan.

3.Candidate Key

Candidate Key adalah satu atau beberapa  atribut unik yang salah satu bisa menjadi kunci primer.  Artinya atribut  kunci kandidat  (calon kunci) adalah salah satu dari beberapa atribut objek yang masing-masingnya memiliki nilai unik (superkey minimal) dalam tabel basis data. Salah satu dari atribut kunci kandidat (candidate-key) tersebut akan menjadi Kunci primer (Primary Key) dan yang tidak terpilih disebut kunci alternatif. OLeh karena alasan tersebut Candidate key (kunci kandidat) tertentu berkaitan erat dengan kunci utama (primary key), kunci sekunder  atau kunci alternatif.

Berikut ini adalah contoh Candidate Key:

1.Nomor Karyawan (dalam tabel Karyawan): Dalam tabel "Karyawan," kolom "Nomor Karyawan" dapat dianggap sebagai candidate key karena setiap nomor karyawan harus unik, dan Anda dapat menggunakannya sebagai primary key untuk mengidentifikasi karyawan.

2.Nomor Pesanan (dalam tabel Pesanan): Dalam tabel "Pesanan," kolom "Nomor Pesanan" bisa menjadi candidate key karena nomor pesanan harus unik untuk setiap pesanan, dan Anda dapat menggunakannya sebagai primary key.

3.Nomor ID Pelanggan (dalam tabel Pelanggan): Dalam tabel "Pelanggan," kolom "Nomor ID Pelanggan" bisa menjadi candidate key karena setiap nomor ID pelanggan harus unik, dan Anda dapat menggunakannya sebagai primary key.

4.Nomor Paspor (dalam tabel Penumpang): Dalam tabel "Penumpang" pada sistem penerbangan, kolom "Nomor Paspor" bisa menjadi candidate key karena nomor paspor adalah identifikasi yang unik untuk setiap penumpang.

5.Nomor Serial Produk (dalam tabel Produk): Dalam tabel "Produk," kolom "Nomor Serial Produk" bisa dianggap sebagai candidate key karena nomor seri produk harus unik untuk setiap produk yang dijual.



 Relation Pada ERD



Relation Pada ERD

Relasi dalam ERD adalah hubungan yang terjadi antara satu atau lebih entitas. Relasi sendiri sering disebut dengan proses. Komponen ini digambarkan dengan lambang belah ketupat. Terdapat tiga jenis relasi yang digunakan dalam ERD dan perlu kamu ketahui, berikut adalah jenisnya.

Berikut ini adalah jenis hubungan dalam ERD:

1. Relasi Satu-ke-Satu (One-to-One): Relasi satu-ke-satu terjadi ketika satu entitas dari satu jenis terkait dengan satu entitas dari jenis lainnya. Contoh relasi satu-ke-satu adalah hubungan antara entitas “Mahasiswa” dan “Nomor Identitas Mahasiswa”, di mana setiap mahasiswa memiliki nomor identitas unik.

2. Relasi Satu-ke-Banyak (One-to-Many): Relasi satu-ke-banyak terjadi ketika satu entitas dari satu jenis terkait dengan banyak entitas dari jenis lainnya. Contoh relasi satu-ke-banyak adalah hubungan antara entitas “Departemen” dan “Karyawan”, di mana satu departemen dapat memiliki banyak karyawan.

3.Relasi Banyak-ke-Banyak (Many-to-Many): Relasi banyak-ke-banyak terjadi ketika banyak entitas dari satu jenis terkait dengan banyak entitas dari jenis lainnya. Namun, dalam desain database, relasi banyak-ke-banyak tidak dapat ditangani secara langsung. Untuk menangani relasi banyak-ke-banyak, biasanya diperlukan entitas terpisah yang disebut entitas relasi atau tabel hubungan. Contoh relasi banyak-ke-banyak adalah hubungan antara entitas “Mahasiswa” dan “Mata Kuliah”, di mana banyak mahasiswa dapat mengambil banyak mata kuliah, dan sebaliknya.

Relasi dalam ERD membantu menggambarkan bagaimana data akan disimpan, diorganisir, dan diakses dalam basis data. Dengan menggunakan notasi dan simbol khusus, ERD membantu pengembang dan analis sistem untuk memahami dan merencanakan struktur database dengan lebih baik.

Mengapa many-to-many tidak baik digunakan pada ERD

Hubungan Many-to-Many dalam Entity-Relationship Diagram (ERD) memiliki beberapa keterbatasan dan biasanya tidak direkomendasikan karena dapat menyebabkan masalah dalam perancangan dan pemeliharaan database.

Berikut adalah beberapa alasan mengapa Many-to-Many tidak baik digunakan dalam ERD:


1. Kesulitan dalam Implementasi: Basis data relasional, seperti MySQL, PostgreSQL, dan Oracle, tidak mendukung relasi many-to-many langsung. Anda memerlukan tabel perantara (atau tabel penghubung) untuk merepresentasikan hubungan ini dalam desain basis data.

2. Ambiguitas Data: Hubungan many-to-many dapat menimbulkan ambiguitas karena dapat sulit untuk menentukan kapan dan bagaimana data seharusnya disimpan. Misalnya, jika Anda memiliki hubungan langsung many-to-many antara “Mahasiswa” dan “Mata Kuliah”, bagaimana Anda menyimpan nilai-nilai atribut tambahan, seperti nilai mahasiswa dalam mata kuliah tertentu?

3. Kekurangan Struktur Data: Desain many-to-many langsung dapat menyebabkan duplikasi data dan kurangnya normalisasi dalam struktur basis data. Normalisasi adalah proses pengorganisasian data dalam basis data relasional agar data tidak mengalami redudansi yang tidak diperlukan. Normalisasi membantu meningkatkan integritas dan efisiensi basis data.

4. Kesulitan dalam Pemahaman: ERD yang mencakup hubungan many-to-many langsung bisa menjadi sulit dipahami oleh pengembang dan pengguna yang berinteraksi dengan diagram tersebut. Penggunaan tabel perantara membantu membuat model lebih jelas dan lebih mudah dimengerti.

5. Fleksibilitas dan Pengelolaan Hubungan: Penggunaan tabel perantara memberi fleksibilitas dalam manajemen hubungan many-to-many. Anda dapat menyimpan data tambahan terkait dengan hubungan tersebut dalam tabel perantara, menciptakan struktur data yang lebih baik dan lebih terorganisir.

Oleh karena itu, dalam desain basis data relasional, adalah praktik terbaik menggunakan tabel perantara (tabel hubungan) untuk menangani hubungan many-to-many. Tabel ini memungkinkan untuk mengatur data dengan cara yang lebih terstruktur, efisien, dan mudah dimengerti.

Atribut, Entitas, dan Relasi dalam ERD




Entity Relationship Diagram (ERD)

Secara umum ERD adalah sebuah diagram yang digunakan untuk merancang suatu sistem database dengan menghubungkan objek dan atributnya secara detail, dengan tujuan agar sistem databse tersebut lebih rapi dan terstruktur, kemudian untuk meningkatkan fleksibilitas, menjadikan sebuah konsep yang dapat dengan mudah dipahami serta menjadikan sarana komunikasi yang efektif.

Komponen dalam ERD

Untuk menciptakan ERD database diperlukan banyak komponen beserta beberapa komponen utama. Berikut ini adalah empat komponen utama ERD beserta penjelasannya:

1. Entitas


Komponen yang pertama adalah entitas. Ini merupakan sekumpulan objek data yang unik dan saling berbeda. Dalam ERD, biasanya entitas digambarkan dalam simbol persegi panjang. Sementara itu, untuk entitas yang dinilai lemah atau disebut weak entity digambarkan dengan simbol persegi panjang kecil dalam persegi panjang besar.

Entitas merupakan objek data yang nyata. Meskipun begitu objek nyata ini dapat berwujud maupun tidak. Sebagai contoh untuk entitas yang berwujud adalah buku, perusahaan, atau orang. Objek entitas berwujud adalah sesuatu yang ada di dunia nyata dan dapat dirasakan menggunakan indera manusia.

Berbeda dengan objek abstrak atau tidak berwujud. Objek-objek demikian merupakan sesuatu yang tidak memiliki bentuk konkret di dunia nyata. Misalnya seperti pekerjaan, mata kuliah, peristiwa, dan sebagainya.

2. Atribut

Komponen ERD database  berikutnya adalah atribut. Atribut ERD adalah karakteristik yang menjelaskan suatu entitas. Dalam pemakaiannya, atribut dibedakan menjadi beberapa jenis. Tiga jenis di antaranya adalah sebagai berikut:

  • Atribut key. Jenis ini merupakan atribut unik yang berbeda. Contohnya seperti nomor induk mahasiswa atau nomor identitas lainnya.
  • Atribut composite. Atribut ini terdiri atas sub atribut dengan arti tertentu. Misalnya seperti nama lengkap yang dipisahkan menjadi nama depan dan belakang.
  • Atribut derivatif. Jenis derivatif merupakan jenis atribut yang didapatkan dari relasi lain. Biasanya atribut ini tidak selalu perlu ditulis dalam diagram ERD. Sebagai contoh seperti kelas, usia, atau selisih harga.
3. Relasi

Selain entitas dan atribut, relasi juga termasuk dalam komponen utama penyusun Entity Relationship Diagram. Relasi atau hubungan adalah keterkaitan antara beberapa entitas yang berasal dari himpunan lain. Dalam ERD, relasi juga terbagi atas beberapa jenis sebagai berikut:
  • One to one: jenis ini hanya memberikan satu relasi pada setiap entitas ke satu entitas lainnya. Sebagai contoh seperti relasi antara nomor induk siswa dan siswa.
  • One to many: relasi ini merupakan hubungan antar satu entitas dengan beberapa entitas atau sebaliknya. Misalnya seperti hubungan antara guru dengan murid-muridnya.
  • Many to many: jenis relasi ini menjelaskan hubungan beberapa entitas dengan beberapa entitas lainnya. Sebagai contoh seperti siswa dan ekstrakulikuler.
4. Garis

Komponen terakhir adalah garis. Dalam ERD sendiri garis digunakan untuk menunjukkan hubungan entitas dalam ERD. Selain menjadi penghubung, garis juga dapat menunjukkan alur atau flow dari suatu ERD

Normalisasi Pada ERD


                                              

Normalisasi dalam ERD (Entity-Relationship Diagram) adalah proses perancangan basis data yang digunakan untuk mengorganisasi data dalam sebuah database relasional. Tujuan normalisasi adalah untuk mengurangi duplikasi data, menghindari anomali data, dan memastikan bahwa basis data memiliki struktur yang efisien dan mudah dipelihara.

Normalisasi melibatkan pemecahan tabel-tabel dalam database ke dalam beberapa tabel yang lebih kecil, yang saling berhubungan melalui kunci asing. Ini membantu mengurangi redudansi data dan menghindari masalah seperti anomali update, delete, dan insert. Normalisasi juga membantu meminimalkan masalah ketidakkonsistenan data yang dapat muncul ketika data disimpan dalam struktur yang kurang terorganisir.

Proses normalisasi biasanya dilakukan dalam beberapa tahap, yang masing-masing diidentifikasi dengan bentuk normalisasi yang berbeda, seperti Normalisasi Tingkat Pertama (1NF), Normalisasi Tingkat Kedua (2NF), Normalisasi Tingkat Ketiga (3NF), dan seterusnya. Setiap tahap normalisasi memiliki aturan dan kriteria tertentu yang harus dipenuhi agar sebuah tabel dapat dianggap sudah ter-normalisasi pada tingkat tersebut.

Secara umum, normalisasi adalah bagian penting dari desain basis data yang baik dan membantu meningkatkan integritas data, efisiensi kueri, dan kemudahan pemeliharaan. Namun, terlalu banyak normalisasi juga bisa menghasilkan lebih banyak join tabel dalam kueri yang dapat mengurangi performa database, sehingga perlu ditemukan keseimbangan yang sesuai sesuai dengan kebutuhan aplikasi.

1. Normalisasi dalam Bentuk Pertama (1NF):
— Memastikan bahwa setiap kolom (atribut) dalam tabel hanya berisi data atomik, yaitu data yang tidak dapat dibagi lagi menjadi komponen yang lebih kecil.
— Setiap baris dalam tabel harus unik, biasanya dengan adanya atribut kunci utama yang membedakan setiap baris.

2. Normalisasi dalam Bentuk Kedua (2NF):
— Mencapai semua persyaratan 1NF.
— Menghilangkan dependensi parsial, yang berarti bahwa setiap atribut non-kunci harus sepenuhnya bergantung pada seluruh atribut kunci utama.

3. Normalisasi dalam Bentuk Ketiga (3NF):
— Mencapai semua persyaratan 2NF.
— Menghilangkan dependensi transitif, yaitu ketika sebuah atribut non-kunci bergantung pada atribut selain atribut kunci utama.

4. Bentuk Normalisasi Boyce-Codd (BCNF):
— Mencapai semua persyaratan 3NF.
— Setiap atribut non-kunci bergantung pada atribut kunci utama, dan tidak ada dependensi fungsional yang bertindak sebagai atribut kunci parsial.
— Ini adalah bentuk normalisasi yang lebih ketat daripada 3NF.

5. Normalisasi dalam Bentuk Keempat (4NF):
— Mencapai semua persyaratan BCNF.
— Mengatasi masalah multi atribut, di mana sebuah tabel memiliki dependensi fungsional yang melibatkan lebih dari satu atribut kunci.

6. Normalisasi dalam Bentuk Kelima (5NF):
— Mencapai semua persyaratan 4NF.
— Mengatasi masalah dependensi bergantung pada gabungan, di mana atribut bergantung pada gabungan beberapa atribut kunci utama.

Normalisasi membantu mengoptimalkan desain basis data untuk menghindari redudansi data yang tidak perlu, meningkatkan integritas data, dan memungkinkan database lebih mudah dikelola dan dipertahankan. Namun, proses normalisasi juga dapat menghasilkan lebih banyak tabel, yang memerlukan penggabungan tabel (JOIN) saat melakukan kueri, sehingga perlu mempertimbangkan trade-off antara normalisasi dan kinerja database.

Contoh proses normalisasi ERD dapat mencakup pemisahan entitas-entitas yang terkait erat ke dalam tabel-tabel terpisah dan mengelompokkan atribut-atribut yang saling tergantung ke dalam tabel-tabel yang sesuai. Dengan normalisasi ERD, desainer basis data dapat memastikan bahwa basis data mereka dirancang dengan cara yang optimal dan efisien, memungkinkan operasi pengolahan data yang cepat dan akurat.

https://ubpkarawang.ac.id/