Basis Data Part 2: Pengantar RDBMS
(Relational Database Management System)

Dodit Suprianto
19 min readAug 29, 2021

--

Contoh arsitektur penerapan Database

1. Ikhtisar Basis Data

1.1 Apa yang dimaksud ”Database”

Saat ini, umumnya setiap orang menggunakan komputer dalam satu atau lain bentuk.

  • Komputer berbasis rumah sering digunakan untuk mengelola bisnis pribadi, memperbarui spreadsheet, atau menyelesaikan tugas sekolah. Yang lain menggunakannya untuk email, interaksi sosial dengan teman dan anggota keluarga, memantau Internet untuk berita, atau untuk hiburan.
  • Pemilik usaha kecil menggunakan spreadsheet dan/atau produk perangkat lunak seperti QuickBooks untuk melacak pengeluaran pribadi atau bisnis.
  • Lingkungan kantor harus mengumpulkan dan menyimpan serta mengelola informasi untuk berbagai topik atau subjek, seperti janji pelanggan atau klien, atau pesanan pelanggan.
  • Lingkungan bisnis harus mengelola cakupan data yang lebih luas mengenai informasi dan data yang diperlukan untuk menjalankan atau mengelola bisnis.
  • Pengguna yang menggunakan komputer di kantor pemerintah membutuhkan komputer untuk mengelola pekerjaan mereka. Bagi mereka yang bekerja sebagai analis di Departemen Pertahanan (DOD) atau di Komunitas Intelijen, sifat pekerjaan terus berkembang, mengharuskan analis untuk memantau atau melacak informasi atau data baru saat tersedia. Tim analitis terus-menerus menghadapi tanggung jawab untuk menganalisis bentuk informasi baru dan berkembang untuk mengidentifikasi dan mengekstrak informasi yang relevan menggunakan perangkat lunak yang tersedia bagi mereka. Seringkali, itu berarti memiliki tidak lebih dari produk Microsoft Office desktop mulai dari Excel hingga Microsoft Access.

Karena data yang dibutuhkan oleh pengguna atau komunitas pelanggan tumbuh dalam ukuran, kompleksitas, dan kepentingan, perawatan dan pemberian data tersebut memerlukan penggunaan sistem manajemen basis data (DBMS) untuk menyimpan, mengelola, dan melindunginya.

DBMS adalah paket perangkat lunak khusus yang dirancang untuk mendefinisikan dan mengelola data dalam satu atau lebih database. Basis data individual, pada gilirannya, mengelola definisi objek/tabel data di area subjek tertentu dan menyediakan akses pengguna yang terkontrol ke data tersebut.

Contoh DBMS termasuk Structured Query Language (SQL) Server, Oracle, dan Microsoft Access. Contoh SQL Server atau Oracle kemudian akan berfungsi sebagai tuan rumah, misalnya, database personalia.

1.2 Jaminan Akurasi Dan Ketersediaan Data

DBMS pada dasarnya dibangun untuk menjamin keakuratan dan ketersediaan data saat terjadi pembaruan. Pembaruan dibundel sebagai transaksi aplikasi yang menerapkan semua pembaruan data dalam unit kerja logis yang terkait dengan aplikasi tersebut. Pembaruan ini harus dilakukan atas dasar semua atau tidak sama sekali; baik semua pembaruan diterapkan, atau, jika terjadi kesalahan logis atau basis data, tidak ada pembaruan yang diterapkan, meninggalkan semua data dalam keadaan konsisten bersih dari perspektif pengguna dan aplikasi.

Perangkat lunak aplikasi memperbarui database mengeluarkan perintah ke database untuk memulai unit kerja. Jika semua pembaruan berhasil diselesaikan, panggilan komit dikeluarkan untuk membuat pembaruan tersebut permanen. Jika dalam proses membuat pembaruan tersebut ditemukan beberapa kondisi yang mencegah pembaruan terjadi, panggilan rollback dibuat untuk membalikkan pembaruan apa pun dan mengembalikan data dalam keadaan logis yang mewakili data di awal transaksi.

