Mempelajari DBMS (Dasar)

Tidak bisa di pungkiri, database adalah bagian dari kehidupan. Dari kita bangun sampai tidur, kita hidup dalam database . pertanyaannya adalah dimana kita menyimpan. Juga bagaimana memanajemennya.

Secara singkat, saya hanya menunjuk pada kebutuhan kita sebagai programer akan adanya database, walaupun itu terlihat tidak perlu bila codingnya sederhana. Tetapi akhirnya kedepannya juga perlu.

Tulisan ini untuk para programer pemula dan menengah. Agar dapat menjadi acuan dalam membuat database

 

MEMPELAJARI DATABASE

Dalam mempelajari Database, kita harus mengenal DBMSnya dalam hal ini nama muncul seperti

  • Mysql
  • Postgree
  • Oracle
  • Excel dan lain-lain

Masing-masing memiliki kemudahan dan kekurangan. Kemudahan, kekurangan, tantangan dan hambatan inilah yang harus dipelajari untuk memahami Database. Setelah memahami, kita dapat menentukan bagaimana pola belajar database tersebut.

 

Dalam tulisan ini, saya lebih menyorot ke MYSQL. Ada sedikit bahas postgree tetapi tidak banyak.

Continue reading “Mempelajari DBMS (Dasar)”

Advertisements

CodeIgniter: Penulisan Multi Koneksi

Multi koneksi adalah koneksi lebih dari satu yang dapat berjalan di Framework CodeIgniter. Penulisannya sama seperti penulisan ‘default’ namun memakai nama berbeda

$db['test'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'database_name',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'compress' => FALSE,
        'encrypt' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);

atau

$db['test'] = $db['test'];
$db['test']['hostname'] = 'localhost';
$db['test']['username'] = 'username';
$db['test']['database'] = 'db name';
$db['test']['password'] = 'password';

Penggunaan Multi Koneksi ini dapat dimanfaatkan apabila CI memiliki lebih dari 1 database yang akan digunakan. Atau memiliki 2 logika koneksi yang berbeda-beda. Dimana logika pertama memiliki prefix dan lainnya tidak memakai prefix

Koneksi Utama

koneksi utama yang digunakan adalah default. Apabila ingin menggantikan dengan lain seperti “test” dapat menggunakan
$active_group = 'test';

Dalam program yang baik, disarankan memakai prefix dalam configurasinya. Tetapi sejalan dengan proses yang sering terjadi bentrok penamaan table. Disarankan memiliki 2 tipe koneksi database yaitu tanpa prefix dan dengan prefix. Hal ini dikarenakan adanya problem dalam penulisan nama saat menjalankan join.

CodeIgniter: Penulisan Koneksi Gagal

Apabila terjadi masalah koneksi pada koneksi utama (default). Parameter Failover dapat digunakan . Setting untuk menjalankan seperti penulisan berikut

$db['default']['failover'] = array(
                array(
                        'hostname' => 'localhost1',
                        'username' => '',
                        'password' => '',
                        'database' => '',
                        'dbdriver' => 'mysqli',
                        'dbprefix' => '',
                        'pconnect' => TRUE,
                        'db_debug' => TRUE,
                        'cache_on' => FALSE,
                        'cachedir' => '',
                        'char_set' => 'utf8',
                        'dbcollat' => 'utf8_general_ci',
                        'swap_pre' => '',
                        'encrypt' => FALSE,
                        'compress' => FALSE,
                        'stricton' => FALSE
                ),
                array(
                        'hostname' => 'localhost2',
                        'username' => '',
                        'password' => '',
                        'database' => '',
                        'dbdriver' => 'mysqli',
                        'dbprefix' => '',
                        'pconnect' => TRUE,
                        'db_debug' => TRUE,
                        'cache_on' => FALSE,
                        'cachedir' => '',
                        'char_set' => 'utf8',
                        'dbcollat' => 'utf8_general_ci',
                        'swap_pre' => '',
                        'encrypt' => FALSE,
                        'compress' => FALSE,
                        'stricton' => FALSE
                )
        );
penulisan koneksi dapat digunakan untuk konfigurasi lainnya.

CodeIgniter: Penulisan Dsn

