Hai Sipinter! Kali ini mimin bakal menjelaskan cara membuat database untuk web yang akan kalian buat. Disini kita akan membuatnya dengan database MySQL bisa juga dengan MariaDB.
Database MySQL dan MariaDB sama-sama bisa menggunakan PHPMyAdmin, jadi tidak banyak perbedaannya dalam cara membuat database. Malah hampir sama banget.
Jika kalian menggunakan XAMPP versi terbaru biasanya akan menggunakan database MariaDB dan tidak MySQL lagi. Tidak usah risau, sesuai penjelasan sebelumnya cara ini bisa digunakan di kedua jenis database tersebut.
Mimin bakal jelasin cara yang biasanya, mimin gunakan ketika membuat database.
Langkah-Langkah Membuat Database
Berikut merupakan langkah-langkah yang sering mimin gunakan dalam mengembangkan database, jika kalian memiliki cara lain tinggalkan di komen.
1. Analisis Kebutuhan Data
Kita harus menganalisa kebutuhan web yang akan dibuat. Simpelnya kalian harus tau data apa saja yang akan disimpan dalam web dan informasi apa yang dihasilkan sebuah web.
Disini kita akan membuat Web CMS(Content Management System) web yang digunakan untuk mengelola konten berupa artikel. Nah kalian harus analisa data apa saja yang ada di web CMS, disini kita membuat yang sederhana dulu yak.
2. Mengkelompokan Data Hasil Analisis
Karena sebuah database didalamnya pasti berisi tabel yang saling berhubungan dan di dalam tabel ada kolom dan baris. Maka kalian perlu mengkelompokan setiap data, yang mungkin menjadi atribut atau kolom berdasarkan entitasnya tabel yang cocok.
Nah daripada kalian bingung simpelnya di kasus membuat CMS. Kita perlu melihat web CMS yang ada, lalu mimin catat dan kelompokan semua data atribut yang ada di web itu.
Setelah mimin melakukan analisa terhadap CMS yang ada, mimin mendapatkan beberapa data yaitu:
- Data Web = untuk menyimpan informasi umum mengenai web kita.
- Nama web
- Deskripsi Web
- Logo web
- email web
- password email web
- meta web
- favicon
- Data Post = untuk menyimpan data postingan web.
- Judul post
- url post
- Thubnail post
- penulis post
- Waktu update
- status post(draf, evaluasi, publish)
- Waktu Publish
- kategori post
- tag post
- isi post
- komentar post
- meta post
- Data Page = menyimpan halaman web mirip post cuman lebih sederhana dan hanya bisa dibuat oleh admin.
- Judul page
- thubnail page
- url page
- isi page
- status page
- meta page
- Data Pengguna= menyimpan data pengguna yang bisa admin, editor dan penulis
- username
- nama lengkap pengguna
- deskripsi diri pengguna
- session id pengguna
- email pengguna
- password pengguna
- hak akses (admin, editor, penulis) penguna
- Media = untuk menyimpan semua file media seperti gambar video yang ada di website kita.
- nama file media
- Alt file media
- jenis file media
- Data Menu = menyimpan menu dan linknya.
- nama menu
- link menu
- kelompok menu
Setelah itu mimim mulai mencari atribut yang mungkin menyimpan data lebih daru satu dan mimin buatkan kelompok sendiri. Misal data kategori dalam postingan bisa lebih dari satu, jadi kita perlu membuatkannya tabel atau entitas baru.
- Kelompok menu = Untuk mengkelompokan top menu atau bottom menu dll.
- Nama kelompok menu
- deskripsi kelompok menu
- Kategori = untuk mengelompokan postingan berdasarkan jenis kategori.
- nama kategori
- deskripsi kategori
- induk kategori
- Tag = untuk mengelompokan postingan berdasarkan beberapa kata kunci.
- nama tag
- Meta = untuk menyimpan informasi yang mempermudah mesin pencari menemukan web, postingan dan page kita.
- meta keyword
- meta deskripsi
- meta tambahan
- komentar = untuk menyimpan komentar yang diberikan terhadap sebuah postingan.
- post
- nama
- website
- isi komentar
- status(publis, spam, wait)
3. Membuat Rancangan Database
Setelah itu kita perlu untuk membuat design dari database yang kita buat, dengan menggunakan ERD (entity relationship diagram). ERD merupakan diagram yang digunakan untuk merancang database, yang berisi entitas atau tabel yang saling berhubungan.
Ada tiga hal yang wajib kalian pahami ketika membuat ERD yaitu:
1. Entitas
Entitas merupakan objek yang diidentifikasi secara unik, bisa berupa objek nyata. Entitas ini yang nantinya menjadi tabel dalam database.
Entitas dalam ERD disimbolkan persegi panjang. Berdasarkan data yang telah kita kumpulkan kita memiliki 10 Entitas yaitu web, post, page, pengguna (user), media, menu, kelompok menu, kategori, tag, meta, komentar.
Maka kita lambangkan 11 entitas tersebut dalam ERD seperti gambar di bawah:
Maaf diatas kurang satu tabel, soalnya buatnya pas lagi tengah malam wkwkwk.
2. Atribut
Atribut merupakan ciri-ciri atau karakteristik sebuah entitas. Jadi atribut ini adalah elemen dari sebuah entitas.
Atribut ada beberapa jenis yaitu :
a) Atribut key adalah atribut yang menjadi indentifikasi unik sebuah entitas. Atribut ini wajib ada dalam sebuah entitas. Contoh entitas pos memiliki atribut id post sebagai atribut keynya.
b) Atribut simpel adalah atribut yang pasti dimiliki oleh sebuah entitas, atribut yang tidak dapat dipecah lagi. contoh di entitas post memiliki atribut tunggal judul, isi post, url post dll.
c) Atribut multi nilai yaitu atribut yang mungkin untuk memiliki banyak nilai. Contoh sebuah post bisa memiliki lebih dari satu kategori, tag dan comentar. Atribut multi nilai harus dibuatkan entitas atau tabel baru.
d) Atribut Komposit yaitu atribut yang mengandung beberapa atribut kecil. Contoh nama lengkap pengguna merupakan gabungan dari nama depan, nama tengah dan belakang.
e) atribut derivatif yaitu atribut yang dihasilkan dari atribut lain yang tidak perlu ditulis. Contoh populer post, post sebelum, post selanjutnya dll.
Atribut ini sebenarnya beberapa sudah kita dapatkan ketika analisis kebutuhan. Kalian tinggal hubungkan dengan entitas yang sudah dibuat, dan pastikan semua atribut memiliki memiliki atribut key atau yang sering dikenal pimary key.
Atribut di ERD dilambangkan dengan lingkaran lonjong. Berikut merupakan contoh cara membuat atribut di ERD:
Bisa dilihat pada gambar diatas kita tidak menulis atribut yang multi nilai. Kok thumbnail enggak dibuat, kan enggak multi nilai? ini karena kita akan menyimpan semua file dalam satu entitas yaitu media.
Mimin tandai atribut key nya dengan huruf bold. Bisa kalian lihat atribut key tidak harus karakteristik asli sebuah entitas, namun kita bisa membuatnya sendiri yang penting nilainya unik.
Lakukan hal sama terhadap atribut entitas lain dan berikut merupakan hasil keseluruhan:
Sedikit saran kalau bisa jangan gunakan garis yang memiliki tanda panah ketika membuat ERD. Mimin membuat ada tanda panahnya, biar lebih gampang aja hehehe.
3. Relasi
Relasi akan menggambarkan entitas atau tabel mana yang saling berhubungan dalam sebuah database. Relasi dilambangkan dengan simbol belah ketupat.
Untuk menghubungkan sebuah entitas kita memerlukan dua atribut key yaitu:
Primary key adalah sebuah atribut wajib ada yang mengidentifikasikan secara unik sebuah baris data dalam sebuah entitas atau tabel. Primary key nilai tidak boleh ada yang sama dan tidak boleh bernilai null.
Foreign key adalah sebuah kunci tamu yang menjelaskan hubungan sebuah entitas dengan entitas induknya.
Relasi dalam membuat database terdiri dari 3 jenis yaitu:
1. Relasi one-to-one(1:1) dimana hubungan yang terjadi jika satu nilai entitas hanya berhubungan dengan satu nilai entitas lainnya. Misal hubungan entitas post dan meta.
2. Relasi one-to-many(1:M) dimana ketika satu nilai entitas 1 berhubungan dengan banyak nilai entitas 2. Tapi sebaliknya nilai entitas 2 hanya berhubungan dengan satu nilai entitas 1.
Misal hubungan entitas post dengan user(penulis). post hanya memiliki satu penulis dan penulih bisa memiliki banyak post.
3. Relasi many-to-many(M:M) dimana nilai kedua entitas saling berhubungan ke banyak nilai entitas lainnya.
Contohnya adalah hubungan entitas post dengan kategori dan tag.Dimana sebuah postingan bisa memiliki banyak kategori dan sebuah kategori bisa dimiliki oleh banyak post.
Jika terjadi hubungan many-to-many kita wajib membuat entitas baru untuk menghubungkan kedua entitas tersebut. Sehingga hubungannya menjadi one-to-many ke entitas penghubung.
Disini kita akan membuat entitas baru daftar_kategori, yang atributnya hanya id dan foreign key dari entitas post dan kategori.
Jadi untuk menghubungkan sebuah entitas dengan entitas lain, maka kita perlu meletakan primary key sebuah entitas dientitas lain menjadi foreign key.
Misal kita mau menghubungkan post dengan daftar_kategori dimana satu post memiliki banyak daftar kategori. Maka kita letakan atribut id pada post ke daftar_kategori dengan nama post_id.
Seperti contoh dibawah:
Jadi ketika relasi one-to-many letakan foreign key entitias yang many, lalu jika relasi one-to-one bisa diletakan dimana saja sesuai kebutuhan web kalian.
Nah berikut merupakan hasil rancangan database untuk Web CMS kita sendiri dengan PHP menggunakan ERD:
Setelah mimin perhatikan lagi ternyata mimin lupa satu atribut untuk daftar_kategori yaitu status untuk menyimpan mana yang kategori utama.
4. Cek Database Dengan Metode Normalisasi
Setelah itu kita perlu mengecek database yang kita buat sudah benar dengan menggunakan ilmu Normalisi. jika sudah lolos semua tahap normalisasi maka tabel kalian pasti sudah siap dipakai untuk membuat web.
Normalisasi akan memastikan database yang kalian rancang tidak akan terjadi kesalahan ketika melakukan CRUD (Create, Retrive, Update, Delete) database.
Sebenarnya kita sudah menerapkan Normalisi di beberapa tahap sebelumnya secara tidak langsung. Disini mimin akan jelasin tiga tahap normalilasi yang sering digunakan agar database berjalan semestinya.
Berikut merupakan tiga tahapan normalisasi database.
1. Normal Pertama (1NF)
Sebuah database dipastikan setiap entitasnya memiliki primary key, lalu tidak ada atribut ganda dan atribut yang memiliki nilai lebih dari satu.
2. Normal Kedua (2NF)
Database dikatakan bentuk normal kedua jika tidak ada atribut dalam sebuah entitas, yang bergantung kepada field lain selain pada primary key.
Jika ada harus dibuatkan entitas baru, lalu buatkan relasi diantara kedua tabel tersebut. Selain itu database juga harus memenuhi normal pertama.
3. Normal Ketiga (3NF)
Setelah melewati bentuk normal kedua, sebuah database memenuhi bentuk normal ketiga, jika tidak ada atribut yang memiliki hubungan transitif selain primary key.
5. Menentukan Tipe Data Atribut Database
Kita perlu menentukan tipe data yang cocok untuk tiap atribut atau kolom, lalu kita juga perlu menetukan maksimal nilai tiap atribut agar penyimpanan digunakan dengan efektif.
Tipe data itu harus sesuai dengan kebutuhan, agar tidak terjadi salah input data yang menyembabkan kesalahan berkelanjutan pada database.
Agar kalian tidak salah memilih tipe data smimin bakal jelasin beberapa tipe data yang sering digunakan di MySQL.
Berikut merupakan daftar tipe data yang sering digunakan dalam database MySQL:
- Jenis Tipe data Numerik
- int (untuk menyimpan bilangan bulat pada atribut)
- bigint (untuk menyimpan nilai bilangan bulat pada atribut dengan kapasitas lebih)
- decimal (cocok untuk atribut bernilai uang)
- float (untuk menyimpan bilangan baik bulat maupun decimal)
- Jenis Tipe data Date & time
- date (menyimpan tanggal saja)
- datetime (menyimpan tanggal dan waktu)
- timestamp (menyimpan tanggal dan waktu sekarang)
- Year (menyiimpan nilai tahun saja)
- Time (menyimpan jam saja)
- Jenis Tipe data String
- char (Untuk menyimpan nilai 1 karakter)
- varchar (Untuk menyimpan data berupa kalimat pendek )
- text (untuk menyimpan string dalam jumlah banyak)
- enum (untuk menyimpan data yang berupa pilihan, seperti jenis kelamin dll)
- set = (sama seperti enum namun, kita dapat memilih beberapa pilihan sekaligus. Misal seperti atribut hobi dkk)
- Masih banyak sekali jenis tipe data di MySQL kunjungi: Data Types in MySQL
Ada beberapa tipe data yang dapat kita sesuaikan panjang nilainya, agar tidak memakan banyak ruang dan lebih efektif.
untuk tipe data nya akan mimin jelaskan ketika kita membuatnya databasenya di postingan selanjutnya.
6. Menerapkan Rancangan Database
Setelah itu kita perlu membuat databasenya di MySQL melalui PHPMyAdmin atau dengan menggunakan script SQL jika kalian pro hehehe.
Untuk penjelasan cara menerapkan desain database ke Database Server MySQL dan MariaDB akan mimin jelaskan di postingan selanjutnya.
Kunjungi: Membuat Database Untuk Web CMS dengan MySQL #2
Sekian postingan kali ini semoga bermanfaat dan mimim mohon maaf jika ada kesalahan atau kekurangan dalam postingan ini.
tinggalkan komentar jika memiliki pertanyaan atau saran!
“Nikmatilah sebuah proses mulai dari belajar, mengembangkan, dan berbagi untuk orang lain”.
Jangan lupa share dan follow social media Sipintek. Terima kasih :D.