Misalnya, pengguna mungkin masuk ke sistem perbankan mereka dan memulai pembaruan untuk memindahkan dana dari tabungan mereka ke rekening giro.

  • Setelah log in dan memulai transfer, perangkat lunak yang melakukan pembaruan terlebih dahulu mengeluarkan pembaruan basis data untuk mendebit rekening tabungan dengan jumlah yang ditentukan.
  • Jika pembaruan itu berhasil, pembaruan akan dikeluarkan untuk mengkredit rekening giro dengan jumlah itu.
  • Setelah berhasil diselesaikan, panggilan komit dikeluarkan untuk melakukan perubahan dan melepaskan kunci basis data pada baris yang diperbarui. Pesan yang sesuai akan dikirim ke pengguna yang mengonfirmasi bahwa transfer dana telah selesai.
  • Namun, jika pembaruan ke rekening giro gagal (misalnya, pengguna memasukkan nomor rekening tabungan yang salah), panggilan kembali akan dilakukan untuk membalikkan semua pembaruan yang dibuat, dan pesan kesalahan yang sesuai akan dikirim ke pengguna. Akibatnya, database dan data dasar dibiarkan dalam keadaan bersih dan konsisten.

Sifat ACID (atomisitas, konsistensi, isolasi, dan daya tahan = [tomicity, consistency, isolation, & durability]) sistem database dan transaksi menjamin keakuratan dan ketersediaan data.

1.2.1 Atomisitas

Atomicity adalah persyaratan semua atau tidak sama sekali saat melakukan pembaruan. Baik semua pembaruan yang dilakukan selama unit atau pekerjaan berhasil atau tidak ada pembaruan yang dilakukan. Perlindungan ini mencakup pembaruan pada unit kerja atau transaksi, kesalahan input/output perangkat, kesalahan jaringan, dan kegagalan daya.

1.2.2 Konsistensi

Konsistensi mengharuskan transaksi mengambil database dari satu keadaan valid ke yang lain. Setiap dan semua pembaruan harus sesuai dan menerapkan batasan integritas referensial yang ditentukan. (Kendala integritas referensial mendefinisikan dan mengontrol hubungan satu-ke-banyak antara tabel dalam database).

1.2.3 Isolasi

Isolasi pembaruan basis data melibatkan mekanisme yang memungkinkan beberapa pengguna secara bersamaan mengakses dan memperbarui elemen data yang sama dalam basis data secara bersamaan.

Saat pembaruan basis data terjadi, kunci ditempatkan secara transparan pada baris yang diperbarui yang mencegah pengguna berikutnya untuk mengakses atau memperbarui baris tersebut hingga proses pembaruan melakukan pembaruan tersebut dan kunci dilepaskan. Setiap proses yang meminta akses ke baris yang sedang diperbarui akan ditahan/ditunda hingga titik komit pembaru dibuat.

1.2.4 Daya Tahan

Fitur/persyaratan ini memastikan bahwa pembaruan apa pun yang dilakukan oleh suatu transaksi (yaitu, unit pekerjaan yang diselesaikan dan pembaruan yang dilakukan) akan bertahan dari kesalahan atau masalah sistem berikutnya, misalnya, kegagalan sistem atau kegagalan daya atau disk.

Sistem database memiliki mekanisme/fitur yang mendukung full database backup. Selain itu, sistem basis data mencatat pembaruan ke perangkat nonvolatil (file log basis data) saat pembaruan dibuat ke basis data. Jika/Bila perlu, database dapat dibangun kembali/dipulihkan sepenuhnya dengan terlebih dahulu menggunakan cadangan database untuk memulihkan semua data ke titik cadangan dibuat, kemudian menggunakan log database untuk menerapkan kembali semua pembaruan yang dibuat ke database setelah titik waktu tersebut.

1.2 Perubahan Dinamis Desain

Sistem manajemen basis data relasional (RDBMS) mewakili generasi ketiga produk DBMS. Sebagai salah satu fitur utama mereka, produk ini memberi pengguna kemampuan untuk menambahkan atau melepaskan kolom secara dinamis ke data atau membuat perubahan lain secara langsung saat database online dan diperbarui oleh pengguna. Itu memberikan perubahan signifikan pada sistem hierarkis generasi kedua yang harus diturunkan dan dimodifikasi secara off-line untuk menerapkan perubahan. Sistem generasi ketiga mencakup produk seperti SQL Server, Oracle, dan Microsoft Access.

1.3 Query Dinamis — Data Apa Pun, Kapan Saja

Meskipun produk RDBMS membuat peningkatan besar dengan memungkinkan perubahan dinamis, peningkatan yang lebih signifikan adalah melalui implementasi bahasa SQL.

Ini memberi pengguna kemampuan untuk meminta data apa pun, kapan saja. Misalnya, setiap pengguna yang berwenang bisa terhubung ke database dan, menggunakan salah satu dari beberapa pengelola kueri yang biasanya tersedia, mengeluarkan perintah untuk mengambil data menggunakan sintaks perintah, di mana {} menunjukkan parameter opsional:

