Kenangan Masa Kecil

18 September 2013 14:37:51 Dibaca : 222

Muntoi, 2 September 2013

Pukul 6.30 pm

Aku jadi tersenyum sendiri. Kenangan-kenangan itu tergambar dengan jelas di pikiranku. Berputar bagaikan rol film yang diputar di bioskop zaman dulu. Berkelabat bagaikan potongan-potongan gambar kehidupan yang bergerak cepat. Baru ku sadari, lima tahun telah berlalu. Banyak yang telah berubah. Pun kita…

Dedikasi: untuk sahabat-sahabat masa kecilku

 

Entity Relationship Diagram

26 December 2012 23:54:39 Dibaca : 1075

Dalam rekayasa perangkat lunak, sebuah Entity-Relationship Model (ERM) merupakan abstrak dan konseptual representasi data. Entity-Relationship adalah salah satu metode pemodelan basis data yang digunakan untuk menghasilkan skema konseptual untuk jenis/model data semantik sistem. Dimana sistem seringkali memiliki basis data relasional, dan ketentuannya bersifat top-down. Diagram untuk menggambarkan model Entitiy-Relationship ini disebut Entitiy-Relationship diagram, ER diagram, atau ERD.

Ada sejumlah konvensi mengenai Notasi ERD. Notasi klasik sering digunakan untuk model konseptual. Berbagai notasi lain juga digunakan untuk menggambarkan secara logis dan fisik dari suatu basis data, salah satunya adalah IDEF1X.

Notasi-notasi simbolik yang digunakan dalam Entity Relationship Diagram adalah sebagai berikut :

1. Entitas

Adalah segala sesuatu yang dapat digambarkan oleh data. Entitas juga dapat diartikan sebagai individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu yang lain (Fathansyah, 1999). Ada dua macam entitas yaitu entitas kuat dan entitas lemah. Entitas kuat merupakan entitas yang tidak memiliki ketergantungan dengan entitas lainnya. Contohnya entitas anggota. Sedangkan entitas lemah merupakan entitas yang kemunculannya tergantung pada keberadaaan entitas lain dalam suatu relasi.

2. Atribut

merupakan pendeskripsian karakteristik dari entitas. Atribut digambarkan dalam bentuk lingkaran atau elips. Atribut yang menjadi kunci entitas atau key diberi garis bawah.

3. Relasi/Hubungan

menunjukkan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda.

4. Kardinalitas

Menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas yang lain. Macam-macam kardinalitas adalah:

1. Satu ke satu (one to one), Setiap anggota entitas A hanya boleh berhubungan dengan satu anggota entitas B, begitu pula sebaliknya.

2. Satu ke banyak (one to many), Setiap anggota entitas A dapat berhubungan dengan lebih dari satu anggota entitas B tetapi tidak sebaliknya.

3. Banyak ke banyak (many to many), Setiap entitas A dapat berhubungan dengan banyak entitas himpunan entitas B dan demikian pula sebaliknya.

4. Banyak ke satu (many to one)

Contoh Kasus:

Sebuah perusahaan yang bergerak dalam bidang konstruksi mempunyai beberapa bagian. Masing-masing bagian mempunyai satu pengawas dan beberapa pegawai. Pegawai ditugaskan pada beberapa bagian. Dan pegawai-pegawai tersebut mendapat tugas pada satu proyek. Selain itu, pengawas juga bertugas mengawasi proyek.

Jadi, dari studi kasus di atas diketahui bahwa entitasnya adalah:

1. Bagian

2. Pengawas

3. Pegawai

4. Proyek

Atribut dari entitas-entitas di atas adalah:

1. Bagian = Nama Bagian

2. Pengawas = NIP dan Nama Pengawas

3. Pegawai = NIP dan Nama Pegawai

4. Proyek = Nama Proyek

Kemudian, relasi serta pemetaan kardinalitas dari entitas-entitas tersebut di atas adalah

Bagian dijalankan oleh pengawas pemetaan kardinalitasnya adalah many to many

Pengawas mengawasi proyek pemetaan kardinalitasnya adalah many to one

Pegawai ditugaskan ke bagian pemetaan kardinalitasnya adalah many to many

Pegawai bekerja pada proyek pemetaan kardinalitasnya adalah many to one

Jadi, diagram entity pada kasus di atas adalah sbb:

 

Syntax SQL (Relasi Tabel pada database)

23 December 2012 18:58:55 Dibaca : 232

