Rancangan Database
Berdasarkan gambaran dari fitur dan arsitektur di bab sebelumnya, kita akan mulai merancang database awal aplikasi YiiShop kita sebagai berikut :
Buat database dengan nama ‘yii-shop’ dan set character ‘utf8_general_ci’.
Catatan : Gambar diatas merupakan desain atau rancangan awal tabel YiiShop, kemungkinan perubahan baik rancangan arsitektur, fitur ataupun desain database selalu ada.
Langkah selanjutnya mari kita implementasikan rancangan database tersebut kedalam database MySQL yii-shop yang sudah kita buat sebelumnya. Pembuatan tabel kita bisa menggunakan fitur database migration Yii. Dokumentasinya dapat dilhat disini : http:\/\/www.yiiframework.com\/doc-2.0\/guide-db-migrations.htm atau dapat menggunakan MySQL GUI Tools seperti phpMyAdmin, headisql, sqlyog, MySQL Workbench, Sequel Pro, dll.
Disini saya akan menggunakan MySQL Gui Tools untuk membuat tabel-tabel tersebut.
Struktur Tabel
1.Tabel user
Berikut struktur tabel user, pada dasarnya tabel user ini sudah terbuat saat kita melakukan yii migrate
dibab sebelumnya yaitu bab instalasi dan konfigurasi. Disini ada sedikit pernambahan field yaitu field level yang dimana akan membedakan mana yang merupakan user atau customer, admin atau pengelolah aplikasi, dan manager yang akan mengelolah laporan.
Jika Menggunakan migrate untuk menambahkan field level dengan type enum, bisa dengan cara seperti ini. Buka command prompt dan masuk ke direktori aplikasi yiishop kita, lalu ketikan perintah ini :
yii migrate/create add_level_coloumn_to_user_tabel
Setelah kita enter makan akan ada konfirmasi untuk pembuatan migration database file, seperti gambar dibawah
jika sudah masukan yes lalu tekan enter. Jika sukses maka file akan berhasil dibuat di direktori
yiishop\console\migrations\ m[yymmdd_hhmmss]_add_level_coloumn_to_user_tabel.php
[yymmdd_hhmmss] merupakan informasi waktu saat kita membuat atau men-generate file tersebut. Berikut adalah contoh file migration tambah kolom atau field level ke tabel user yang saya generate dan ditambahkan code seperti ini :
use yii\db\Migration;
class m161115_082532_add_level_coloumn_to_user_tabel extends Migration
{
public function up()
{
$this->addColumn('user', 'level', "ENUM('admin', 'manager', 'user')");
}
public function down()
{
$this->dropColumn('user', 'level');
}
}
Dapat kita perhatikan code migration diatas, dimana terdapat 2 method up dan down, method up digunakan untuk melakukan perubahan database dan sedangkan method down digunakan untuk mengembalikan kondisi sebelum perubahan. Untuk lebih memahami proses migration ini dapat kita lihat ke sini http:\/\/www.yiiframework.com\/doc-2.0\/guide-db-migrations.htm
Jika sudah jalankan perintah php yii migrate
pada command prompt kalian, untuk menjalankan migration file m161115_082532_add_level_coloumn_to_user_tabel.
2.Tabel user_profil
Tabel user_profil digunakan untuk informasi data diri dari setiap user yang terdaftar pada aplikasi kita.
Jika kita perhatikan kembali relasi dari rancangan database hubungan antar tabel user dengan user_profil adalah 1:1 dimana 1 user hanya memiliki 1 profil, jadi jangan lupa kita buat unique field user_id.
Jika Menggunakan Migrate :
yii migrate/create create_user_profil_table
File hasil perintah migrate, dijadikan seperti ini :
use yii\db\Schema;
class m161116_040101_create_user_profil_tabel extends \yii\db\Migration{
public function up()
{
$tableOptions = null;
if ($this->db->driverName === 'mysql') {
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
}
$this->createTable('user_profil', [
'id' => Schema::TYPE_PK, 'user_id' => Schema::TYPE_INTEGER . '(11) NOT NULL',
'nama_lengkap' => Schema::TYPE_STRING . '(255) NOT NULL',
'jenis_kelamin' => Schema::TYPE_STRING, 'tanggal_lahir' => Schema::TYPE_DATE,
'hobi' => Schema::TYPE_STRING . '(255)', 'nomor_hp' => Schema::TYPE_STRING . '(15)',
'created_at' => Schema::TYPE_INTEGER . '(11)',
'updated_at' => Schema::TYPE_INTEGER . '(11)',
'FOREIGN KEY ([[user_id]]) REFERENCES user ([[id]]) ON DELETE CASCADE ON UPDATE CASCADE', ], $tableOptions);
}
public function down()
{
$this->dropTable('user_profil');
}
}
Jika sudah jalankan perintah php yii migrate
pada command prompt kalian, untuk menjalankan migration file m161116_040101_create_user_profil_tabel.
3.Tabel user_alamat
Tabel ini diperuntukan menyimpan data alamat pengiriman barang untuk customer. Yang perlu diperhatikan maksud dari field aktif dimana field tersebut sebagai penanda alamat mana yang akan digunakan sebagai default pengiriman.
4.Tabel kurir
Tabel ini diperuntukan informasi jasa perusahaan pengiriman barang yang bekerjasama dengan yiishop, contohnya seperti JNE, TIKI, POS Indonesia, Wahana, dll.
5.Tabel kategori
Tabel ini digunakan untuk membuat kategori dari produk, dan jika ingin membuat sub kategori maka dapat manfaatkan field parent_id.
6.Tabel produk
7.Tabel bank
Tabel ini berfungsi untuk menampung informasi nomor rekening bank yang akan diinformasikan ke customer yang membeli produk kita untuk melakukan pembayaran kesalah satu nomor rekening bank yang terdaftar.
8.Tabel order
9.Tabel order_item
10.Tabel pages
Tabel ini digunakan untuk informasi isi halaman content statis aplikasi kita.
Alhamdulillah sampai saat ini kita telah membuat tabel-tabel untuk database yii-shop kita. Pada bab berikutnya kita akan membahas yang lebih menarik... seperti biasa jangan lupa siapkan kopinya lalu di sruput.... :D