"SELECT <column name(s)> FROM <table name> {WHERE <column name> = <value>};"

Sebagai contoh,

"SELECT First_Name, Last_Name FROM EMPLOYEE WHERE DEPT-NUMBER = 12;"

akan mengambil nama depan dan belakang dari tabel EMPLOYEE di mana kolom DEPT-NUMBER tabel itu memiliki nilai 12.

SQL memiliki, tentu saja, banyak variasi untuk memperluas kekuatan dan fleksibilitas dari perintah yang dikeluarkan. Beberapa contoh yang lebih sederhana adalah

"SELECT * FROM EMPLOYEE;"

akan mengambil/menampilkan semua kolom dalam tabel EMPLOYEE;

"SELECT COUNT(*) FROM EMPLOYEE;"

akan menampilkan jumlah Karyawan di tabel EMPLOYEE; dan

"SELECT MAX(Annual_Salary) FROM EMPLOYEE;"

akan menampilkan gaji tahunan tertinggi yang ditemukan di tabel EMPLOYEE.

Kekuatan SQL lainnya adalah kemampuan membuat “View” dari dua atau lebih tabel yang membuat objek virtual untuk dikueri. Misalnya, View dapat dibuat bernama “Department_Employee” yang menggabungkan tabel Department dengan tabel Employee yang sesuai dengan kolom DepartmentID di Department dengan DepartmentID di Employee.

Dengan menggunakan tabel virtual ini,

"SELECT * FROM DEPARTMENT_EMPLOYEES WHERE DepartmentID = 12;"

Selain itu, setiap vendor akan menyertakan peningkatan SQL mereka sendiri (fitur yang melampaui standar) untuk mendukung keunggulan kompetitif produk mereka. Untungnya, dari sudut pandang pengembang, 90%–95% keterampilan SQL mereka akan ditransfer/diterapkan saat bekerja dengan produk RDBMS lain.

1.4 Penegakan Integritas Referensial (Referential Integrity Enforcement)

Sebuah database akan berisi beberapa tabel, masing-masing berisi informasi tentang satu jenis informasi yang akan disimpan dalam database. Misalnya, database karyawan mungkin memiliki tabel untuk departemen, satu untuk karyawan, dan satu lagi untuk pengurangan karyawan. Setiap tabel berisi informasi rinci tentang item/objek tertentu, masing-masing berisi minimal informasi berikut:

  1. Department
  • DepartmentID
  • DepartmentName
  • DepartmentManagerID

2. Employee

  • EmployeeID
  • EmployeeFirstName
  • EmployeeMiddleName
  • EmployeeLastName
  • EmployeeWorkPhoneNumber
  • EmployeeHomePhoneNumber
  • EmployeeStreetAddress
  • EmployeeCity
  • EmployeeState
  • EmployeeZipCode
  • DepartmentID

3. Employee-Deduction

  • EmployeeID
  • DeductionCode
  • DeductionAmount

Saat tabel dimuat, informasi untuk setiap kejadian dimuat sebagai baris di tabel masing-masing dan setiap elemen/nilai data dikaitkan dengan kolomnya masing-masing di tabel. Misalnya, baris dalam tabel departemen mungkin memiliki konten berikut:

Melihat tabel karyawan, baris pertama untuk karyawan yang ditugaskan ke departemen tersebut di atas mungkin muncul sebagai berikut:

Perhatikan bahwa hubungan antara baris Departemen untuk unit Pemasaran Virginia Utara dan baris Karyawan untuk Albert Smith ditentukan oleh fakta bahwa DepartmentID, “SalesArea1,” disimpan sebagai nilai untuk kolom DepartmentID di tabel Karyawan. Ini menggambarkan hubungan satu-ke-banyak antara Departemen dan Karyawan dan disebut sebagai Integritas Referensial.

Integritas Referensial merupakan dasar integritas data dan biasanya diaktifkan dan ditegakkan oleh RDBMS saat data dimasukkan atau dihapus dari tabel individual. Sebagai contoh

  • Setiap nilai DepartmentID yang diberikan kepada karyawan baru harus sesuai dengan nilai DepartmentID di tabel Department.
  • Setiap baris Pengurangan Karyawan (Employee-Deduction) baru harus berisi ID Karyawan yang valid/cocok.
  • Lebih penting lagi, jika/ketika seorang karyawan diberhentikan, semua baris Pengurangan Karyawan akan dihapus secara otomatis tanpa programmer harus mengingat untuk melakukan fungsi tersebut.

Note.

