Belajar MySQL: Apa itu Database

posted in: Tutorial Pemrograman | 0

Belajar MySQL: Mengenal Database

Dalam tutorial belajar MySQL ini akan dibahas tentang konsep Relational Database Management System, Structured Query Language SQL, Database MySQL dan cara mengaksesnya dengan  dengan bahasa pemrograman PHP (PHP MySQL).

Apa itu Database?

Database adalah aplikasi yang digunakan untuk menyimpan data. Database dapat mengambil berbagai macam bentuk, seperti:

  • Flat file, misalnya data yang disimpan dalam csv.
  • Ini file, yaitu data disimpan dalam bentuk baris-baris, dimana satu baris menyimpan data yang lengkap, tetapi dengan jenis dan isi yang beragam (beda dengan baris pada table).
  • Hierarchical database, dimana data yang disimpan memiliki hubungan secara hirarki, contoh nya penyimpanan file pada Microsoft Explorer
  • Relational Database, dimana data disimpan dalam bentuk table-table yang memiliki hubungan secara dinamis. Untuk mengelola datanya, baik menyimpan maupun mengambil, membuat database dan table,  dilakukan dengan menggunakan bahasa yang disebut Structured Query Language (SQL).

Pada masa ini, database yang paling banyak digunakan untuk aplikasi, termasuk aplikasi berbasis web, adalah RDBMS.

Mengenal Relational Database Management System

Berikut adalah istilah yang sering dipakai dalam RDBMS:

  • Database: koleksi dari tabel-table yang memiliki data saling terkait.
  • Table: adalah data dalam bentuk matrik, yang terdiri dari baris dan kolom. Tabel dipakai untuk menyimpan informasi sejenis, misalnya: data pelanggan, data karyawan, data produk, dan seterusnya.
  • Column: Satu kolom mewakili satu jenis tipe data. Misalnya dalam tabel karyawan, ada kolom nama, nip, tanggal lahir, dan seterusnya.
  • Row: Baris mewakili satu satu set item data dari table tertentu. Misalnya, dari table karyawan, baris akan berisi data lengkap dari satu karyawan. Datanya bisa terdiri dari: nama, nip, alamat, tanggal_lahir, dan seterusnya.
  • Primary Key: Merupakan kolom yang berisi kunci utama yang sifatnya unik. Setiap baris pada pada tabel memiliki satu kunci utama.
  • Relationship: Yaitu hubungan antara 2 table atau lebih. Misalnya hubungan antara Table Order dan Order Detail. Hubungan antar table ini melalui satu kode kunci (key)
  • Foreign Key: Kunci utama yang dipakai untuk Relationship dua tabel. Foreign key biasanya merupakan primary key dari suatu tabel, yang dijadikan kolom pada tabe lainnya. Contohnya pada kasus table Order dan Order Detail, maka Foreign key adalah Primary Key table Order yang disimpan di table Order Detail.
  • Referential Integrity: Referential Integrity makes sure that a foreign key value always points to an existing row.
  • Index: Adalah sistem internal yang dipakai oleh sistem database untuk menemukan data secara cepat. Pada MySQL, sebuah Key biasanya juga merupakan Index.

Cara Mendesain Database

Dasar-dasar Desain database yang baik.

Mendesain database bukan hal sulit, akan tetapi harus mengikuti beberapa aturan/standar agar model data menjadi fleksibel dan membuat kita lebih mudah bekerja dengannya. Desain yang baik juga akan mempermudah kita dalam menjaga integritas data dan membuat laporan.

Desain database yang baik dimulai dari mendaftar data apa saja yang ingin dimasukan ke dalam database dan apa yang ingin anda lakukan terhadap data tersebut. Jangan terlalu menganggap ringan karena jika ada yang terlewat dimasukan, terkadang harus mulai lagi dari awal.

Mengidentifikasi Entities

Jenis informasi yang akan disimpan di dalam database disebut entities. Entities terdiri dari 4 jenis: orang, barang, event, dan lokasi. Semua entitas yang ingin dimasukan ke dalam database harus masuk dalam kategori ini. Jika ia tidak masuk dalam kategori itu, mungkin merupakan properti dari entities, atau sering juga disebut atribut.