Relasi table pada database sangat diperlukan untuk menyederhanakan data-data kita, dan supaya mudah untuk diatur. Ada beberapa cara yang digunakan untuk merelasikan table.

A. Cara Manual

Cara manual untuk merelasikan kudua table yaitu dengan query seperti berikut

mysql> select produk.id_produk,produk.nm_produk,jenis.nm_jenis from

produk,jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 1 |Lemari | Elektronik |

| 1 | Lemari | FOOD |

| 2 | Kulkas | Furniture |

| 2 | Kulkas | Elektronik |

| 2 | Kulkas | FOOD |

| 3 | Meja | Furniture |

| 3 | Meja | Elektronik |

| 3 | Meja | FOOD |

| 4 | Bangku | Furniture |

| 4 | Bangku | Elektronik |

| 4 | Bangku | FOOD |

| 5 | Televisi | Furniture |

| 5 | Televisi | Elektronik |

| 5 | Televisi | FOOD |

| 6 | Komputer | Furniture |

| 6 | Komputer | Elektronik |

| 6 | Komputer | FOOD |

+-----------+-----------+------------+

18 rows in set (0.00 sec)

Karena tidak sesuai yang kita harapkan.terdapat banyak redudansi data pada output diatas nah,untuk mengatasi hal tersebut kita bias gunakan klausa wheresehingga query nya jadi seperti berikut

mysql> select produk.id_produk,produk.nm_produk,jenis.nm_jenis from

produk,jenis where produk.no_jenis=jenis.no_jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 2 | Kulkas | Elektronik |

| 3 | Meja | Furniture |

| 4 | Bangku | Furniture |

| 5 | Televisi | Elektronik |

| 6 | Komputer | Elektronik |

+-----------+-----------+------------+

6 rows in set (0.00 sec)

Sekarang tabel sudah muncul sesuai yang diharapkan. Ini dikarenakan yang kita relasikan hanya no_jenis di table produk dan no_jenis di table jenis.

B. Join Table

1. CROSS JOIN

Pada dasarnya cross join tidak ada bedanya dengan Cara manual di atas yang membedakan adalah tanda Koma(,) sesudah kata from.query nya seperti berikut.

mysql> select produk.id_produk,produk.nm_produk,jenis.nm_jenis from

produk cross join jenis where produk.no_jenis=jenis.no_jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 2 | Kulkas | Elektronik |

| 3 | Meja | Furniture |

| 4 | Bangku | Furniture |

| 5 | Televisi | Elektronik |

| 6 | Komputer | Elektronik |

+-----------+-----------+------------+

Bisa kita lihat tanda koma pada cara manual, di cara Cross join diganti dengan klausa Cross join. Klausa Cross Join ini selain bias menggunakan klausa where juga bisa menggunakan kalusa On.

mysql> select produk.id_produk,produk.nm_produk,jenis.nm_jenis from

produk cross join jenis on produk.no_jenis=jenis.no_jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 2 | Kulkas | Elektronik |

| 3 | Meja | Furniture |

| 4 | Bangku | Furniture |

| 5 | Televisi | Elektronik |

| 6 | Komputer | Elektronik |

+-----------+-----------+------------+

6 rows in set (0.00 sec)

2. STRAIGHT JOIN

Straight Join juga pada dasarnya sama seperti cross join perbedaan yang jelas disini adalah Straight Join tidak bisamenggunakan Klausa Kondisi seperti Where atau On.

mysql> select id_produk,nm_produk,nm_jenis from produk straight join

jenis where produk.no_jenis=jenis.no_jenis;

ERROR 1054 (42S22): Unknown column 'produk.no_jenis' in 'where clause'

mysql> select id_produk,nm_produk,nm_jenis from produk straight join

jenis on produk.no_jenis=jenis.no_jenis;

ERROR 1054 (42S22): Unknown column 'produk.no_jenis' in 'on clause'

mysql> select id_produk,nm_produk,nm_jenis from produk straight join

jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 1 | Lemari | Elektronik |

| 1 | Lemari | FOOD |

| 2 | Kulkas | Furniture |

| 2 | Kulkas | Elektronik |

| 2 | Kulkas | FOOD |

| 3 | Meja | Furniture |

| 3 | Meja | Elektronik |

| 3 | Meja | FOOD |

| 4 | Bangku | Furniture |

| 4 | Bangku | Elektronik |

| 4 | Bangku | FOOD |

| 5 | Televisi | Furniture |

| 5 | Televisi | Elektronik |

| 5 | Televisi | FOOD |