Ada banyak yang dibahas tentang database seperti konsep backup/recovery, failover, typical installation. Namun untuk saat ini kita tidak fokus ke arah sana.

2. Normalisasi Data (Data Normalization)

2.1 Pendahuluan

Langkah pertama dalam merancang database adalah memutuskan apa yang perlu dilakukan dengan mengidentifikasi kebutuhan data pengguna. Kedengarannya tampak sederhana, dan bisa jadi, tetapi biasanya tidak. Mengapa? Itu karena pengguna, orang-orang yang sistemnya sedang dibangun, jarang dapat dengan jelas menggambarkan apa yang mereka butuhkan. Itu cukup buruk, tetapi masalah sering diperparah secara tidak sengaja oleh staf pengolah data (DP). Orang-orang baik ini, biasanya cukup berpengetahuan dalam sistem saat ini, mengetahui secara detail data apa yang ada, dan bagaimana program yang ada bekerja. Namun, apa yang jarang sesuai dengan apa yang dibutuhkan di sistem masa depan. Seringkali, pengetahuan mendalam tentang bagaimana fungsi sistem menyebabkan visi terowongan di staf DP serta pengguna dan menghambat pemikiran kreatif dalam menentukan persyaratan untuk sistem baru yang disempurnakan.

Singkatnya, tim desain sistem, yang terdiri dari perwakilan pengguna, analis komputer, dan/atau pemrogram, dan tim database/administrasi data, tidak dapat berkomunikasi secara efektif.

Sebuah proses yang disebut normalisasi dapat memecahkan masalah ini. Dengan menggunakan teknik ini, pengguna menggambarkan apa kebutuhan mereka tanpa menggunakan kata-kata dan istilah-istilah yang umum di DP. DP dan staf administrasi data berpartisipasi dalam diskusi ini, mencatat kebutuhan data sambil melayani sebagai penasihat dalam analisis dan memberikan wawasan mereka tentang apa yang mungkin terdiri dari sistem baru. Setelah itu, ketika semua persyaratan data telah diidentifikasi, staf teknis kemudian dapat memutuskan detail untuk desain basis data fisik yang memuaskan.

Teknik analisis ini tidak akan mudah dipahami dan digunakan oleh pengguna akhir. Namun, hanya beberapa konsep dan definisi dasar yang diperlukan untuk memulai. Dengan pengenalan dan pembinaan yang tepat, pengguna dapat berpartisipasi penuh sebagai anggota tim desain. Masukan mereka sangat penting untuk proses ini sehingga banyak perusahaan telah menciptakan posisi pengguna penuh waktu sebagai analis data/database untuk menerjemahkan persyaratan ke dalam spesifikasi entitas/atribut untuk tim pengembangan teknis.

Entitas hanyalah kumpulan elemen data yang pada akhirnya dapat diimplementasikan dalam tabel (bila menggunakan sistem manajemen basis data relasional) atau sebagai file (jika diimplementasikan dalam sistem file datar). Demikian pula, atribut merujuk pada apa yang akan menjadi kolom dalam tabel (saat menggunakan sistem manajemen basis data relasional), atau bidang dalam baris saat diimplementasikan menggunakan sistem file datar. Kami sengaja mengacu pada elemen data sebagai entitas dan atribut dalam fase desain sebagian besar untuk menghindari istilah yang mungkin menyiratkan keputusan implementasi fisik. Terlalu dini untuk memikirkan desain dan implementasi fisik. Dengan menggunakan proses ini, pertama-tama kita akan menganalisis elemen data apa yang kita butuhkan dengan membuat model data yang dinormalisasi; selanjutnya, kami akan menganalisis bagaimana data tersebut digunakan; dan akhirnya, kami akan membuat keputusan desain fisik untuk menghasilkan hasil yang akan memenuhi persyaratan data pengguna dalam kerangka waktu yang dapat diterima.

Bagaimana teknik ini berbeda dari yang lain? Kuncinya ada di komunikasi. Pengguna dapat, untuk pertama kalinya, berkonsentrasi pada sesuatu yang mereka ketahui dan pahami — deskripsi informasi yang mereka gunakan untuk melakukan pekerjaan mereka — tanpa menggunakan terminologi teknis apa pun.

Staf DP juga mendapat manfaat dengan mendengarkan deskripsi kebutuhan data pengguna dalam bahasa normalisasi yang umum. Pada titik selanjutnya dalam desain, persyaratan data ini akan diterjemahkan oleh staf teknis ke dalam daftar spesifik elemen data yang diperlukan untuk setiap proses (atau program).

Teknik ini sering disebut sebagai pemodelan entitas/hubungan (entity/relationship modeling).