Sebagai contoh, sebuah database toko akan mempunyai entitas berikut:

  • Toko adalah lokasi
  • Penjualan adalah event
  • Produk adalah barang
  • Pelanggan adalah orang.

Mengidentifikasi Relationship

Langkah berikutnya adalah membuat Relationship. Relationship menunjukan bagaimana hubungan antar entiti ini. Seperti hubungan: Pelanggan membeli Produk, Produk dengan Toko, Toko dengan Pelanggan, dan seterusnya.

Hubungan relationship dapat dikelompokan dalam beberapa jenis:

  • one-to-one, 1:1 (satu ke satu)
  • one-to-many: 1:N (satu ke banyak)
  • many-to-one: M:1 (banyak ke satu)
  • many-to-many: M:N (banyak ke banyak)

Untuk kasus Toko, kita bisa membuat relationship seperti berikut:

  • Pelanggan => Penjualan; => 1:N, 1 Pelanggan melakukan banyak transaksi Penjualan (1 transaksi hanya bisa dilakukan oleh 1 Pelanggan);
  • Pelanggan => Produk; => M:N, Banyak pelanggan dapat membeli 1 Produk, dan Banyak Produk dapat dibeli 1 Pelanggan
  • Pelanggan => Toko; => M:N, Banyak Pelanggan bisa membeli di 1 toko, dan Banyak Toko bisa menjual ke 1 Pelanggan
  • Penjualan => Produk; => M:N, Banyak Penjualan menjual 1 Produk, dan Banyak Produk bisa dijual dalam 1 transaksi Penjualan.
  • Toko => Penjualan; => 1:N, 1 Toko bisa melakukan banyak Penjualan. (1 transaksi Penjualan hanya bisa dilakukan di 1 toko)
  • Toko => Produk; => M:N, Banyak Toko bisa menyimpan 1 Produk, Banyak Produk bisa disimpan di satu Toko.

Relasi antar tabelnya bisa kita gambar sebagai berikut :
belajar mysql relasi antar tabel

Gambar 1. Hubungan relationship antar entity yang belum dioptimasi.

Relationship Redundant

Dari gambar diatas, kita melihat bahwa hubungan antara Pelanggan dan Produk dapat diwakili oleh Penjualan. Relationship ini disebut Redundant. Relasi seperti ini bisa dihapus.

Hubungan Produk dan Penjualan yang berupa M:N (banyak ke banyak) pada prakteknya tidak bisa dilakukan langsung. Tetapi harus dilakukan melalui tabel antara. Begitu juga antara Produk dengan Toko. Untuk hubungan antara Produk dan Penjualan dapat dibuat tabel antara Penjualan Detil. Sedangkan hubungan antara Produk dan Toko, dapat dibuat tabel antara Stok. Berikut adalah model database yang telah diperbaiki:
belajar mysql relationship redundantGambar 2. Hubungan relationship antar entity yang sudah dioptimasi dengan menghapus relationship redundant, dan tambahan 2 table: penjualan detail dan stok.

Mengidentifikasi Atribut

Elemen data yang ingin kita simpan dalam sebuah entitas disebut atribut. Contoh atribut pada entitas Produk adalah nama produk, harga, tipe, pabrik. Pada Pelanggan, misanya nama dan alamat. Pada Penjualan misalnya produk, tanggal, jumlah, dan seterusnya.

Data Turunan

Data turunan adalah data yang diturunkan dari data atribut lain yang sudah disimpan. Contoh klasik dari data turunan misalnya ‘total penjualan’. Nilainya adalah total penjumlahan dari harga barang dikali jumlah pembelian, dalam kurun waktu tertentu. Karena nilainya bisa terus berubah seiring waktu, maka data turunan ini tidak perlu disimpan.

Memasang Primary Key