| 6 | Komputer | Furniture |

| 6 | Komputer | Elektronik |

| 6 | Komputer | FOOD |

+-----------+-----------+------------+

18 rows in set (0.00 sec)

Jadi kesimpulannya jangan gunakan Straight join supaya tidak ada penumpukkan/redudansi data.

3. INNER JOIN

Inner Join konseprnya sama seperti Cross Join. Tidak ada perbedaan apapun

mysql> select id_produk,nm_produk,nm_jenis from produk inner join jenis

on produk.no_jenis=jenis.no_jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 2 | Kulkas | Elektronik |

| 3 | Meja | Furniture |

| 4 | Bangku | Furniture |

| 5 | Televisi | Elektronik |

| 6 | Komputer | Elektronik |

+-----------+-----------+------------+

6 rows in set (0.00 sec)

mysql> select id_produk,nm_produk,nm_jenis from produk inner join jenis

where produk.no_jenis=jenis.no_jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 2 | Kulkas | Elektronik |

| 3 | Meja | Furniture |

| 4 | Bangku | Furniture |

| 5 | Televisi | Elektronik |

| 6 | Komputer | Elektronik |

+-----------+-----------+------------+

6 rows in set (0.00 sec)

4. LEFT JOIN

Left Join digunakan untuk menampilkan semua record pada table di sebelah kiri .

mysql> select id_produk,nm_produk,nm_jenis from produk left join jenis

on produk.no_jenis=jenis.no_jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 2 | Kulkas | Elektronik |

| 3 | Meja | Furniture |

| 4 | Bangku | Furniture |

| 5 | Televisi | Elektronik |

| 6 | Komputer | Elektronik |

+-----------+-----------+------------+

6 rows in set (0.00 sec)

Pada contoh diatas left join akan menampilkan semua record pada table di sebelah kiri yaitu table produk sedangkan table jenis berada disebelah kanan sehingga table jenis akan menyesuaikan.

5. RIGHT JOIN

Kebalikan dari left join ,right join digunakan untuk menampilkan semua record pada table di sebelah kanan.

mysql> select id_produk,nm_produk,nm_jenis from produk right join jenis

on produk.no_jenis=jenis.no_jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 3 | Meja | Furniture |

| 4 | Bangku | Furniture |

| 2 | Kulkas | Elektronik |

| 5 | Televisi | Elektronik |

| 6 | Komputer | Elektronik |

| NULL | NULL | FOOD |

+-----------+-----------+------------+

7 rows in set (0.00 sec)

Dapat dilihat Table jenis akan ditampilkan semua sehingga untuk field/kolom nm_jenis FOOD karena tidak ada pasangan di table produk maka table produk akan otomatis mengisinya dengan NULL. Right Join dan Left Join tidak bisa menggunakan klausa where.

6. NATURAL JOIN

Natural Join ini mungkin merupakan jawaban bagi query-query yang panjang seperti diatas. Karena tanpa menggunakan kalusa where, natural join akan secara otomatis merelasikan table tersebut dengan sangat tepat.

mysql> select id_produk,nm_produk,nm_jenis from produk natural join

jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 2 | Kulkas | Elektronik |

| 3 | Meja | Furniture |

| 4 | Bangku | Furniture |

| 5 | Televisi | Elektronik |

| 6 | Komputer | Elektronik |

+-----------+-----------+------------+

6 rows in set (0.00 sec)

Jika menggunakan where:

mysql> select id_produk,nm_produk,nm_jenis from produk natural join

jenis where produk.no_jenis=jenis.no_jenis;

+-----------+-----------+------------+

| id_produk | nm_produk | nm_jenis |

+-----------+-----------+------------+

| 1 | Lemari | Furniture |

| 2 | Kulkas | Elektronik |

| 3 | Meja | Furniture |

| 4 | Bangku | Furniture |

| 5 | Televisi | Elektronik |

| 6 | Komputer | Elektronik |

+-----------+-----------+------------+

6 rows in set (0.00 sec)

Natural join tidak bisa menggunakan klausa on.

Sumber:

Komunitas eLearning IlmuKomputer.Com

Normalisasi pada Database

21 November 2012 08:53:50 Dibaca : 359

Normalisasi bisa juga disebut Well Structure Relation atau proses pengelompokan atribut-atribu dari suatu relasi. Ada beberapa bentuk dalam normalisasi, yaitu Unnormalized Form, First Normal Form (1NF), Second Normal Form (2NF), Third Normal Form (3NF) dan Boyce-Codd Normal Form (BNF).