2.2 Normalisasi Database

2.2.1 Apa itu Normalisasi?

Normalisasi merupakan sebuah teknik logical desain dalam sebuah basis data yang mengelompokkan atribut dari berbagai entitas dalam suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi/pengulangan data) serta sebagian besar ambiguity bisa dihilangkan.

Atau pengertian singkatny, Normalisasi Databse adalah proses pengelompokan atribut data yang membentuk entitas sederhana, nonredundan, fleksibel, dan mudah beradaptasi, Sehingga dapat dipastikan bahwa database yang dibuat berkualitas baik.

Normalisasi database terdiri dari banyak bentuk, dalam ilmu basis data ada setidaknya 9 bentuk normalisasi yang ada yaitu 1NF, 2NF, 3NF, EKNF, BCNF, 4NF, 5NF, DKNF, dan 6NF.

Database 1NF, 2NF, dan 3NF akan sering ditemui ketika akan membuat sebuah database yang optimal. Jika Anda ingin menjadi seorang Database Administrator (DBA), harus tahu bagaimana cara normalisasi database yang optimal. Misalkan suatu saat ketika website yang Anda buat mengalami penurunan kinerja, mungkin Anda akan ditanya apakah database tersebut sudah dinormalisasi dengan benar.

2.2.2 Tujuan Normalisasi

Tujuannya adalah untuk menghilangkan dan mengurangi redudansi data dan tujuan yang kedua adalah memastikan dependensi data (Data berada pada tabel yang tepat). Jika data dalam database tersebut belum di normalisasi maka akan terjadi 3 kemungkinan yang akan merugikan sistem secara keseluruhan.

  • INSERT Anomali : Situasi dimana tidak memungkinkan memasukkan beberapa jenis data secara langsung di database.
  • DELETE Anomali: Penghapusan data yang tidak sesuai dengan yang diharapkan, artinya data yang harusnya tidak terhapus mungkin ikut terhapus.
  • UPDATE Anomali: Situasi dimana nilai yang diubah menyebabkan inkonsistensi database, dalam artian data yang diubah tidak sesuai dengan yang diperintahkan atau yang diinginkan.

2.2.3 Data yang dapat dinormalisasi

Tidak semua database bisa dinormalisasi, hanya tipe “relational database“ yang bisa dinormalisasi. Banyak vendor DBMS (Database Management System) diantaranya Oracle, MySQL, SQL Server, PostgreSQL, dll.

2.2.4 Tahapan Normalisasi

Untuk melakukan normalisasi database kita harus mengidentifikasi data seperti apa yang akan disimpan, dan berikut adalah contohnya:

1. Bentuk Tidak Normal (unnormalize)

Bentuk tidak normal (unnormalized) merupakan kumpulan data yang direkam tidak ada keharusan dengan mengikuti suatu format tertentu.

Pada bentuk tidak normal terdapat repeating group (Pengulangan Group), sehingga pada kondisi ini data menjadi permasalahan dalam melakukan manipulasi data (insert, update, dan delete) atau biasa disebut anomali.

2. 1NF / First Normal Form

1NF mensyaratkan beberapa kondisi dalam sebuah database, berikut adalah fungsi dari bentuk normal pertama ini.

  • Menghilangkan duplikasi kolom dari tabel yang sama.
  • Buat tabel terpisah untuk masing-masing kelompok data terkait dan mengidentifikasi setiap baris dengan kolom yang unik (primary key).

Pada intinya bentuk normalisasi 1NF ini mengelompokkan beberapa tipe data atau kelompok data yang sejenis agar dapat dipisahkan sehingga anomali data dapat di atasi.

Contoh adalah ketika kita ingin menghapus, mengupdate, atau menambahkan data peminjam, maka kita tidak bersinggungan dengan data buku atau data penerbit. Sehingga inkonsistensi data dapat mulai di jaga.

3. 2NF

Syarat untuk menerapkan normalisasi bentuk kedua ini adalah data telah dibentuk dalam 1NF, berikut adalah beberapa fungsi normalisasi 2NF.

  • Menghapus beberapa subset data yang ada pada tabel dan menempatkan mereka pada tabel terpisah.
  • Menciptakan hubungan antara tabel baru dan tabel lama dengan menciptakan foreign key.
  • Tidak ada atribut dalam tabel yang secara fungsional bergantung pada candidate key tabel tersebut.

Bentuk normal kedua dengan melakukan dekomposisi tabel diatas menjadi beberapa tabel dan mencari kunci primer dari tiap-tiap tabel tersebut dan atribut kunci haruslah unik.

