Skip to content

Meeting 7

Struktur Database

Dalam basis data relasional, hubungan antar tabel adalah cara untuk menggambarkan bagaimana entitas atau data dalam satu tabel terkait dengan entitas atau data dalam tabel lain dengan Primary Key dan Foreign Key sebagai penghubung. Konsep hubungan ini penting dalam perancangan basis data, karena memungkinkan kita untuk mengorganisasi data dengan baik dan menghindari duplikasi informasi. Terdapat tiga jenis hubungan utama: one-to-one, one-to-many , dan many-to-many.

  • One-to-One Dalam hubungan one-to-one, setiap entitas dalam satu tabel berhubungan dengan satu entitas dalam tabel lain, dan sebaliknya. Ini berarti bahwa setiap data dalam satu tabel hanya memiliki satu pasangan yang cocok dalam tabel lain, dan sebaliknya.
    Contoh One-to-One

    tabel penduduk memiliki tabel kartu identitas yang berisi nomor indentifikasi yang unik untuk setiap penduduk sebagai contoh NIK, setiap NIK hanya terkait dengan satu penduduk, dan setiap penduduk hanya memiliki satu NIK

  • One-to-Many setiap entitas dalam satu tabel dapat terkait dengan banyak entitas dalam tabel lain, tetapi setiap entitas dalam tabel kedua hanya terkait dengan satu entitas dalam tabel pertama.
    Contoh One-to-Many

    Dalam kasus penjualan online, tabel product_category dapat memiliki hubungan on-to-many dengan tabel product. Ini berarti setiap kategori produk dapat memiliki banyak produk, tetapi setiap produk hanya terkait dengan satu kategori produk.

  • Many-to-Many banyak entitas dalam satu tabel dapat terkait dengan banyak entitas dalam tabel lain. Ini adalah jenis hubungan yang paling kompleks, dan biasanya diwakili melalui tabel penghubung (junction table).
    Contoh Many-to-Many

    Dalam kasus pemutar lagu, tabel song dapat memiliki hubungan many-to-many dengan tabel genre. Untuk menggambarkan hubungan ini, kita perlu tabel penghubung song_genre yang mencatat setiap lagu memiliki genre tertentu, dan sebaliknya setiap genre memiliki lagu tertentu.

Desain Database

Desain Database adalah proses penting dalam pengembangan sistem basis data yang melibatkan perancangan struktur dan organisasi basis data untuk memenuhi kebutuhan aplikasi yang akan digunakan. Ini mencakup beberapa aspek seperti normalisasi, pemodelan ER (Entity-Relationship), dan pengaturan desain yang efisien.

Tahapan Proses Desain Database
  • Pemahaman Kebutuhan: Pertama-tama, penting untuk memahami kebutuhan pengguna dan kebutuhan aplikasi. Ini mencakup menentukan data apa yang perlu disimpan, bagaimana data tersebut akan digunakan, dan bagaimana data akan diakses.
  • Perancangan Struktur Tabel: Selanjutnya, Anda merancang struktur tabel yang akan digunakan untuk menyimpan data. Ini termasuk menentukan tabel apa yang diperlukan, kolom apa yang akan ada di setiap tabel, dan tipe data yang akan digunakan untuk setiap kolom.
  • Normalisasi: Normalisasi adalah proses yang digunakan untuk mengorganisasi data dalam tabel agar data tetap konsisten dan menghindari anomali data seperti duplications, insertion, deletion, dan update anomalies. Normalisasi sering melibatkan pemecahan tabel yang besar menjadi tabel yang lebih kecil dan terkait.
  • Penggunaan Primary Key dan Foreign Key: Primary Key digunakan untuk mengidentifikasi secara unik setiap baris dalam sebuah tabel, sementara Foreign Key digunakan untuk menghubungkan tabel yang berbeda dalam basis data.
  • Pengoptimalan Kinerja: Desain database juga harus mempertimbangkan kinerja sistem. Ini melibatkan pemilihan indeks yang tepat, penggunaan tipe data yang sesuai, dan pemikiran tentang bagaimana data akan diakses dan dimanipulasi.

Pembuatan ERD

Pada sesi kali ini mari kita bersama-sama membuat ERD agar teman-teman memiliki pemahan yang lebih baik untuk desain Database.

  • Kita akan menggunakan drawsql untuk membuat ERD, klik disini untuk pergi ke drawsql
  • Buat tabel dengan nama tabel product_categories dan memiliki attribute:
    • id (Primary Key)
    • name
  • Buatlah tabel dengan nama products dengan attribute:
    • id (Primary Key)
    • product_category_id (Foreign Key)
    • name
    • price
    • stock
  • Buatlah tabel dengan nama tags dengan attribute:
    • id (Primary Key)
    • name
  • Buatlah relasi many-to-many dari tabel products dengan tabel tags untuk melengkapi pemahan tentang relasi many-to-many
Hasil Yang Di Harapkan

ERD

Optimasi Kinerja Database

Optimasi kinerja database adalah proses untuk meningkatkan efisiensi dan kecepatan operasi basis data. Hal ini penting karena performa yang buruk dapat menyebabkan aplikasi lambat dan waktu tanggapan yang lama, mengakibatkan pengalaman pengguna yang buruk.

Indeks

Indeks adalah struktur data yang digunakan dalam basis data untuk mempercepat pencarian, pengurutan, dan pemfilteran data. Indeks adalah daftar yang menghubungkan nilai-nilai dalam kolom dengan posisi fisik data dalam tabel.

Penggunaan Indeks
  • Meningkatkan Kecepatan Pencarian: Indeks memungkinkan database untuk dengan cepat menemukan data yang sesuai dengan kondisi pencarian.
  • Meningkatkan Kecepatan Pengurutan: Indeks mempercepat proses pengurutan data berdasarkan kolom tertentu.
  • Meminimalkan I/O Disk: Dengan mengurangi jumlah data yang harus dibaca dari disk, indeks dapat menghemat sumber daya I/O.

Tuning Query SQL

Tuning Query SQL adalah proses untuk meningkatkan efisiensi query SQL yang dieksekusi di dalam basis data. Tujuannya adalah untuk mengoptimalkan waktu eksekusi query dan mengurangi beban basis data.

Tuning Query SQL melibatkan
  • Pemilihan Kolom yang Tepat: Hanya memilih kolom yang diperlukan dalam SELECT statement.
  • Penggunaan Indeks: Memastikan query memanfaatkan indeks yang tersedia.
  • Optimasi Struktur Tabel: Menyusun tabel dan indeks dengan baik.
  • Penggunaan JOIN yang Efisien: Menggunakan jenis JOIN yang sesuai dan menghindari JOIN yang berlebihan.
  • Parameterisasi Query: Menggunakan parameter dalam query untuk menghindari SQL Injection dan meningkatkan reusabilitas query.
  • Menghindari Subquery yang Berlebihan: Mengganti subquery dengan JOIN jika mungkin.
  • Monitoring dan Profiling: Melacak dan menganalisis kinerja query secara berkala.