Bentuk Unnormalized Form

 

  • Value pada kolom Kode_Matkul lebih dari 1, itulah mengapa masih disebut Unnormalized.

Bentuk First Normal Form (1NF)

  • Value pada masing-masing kolom hanya ada Satu

Bentuk Second Normal Form (2NF)

Memiliki ketergantungan fungsional

Tabel 1

Tabel 2

Tabel 3

Pada bentuk 1NF, masih terdapat ketidaktergantungan terhadap beberapa kolom (misal TTL tidak bergantung pada kode_matkul), sehingga tabel dipecah menjadi 3 bagian agar tabel-tabel tersebut dapat memiliki ketergantungan terhadapat kolom-kolomnya (misal NIM bergantung pada nama_mhs dan ttl).

Bentuk Third Normal Form (3NF)

Tabel 1 dan 2 sudah memenuhi criteria bantuk 3NF, namun tidak untuk tabel 3, karena bila kita ingin merubah value bobot dari nilai, maka kita akan melakukan perubahan pada banyak record/baris yang lainnya. Sehingga pada bentuk 3NF, tabel 3 dapat dipecah lagi menjadi 2 tabel agar memenuhi kriteria bentuk 3NF.

Tabel 3a

Tabel 3b

 

Sumber: http://blog-dani.com/database/normalisasi-pada-database.html

Bahasa SQL

03 October 2012 12:30:54 Dibaca : 228

1. DDL - Data Definition Language

DDL - Data Definition Language merupakan kumpulan perintah SQL yang digunakan untuk membuat, mengubah dan menghapus struktur dan definisimetadata dari objek-objek database.

Objek-objek database pada yang dimaksud - pada MySQL - adalah sebagai berikut:
  • Database
  • Table
  • View
  • Index
  • Procedure (Stored Procedure)
  • Function
  • Trigger

 

Berikut adalah contoh perintah DDL yang digunakan pada MySQL.
  • Perubahan (ALTER & RENAME)
    • ALTER DATABASE
    • ALTER FUNCTION
    • ALTER PROCEDURE
    • ALTER TABLE
    • ALTER VIEW
    • RENAME TABLE
  • Penghapusan (DROP)
    • DROP DATABASE
    • DROP FUNCTION
    • DROP INDEX
    • DROP PROCEDURE
    • DROP TABLE
    • DROP TRIGGER
    • DROP VIEW

2. DML - Data Manipulation Language

DML sendiri adalah kumpulan perintah SQL yang berhubungan dengan pekerjaan mengolah data di dalam table - dan tidak terkait dengan perubahan struktur dan definisi tipe data dari objek database seperti table, column, dan sebagainya.

 Beberapa daftar Perintah DML MySQL 5.0

  • CALL
  • DELETE
  • DO
  • HANDLER
  • INSERT
  • LOAD DATA INFILE
  • REPLACE
  • SELECT
  • TRUNCATE
  • UPDATE

3. DCL dan Join Pada SQL

 

DCL atau Data Control Language merupakan perintah SQL yang berhubungan dengan pengaturan hak akses user MySQL, baik terhadap server, database, tabel maupun field. Perintah SQL yang termasuk dalam DCL antara lain:

* GRANT : Perintah ini digunakan untuk memberikan hak / izin akses oleh administrator (pemilik utama) server kepada user (pengguna biasa). Hak akses tersebut berupa hak membuat (CREATE), mengambil (SELECT), menghapsu (DELETE), mengubah (UPDATE) dan hak khusus berkenaan dengan sistem databasenya.

SINTAKS : GRANT privileges ON tbname TO user

CONTOH : grant select, update, insert, delete on perpustakaan.buku to 'ali'@'localhost';

* REVOKE : perintah ini memiliki kegunaan terbalik dengan GRAND, yaitu untuk menghilangkan atau mencabut hak akses yang telah diberikan kepada user oleh administrator.

SINTAKS : REVOKE privileges ON tbname FROM user

CONTOH : revoke select, update, insert, delete on perpustakaan.buku from 'ali'@'localhost';

* JENIS JENIS JOIN SQL:

1. INNER JOIN : hanya akan menampilkan baris untuk data yang memiliki nilai yang sama pada field kunci dengan tabel yang berelasi

2. LEFT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kiri.

3. RIGHT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kanan.

4. FULL JOIN : merupakan gabungan dari LEFT JOIN dan RIGHT JOIN.