4. 3NF

Pada 3NF tidak diperkenankan adanya partial “transitive dependency“ dalam sebuah tabel. Transitive dependency biasanya terjadi pada tabel hasil relasi, atau kondisi dimana terdapat tiga atribut A, B, C. Kondisinya adalah A ⇒ B dan B ⇒ C. Maka C dikatakan sebagai transitive dependency terhadap A melalui B.

Intinya pada 3NF ini, jika terdapat suatu atribut yang tidak bergantung pada primary key tapi bergantung pada field yang lain maka atribut-atribut tersebut perlu dipisah ke tabel baru.

Contohnya ada pada atribut qty, kolom tersebut tidak bergantung langsung pada primary key kode_faktur melainkan bergantung pada kolom kode_barang. Jadi setelah dinormalisasi 3NF akan menghasilkan tabel berikut:

Dari gambar tabel di atas dapat dilihat pada tahap normalisasi 3NF menghasilkan 1 tabel baru dari hasil pemecahan tabel transaksi yaitu tabel detail barang yang isinya menampung barang-barang yang dibeli.

Kolom harga pada tabel detail barang digunakan untuk menyimpan harga barang pada saat proses transaksi. Jadi, meskipun kolom harga pada tabel barang berubah (naik/turun), harga barang yang ada pada tabel detail barang tidak ikut berubah (fixed). Bayangkan jika kita tidak menambahkan kolom harga pada pada tabel detail barang, maka yang terjadi total invoice dari transaksi akan berubah seiring berubahnya harga barang.

5. BCNF Boyce–Codd normal form

Merupakan sebuah teknik normalisasi database yang sering disebut 3.5NF, memiliki hubungan yang sangat erat dengan bentuk 3NF. Pada dasarnya adalah untuk menghandle anomali dan overlooping yang tidak dapat di handle dalam bentuk 3NF. Normalisasi database bentuk ini tergantung dari kasus yang disediakan, tidak semua tabel wajib di normalisasi dalam bentuk BCNF.

Untuk tabel untuk memenuhi Bentuk Normal Boyce-Codd, harus memenuhi dua kondisi berikut:

  • Table harus dalam Bentuk Normal Ketiga.
  • untuk ketergantungan apa pun A → B, A harus menjadi super key.

Poin kedua terdengar agak rumit, kan? Dengan kata sederhana, itu berarti, bahwa untuk ketergantungan A → B, A tidak dapat menjadi atribut non-prima, jika B adalah atribut utama.

2.2.5 Pentingnya Normalisasi

Suatu rancangan database disebut buruk jika :

  • Data yang sama tersimpan di beberapa tempat (file atau record).
  • Ketidakmampuan untuk menghasilkan informasi tertentu.
  • Terjadi kehilangan informasi.
  • Terjadi adanya redudansi (pengulangan) atau duplikasi data sehingga memboroskan ruang penyimpanan dan menyulitkan saat proses updating data.
  • Timbul adanya NULL VALUE..
  • Kehilangan informasi bisa terjadi bila pada waktu merancang database (melakukan proses dekomposisi yang keliru).
  • Bentuk normalisasi yang sering digunakan adalah 1st NF, 2nd NF, 3rd NF,dan BCNF.

Sumber point normalisasi diambil dari Normalisasi Database: Pengertian, Tujuan dan Cara Melakukannya (jojonomic.com)

3. Menciptakan Table

Tabel yang terdiri dari baris/record dan kolom/field

Hal penting dalam membuat tabel adalah pemahaman tentang:

  • Tabel terdiri dari baris/row dan kolom/field (sekumpulan kolom/row merupakan baris/record).
  • Setiap tabel memiliki primary Key, merupkan kolom/field dalam tabel yang bersifat unik. Isi kolom primary key dalam sebuah tabel pasti tidak dimiliki oleh kolom pada baris lainnya dalam satu tabel. Hal ini untuk menjaga keutuhan data dalam tabel agar tidak terjadi duplikasi data.
  • Setiap kolom dalam tabel memiliki tipe data. Dengan tipe data maka data yang diinputkan pada tabel harus sesuai. Ada beberapa jenis tipe data field/kolom tabel di dalam MySQL

1. Tipe Data Angka (Numerik)

Tipe Data Angka (Numerik) merupakan tipe data yang dapat kita gunakan pada suatu variabel konstanta yang dapat menyimpan nilai berupa angka. Pada tipe data angka terbagi menjadi beberapa jenis seperti pada kolom tabel dibawah ini.