Untuk Beberapa penulisan koneksi tertentu ( PDO, PostgreSQL, Oracle, ODBC), dimana diperlukan DSN. Maka penulisan DSN adalah sebagai berikut

  1. ODBC
    odbc:testdb
    odbc:DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=localhost;PORT=50000;DATABASE=SAMPLE;PROTOCOL=TCPIP;UID=db2inst1;PWD=ibmdb2;
    odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\db.mdb;Uid=Admin
  2. PostgreSQL
    pgsql:host=localhost;port=5432;dbname=database_name
  3. Mysqli
    mysql:dbname=testdb;host=127.0.0.1

    mysql:host=localhost;dbname=testdb


    mysql:host=localhost;port=3307;dbname=testdb


    mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

    Pada PHP 5.3.6, charset tidak akan digunakan
  4. CUBRID
    cubrid:dbname=demodb;host=localhost;port=33000
  5. FIREBIRD
    firebird:dbname=/path/to/DATABASE.FDB

    firebird:dbname=hostname/port:/path/to/DATABASE.FDB
    firebird:dbname=localhost:/var/lib/firebird/2.5/data/employee.fdb
  6. MSSQL.
    mssql:host=localhost;dbname=testdb
    sybase:host=localhost;dbname=testdb
    dblib:host=localhost;dbname=testdb

    memanfaatkan ODBC sangat disarankan
  7. IBM DB2

    ibm:DSN=DB2_9


    DRIVER={IBM DB2 ODBC DRIVER};DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;


    ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb; HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;
  8. Informix

    informix:DSN=Infdrv33


    informix:host=host.domain.com; service=9800;
    database=common_db; server=ids_server; protocol=onsoctcp;
    EnableScrollableCursors=1
  9. Oracle
    oci:dbname=mydb
    oci:dbname=//localhost:1521/mydb
  10. SQLite

    sqlite:/opt/databases/mydb.sq3

    sqlite::memory:

    sqlite2:/opt/databases/mydb.sq2

    sqlite2::memory:

Apabila parameter yang digunakan kurang, CodeIgniter akan melengkapi dalam menjalankan perintah PDO.

Silakan memeriksa pada dokumentasi PHP untuk memastikan formatnya

Sumber: Dokumentasi PHP

CodeIgniter: penulisan config database

Konfigurasi database yang dapat digunakan untuk Codeigniter. Semua konfigurasi ini dapat ditulis di config/database.php

Konfigurasi ditulis dalam bentuk array

$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'database_name',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);

Untuk Beberapa penulisan koneksi tertentu ( PDO, PostgreSQL, Oracle, ODBC), dimana diperlukan DSN. Maka penulisan DSNnya dapat dimasukkan kedalam parameter DSN seperti contoh berikut

// PDO
$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';

// Oracle
$db['default']['dsn'] = '//localhost/XE';

sehingga konfigurasinya

$db['default'] = array(
        'dsn'   => = 'pgsql:host=localhost;port=5432;dbname=database_name',
        'hostname' => '',
        'username' => '',
        'password' => '',
        'database' => '',
        'dbdriver' => '',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);
mengisi kemungkinan akan membuat parameter lainnya tidak dibaca

Query Builder

Secara default, Query builder dalam keadaan TRUE. Namun apabila tidak menginginkan penggunaan Query Builder dalam projek, dapat dimatikan dengan memasukkan parameter FALSE

$query_builder = TRUE;

CodeIgniter: Penamaan Field dan Table

Tidak ada Penulisan baku untuk penamaan table maupun field. Terutama untuk menentukan tipe field dari field. Dalam memberikan nama table atau field, disarankan

  • Jelas
  • memakai Format yang sama. contoh: penulisan field pertama nama_lengkap. penulisan field kedua malah tanggallahir
  • memakai bahas yang sama. Apabila kesulitan, memadukan disarankan
  • pendek atau disingkat
  • memakai prefix. bersifat Optional

Prefix

Tujuan memakai Prefix adalah untuk membedakan table-table bernama sama. Apabila dalam 1 database terdapat 2-lebih projek. Biasanya ini berkaitan dengan projek ERP yang meletakkan database pada tempat yang sama (DBMS dan tidak pada database berbeda).

Dengan memakai prefix, dapat diketahui sumber aplikasi/projek yang menggunakan. Ada banyak alasan yang lain, tetapi utamakan pada penggunaan yang dapat mudah terbaca para programer yang menggunakan.

CodeIgniter: Fungsi pendukung Query Builder

Untuk penulisan terbaik adalah memanfaatkan query builder yang tersedia di CodeIgniter. Pemanfaatan Query Builder dapat mengurangi kerumitan penulisan coding kedepannya. Untuk dukungan atas penulisan query, terutama untuk proses debuging ada beberapa fungsi pendukung yang sangat membantu.

Field yang terpengaruh

dalam proses insert dan nantinya Update, akan ada field/data yang akan terpengaruh. Untuk mengetahui jumlah yang terpengaruh. Dapat menggunakan
$this->db->affected_rows();

letakkan setelah proses query insert, update dan delete berjalan.

Error

apabila menginginkan proses error dapat terlihat. manfaatkan perintah
$this->db->error();

letakkan dibawah proses query. Pastikan proses query berjalan salah. Dan perintah ini akan mengeluarkan error yang terjadi

 

pastikan debug error dalam keadaan mati dalam configurasi. Bila tidak, error akan keluar tanpa kecuali