Primary Keys
Primary key (PK), atau kunci-utama, adalah satu atau lebih atribut yang mengidentifikasi entity secara unik. Jika PK terdiri dari dua atau lebih atribut, maka ia  disebut composite-key. Semua atribut yang menjadi bagian dari PK harus memiliki nilai pada setiap record dan sifatnya harus unik (tidak boleh ada yang sama). Contoh PK misalnya nomor pelanggan, kode barang, dan seterusnya.

Dalam membangun relationship antar entitas, PK dipakai sebagai referensi. Contohnya, relasi antara entitas Penjualan dan Penjualan-detil akan menggunakan PK Penjualan. Data atribut PK Penjualan akan disimpan sebagai kolom pada pada entitas Penjualan-detil.
belajar mysql primary key

Keberadaan PK Penjualan dalam PK Penjualan-detil disebut Foreign Key.

Menentukan Tipe Data untuk Atribut

Setelah semua entitas dan relationship dibuat, proses berikutnya adalah menentukan tipe data. Setiap database biasanya mempunyai tipe data sendiri-sendiri. Akan tetapi ada beberapa yang sesuai standar. Misanya: CHAR, VARCHAR, TEXT, INT, FLOAT, dab DOUBLE.

The standard data types that every database knows, and are most-used, are: CHAR, VARCHAR, TEXT, FLOAT, DOUBLE, and INT. Untuk database MySQL, akan dibahas pada bagian berikutnya.

Cara Normalisasi Database

Normalilsasi adalah proses untuk akan menjaga agar data tetap mempunyai integritas yang baik dengan menghilangkan kelompok data yang duplikat dan redundant. Normalisasi akan membuat model data menjadi fleksible dan reliable.

Umumnya proses normalisasi dilakukan 3 tahap.

1.       Normalisasi Pertama (1NF)

Aturan normalisasi pertama, kolom dari table harus bersifat atomik-value, artinya satu cell tidak boleh menyimpan banyak nilai. Pada contoh dibawah, kolom Color menyimpan 2 nilai: red, green dan yellow, blue. Untuk memenuhi normalisasi pertama, kolom Color harus dikembangkan seperti Contoh 2.

belajar mysql normalisasi pertamaContoh 1. Tabel yang belum di normalisasi.

belajar mysql tabel yang memenuhi normalisasi pertama

Contoh 2. Table yang memenuhi kriteria Normalisasi Pertama.

2.       Normalisasi Kedua (2NF)

Aturan Normalisasi kedua adalah adalah:

a.      Memenuhi semua syarat dari Normalisasi pertama.

b.      Menghilangkan subset data yang terdapat pada banyak baris kemudian meletakkanya pada table terpisah.

c.      Membuat relasi antara tabel yang dipisah ini, dengan menggunakan Foreign Key.

Pada Contoh 3, kolom Purchase Location memiliki kolom dengan subset data yang berulang yaitu Long Angeles (diulang 2x) dan San Fransisko (diulang 2x). Karena itu tabel harus dipecah di buat relasi antara keduanya.

 belajar mysql normalisasi kedua

Contoh 3. Tabel belum memenuhi normalisasi kedua.

belajar mysql tabel yang memenuhi normalisasi kedua

Contoh 4. Table yang telah memenuhi rule normalisasi kedua.

3.       Normalisasi Ketiga (3NF)

Kriteria normalisasi ketiga:

a.       Memenuhi kriteria normalisasi kedua.

b.      Menghilangkan kolom yang tidak bergantung pada primary-key tabel tersebut.

Pada contoh di bawah ini, kolom GenreType tidak bergantung pada primary-key buku. Hanya price yang bergantung pada buku. Karena itu GenreType harus dihilangkan dan dalam contoh ini, dibuat menjadi table sendiri.

belajar mysql normalisasi ketiga

Contoh 5. Tabel yang belum sesuai normalisasi ketiga.

belajar mysql tabel yang memenuhi normalisasi ketiga

Contoh 6. Kolom GenreType dihilangkan karena tidak bergantung pada primary-key buku. Pada contoh ini, dibuat tabel baru Table_Genre.

Leave a Reply