2. Tipe Data Teks (String)

Tipe Data Teks (String) merupakan tipe data yang bisa kita gunakan untuk menampung banyak karakter dengan jumlah maksimum data yang dapat ditampung yakni sebanyak 255 karakter. Dibawah ini ada beberapa jenis-jenis tipe data string yang terdapat pada Database MySQL.

3. Tipe Data Date

Tipe Data Date digunakan untuk menyimpan data tanggal dengan format tahun, bulan, tanggal. Beberapa jenis tipe data date yang dapat digunakan.

4. Tipe Data BLOB

Tipe Data BLOB merupakan tipe data yang dapat digunakan untuk menampung gambar, musik, video dan lain-lain nya.

Dalam sebuah tabel kadang memiliki kolom yang bersifat foreign key. Kolom foreign key seccara logis akan terhubung dengan kolom primary key dari tabel lainnya. Sifat hubungan asosiasi ini akan berguna ketika akan melakukan query. Konsep ini dikenal pada tabase yang mendukung RDBMS.

Kali ini kita akan belajar bagaimana membuat table menggunakan DBEaver. Terdapat dua cara untuk membuat tabel.

  1. Wizard GUI, artinya tabel dibentuk menggunakan wizard gui dari dbeaver. Anda tinggal melakukan drag-drop fitur yang terdapat di dalamnya dan menuliskan sedikit skrip jika diperlukan.
  2. SQL, artinya tabel dibentuk menggunakan bahasa SQL atau secara program.

Adapun target desain database, tabel serta relasi antar tabel adalah sebagai berikut:

Rancangan Tabel Pada Database

3.1 Membuat Tabel Dengan Wizard GUI

Berdasarkan rancangan di atas, kita coba membuat salah satu tabel , yaitu kustomer_tb.

Membentuk instan koneksi database
Memilih database MySQL sebagai engine database-nya
Konfigurasi default, mengacu pada MySQL XAMPP dan test koneksi
Test koneksi database MySQL sukses
Koneksi database sukses dan pilih tombol Finish
Klik kanan pada folder Database, kemudian pilih Create New Database
Beri nama database dengan nama coba_db
Klik kanan pada Create New Table untuk membuat tabel baru

Berikut contoh struktur tabel kustomer_tb yang akan dibuat:

Membuat tabel baru sekaligus penentuan kolom-kolomnya

Beri nama table dengan kustomer_tb, kemudian klik kanan pada grid dan pilih Create New Column untuk menambahkan field/kolom pada tabel. Selanjutnya menentukan atribut kolom, misalnya tipe data, primary key dan lain-lain

Kolom konsumen_id
Kolom nama_kustomer
Kolom alamat_kustomer

Dengan cara yang sama lakukan hal yang serupa untuk semua kolom dari tabel kustomer_tb sehingga akan tampak seperti ini:

Kolom-kolom pada tabel kustomer_tb sudah lengkap

Selanjutnya adalah menentukan primary key dari tabel kustomer_tb. Dalam hal ini kolom kustomer_id.

Pilih tab Constraint, klik kanan pada grid dan pilih menu Create New Constraint.

Beri tanda centang pada kolom kustomer_id yang berarti menugaskan kolom tersebut sebagai primary key (kolom unik).

Jika sudah, simpan dari menu File > Save.

Pilih tombol Persist

Secara tidak langsung untuk membuat tabel dapat dilakukan melalui kode SQL seperti tampak di atas, yaitu:

CREATE TABLE cobadb.kustomer_tb (
kustomer_id char(10) NOT NULL,
nama_kustomer varchar(35) NOT NULL,
alamat varchar(35) NULL,
kota varchar(35) NULL,
telp varchar(35) NULL,
CONSTRAINT kustomer_tb_pk PRIMARY KEY (kustomer_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;

Sampai sini Anda sudah berhasil membuat satu tabel baru bernama kustomer_tb di dalam database cobadb.

Tugas

Dengan cara yang sama, buat tabel-tabel berikut, dan letakkan di dalam database cobadb.

3.2 Membuat Tabel Dengan bahasa SQL

Disamping membangun tabel secara wizard dengan GUI, kita sebenarnya juga bisa membangun tabel-tabel tersebut secara script.

Sekarang buatlah tabel baru bernama “duplicate_db” seperti berikut:

Klik kanan pada database “duplicate_db”, pilih menu “SQL Editor”, pilih menu “New SQL Script”.

Perlu diperhatikan bahwa referensi database telah berubah, semula menggunakan database ”cobadb” diubah menjadi ”duplicate_db” disesuaikan dengan database mana yang dipilih dan aktif.

Yang semula script SQL nya adalah

# tabel kustomer_tb
CREATE TABLE cobadb.kustomer_tb (
kustomer_id char(10) NOT NULL,
nama_kustomer varchar(35) NOT NULL,
alamat varchar(35) NULL,
kota varchar(35) NULL,
telp varchar(35) NULL,
CONSTRAINT kustomer_tb_pk PRIMARY KEY (kustomer_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;
# tabel jenis_barang_tb
CREATE TABLE cobadb.jenis_barang_tb (
jenis_barang_id char(10) NOT NULL,
nama_jenis_barang varchar(50) NOT NULL,
CONSTRAINT jenis_barang_tb_pk PRIMARY KEY (jenis_barang_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;
# tabel barang_tb
CREATE TABLE cobadb.barang_tb (
barang_id char(10) NOT NULL,
nama_barang varchar(50) NOT NULL,
jenis_barang_id char(10) NOT NULL,
harga INT UNSIGNED DEFAULT 0 NOT NULL,
CONSTRAINT barang_tb_pk PRIMARY KEY (barang_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;
# tabel penjualan_header_tb
CREATE TABLE cobadb.penjualan_header_tb (
penjualan_id char(10) NOT NULL,
tanggal DATE NOT NULL,
kustomer_id char(10) NOT NULL,
CONSTRAINT penjualan_header_tb_pk PRIMARY KEY (penjualan_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;
# tabel penjualan_detil_tb
CREATE TABLE cobadb.penjualan_detil_tb (
penjualan_detil_id BIGINT UNSIGNED auto_increment NOT NULL,
penjualan_id char(10) NOT NULL,
barang_id char(10) NOT NULL,
jumlah INT UNSIGNED DEFAULT 1 NOT NULL,
harga INT UNSIGNED NOT NULL,
CONSTRAINT penjualan_detil_tb_pk PRIMARY KEY (penjualan_detil_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;

diubah menjadi berikut ini:

# tabel kustomer_tb
CREATE TABLE duplicate_db.kustomer_tb (
kustomer_id char(10) NOT NULL,
nama_kustomer varchar(35) NOT NULL,
alamat varchar(35) NULL,
kota varchar(35) NULL,
telp varchar(35) NULL,
CONSTRAINT kustomer_tb_pk PRIMARY KEY (kustomer_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;
# tabel jenis_barang_tb
CREATE TABLE duplicate_db.jenis_barang_tb (
jenis_barang_id char(10) NOT NULL,
nama_jenis_barang varchar(50) NOT NULL,
CONSTRAINT jenis_barang_tb_pk PRIMARY KEY (jenis_barang_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;
# tabel barang_tb
CREATE TABLE duplicate_db.barang_tb (
barang_id char(10) NOT NULL,
nama_barang varchar(50) NOT NULL,
jenis_barang_id char(10) NOT NULL,
harga INT UNSIGNED DEFAULT 0 NOT NULL,
CONSTRAINT barang_tb_pk PRIMARY KEY (barang_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;
# tabel penjualan_header_tb
CREATE TABLE duplicate_db.penjualan_header_tb (
penjualan_id char(10) NOT NULL,
tanggal DATE NOT NULL,
kustomer_id char(10) NOT NULL,
CONSTRAINT penjualan_header_tb_pk PRIMARY KEY (penjualan_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;
# tabel penjualan_detil_tb
CREATE TABLE duplicate_db.penjualan_detil_tb (
penjualan_detil_id BIGINT UNSIGNED auto_increment NOT NULL,
penjualan_id char(10) NOT NULL,
barang_id char(10) NOT NULL,
jumlah INT UNSIGNED DEFAULT 1 NOT NULL,
harga INT UNSIGNED NOT NULL,
CONSTRAINT penjualan_detil_tb_pk PRIMARY KEY (penjualan_detil_id)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci;

Untuk mengeksekusi script SQL, klik kanan pada SQL Editor, pilih menu “Execute”, pilih menu “Execute SQL Script

Untuk memastikan apakah tabel-tabel telah terbentuk dari SQL tersebut, klik kanan pada database “duplicate_db”, pilih menu “Refresh”.

Dapat diperhatikan kita sekarang memiliki tabel-tabel dengan struktur yang sama dengan sebelumnya, namun berada di dalam database “duplicate_db” hanya dengan menggunakan script SQL.

--

--

Dodit Suprianto

I am interested in IoT, especially cyber security on the IoT platform, develop functional edge computing, explore machine learning to solve IoT problems