Senin, 30 November 2015

SISTEM BASIS DATA

     1.      Basis Data dan Sistem Basis Data
Basis data terdiri dari 2 kata yaitu, basis yang artinya gudang dan data yang artinya sekumpulan informasi fakta dunia nyata yang mewakili suatu objek, seperti manusia, barang, dan lain-lain yang direkam kedalam bentuk angka, gambar, simbol, teks, bunyi, huruf atau kombinasinya. Jadi pengertian basis data adalah kumpulan data-data yang terorganisasi yang saling berhubungan sedemikian rupa sehingga dapat mudah disimpan, dimaniplasi, serta dipanggil oleh penggunanya.
Sistem basis data adalah suatu sistem yang menyusun dan mengelola record-record menggunakan komputer untuk menyimpan atau merekam serta memelihara data-data lengkap sebuah organisasi/perusahaan sehingga mampu menyediakan informasi yang optimal yang diperlukan pemakai untuk proses pengambilan keputusan.
Dalam pembuatannya, biasanya para analis melakukan desain basis data terlebih dahulu untuk memudahkan pembuatan, pengolahan, dan penerapan basis data yang dibuat. Desain basis data tersebut menggunakan Entity Relationship Diagram (ERD). Tool yang digunakan untuk membuat desain basis data diantaranya Ms. Visio dan Power Desaigner.
Tujuan dan kegunaan sistem basis data yaitu mengatasi permasalahan yang timbul dari cara konvensional, masalah yang diatasi diantaranya:
·         Redudansi data dan inkonsistensi data
·         Kesulitan pengaksesan data
·         Data isolation
·         Konkurensi
·         Masalah keamanan data
·         Masalah integritas data

           2.      Integritas Data
Integritas data adalah jaminan konsistensi data terhadap semua status konstrain yang diberlakukan kepada data tersebut, sehingga memberikan jaminan keabsahan data itu sendiri. Integritas data sangat erat kaitannya dengan keamanan keberadaan data, dimana dapat terjadi secara institusional dan asidential.
Integritas data berarti data itu akurat, konsisten dan terbaru. Dalam perangkat lunak basis data, berkurangnya pengulangan data berarti meningkatkan kesempatan integritas data karena semua perubahan hanya dilakukan di satu tempat. Selain itu, banyak perangkat lunak basis data yang menyediakan sistem cek bawaan yang membantu memastikan akurasi data yang dimasukkan. Sebuah basis data dengan data yang tidak benar tidak akan bisa menghasilkan informasi yang benar.
Jenis-jenis integritas data dapat dikelompokan sebagai berikut :
·         Entity Integritas
Tidak boleh ada baris data duplikat dalam satu tabel
·         Domain Integritas
Tidak ada item yang melanggar jangkauan nilai di tiap kolom data
·         Refrential Integritas
Menjaga relasi atau korespondensi suatu tabel
·         User Defined Integritas
Data disuatu tabel harus memiliki nilai yang layak dan dapat diterima ditempat sistem basis data itu diterapkan.
Contoh dalam penanganan integritas untuk menangani proses update dan delete pada satu key: Jika primary key bukan sebagai foreign key, maka operasi proses update dan delete dapat dilakukan. Tetapi jika primary key merupakan foreign key, maka operasi proses update dan delete tidak dapat dilakukan, atau dapat dilakukan dengan cara melakukan pengaturan nilai foreign key ke nilai NULL atau kenilai tertentu yang telah disepakati.

           3.      Transaksi & Concurrency

Transaksi adalah satu atau beberapa aksi program aplikasi yang mengakses/mengubah isi basis data. Transaksi merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basisdata dan bahkan juga melakukan serangkaian perubahan data. DBMS yang kita gunakan harus menjamin bahwa setiap transaksi harus dapat dikerjakan secara utuh atau tidak sama sekali. Tidak boleh ada transaksi yang dikerjakan hanya sebagian, karena dapat menyebabkan inkonsistensi basis data. Untuk itu transaksi selalu merubah basis data dari satu kondisi konsisten ke kondisi konsisten lain.

Transaksi bertujuan untuk mencegah dari kehilangan ataupun kerusakan data. Untuk menjamin agar integritas dapat tetap terpelihara maka setiap transaksi harus memiliki sifat-sifat :
·         Atomicity, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali.
·         Consistency, dimana eksekusi transaksi harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
·         Isolation, jika pada sebuah sistem basis data terdapat sejumlah transaksi yang dilaksanakan secara bersamaan, maka semua transaksi yang dilaksanakan pada saat yang bersamaan tersebut harus dapat dimulai dan bisa berakhir.
·         Durability, dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem mati.

Sebuah transaksi memiliki 2 kemungkinan :
a.       Commit : jika dilaksanakan lengkap seluruhnya dan basis data mencapai keadaan konsisten baru.
b.      Rollback : jika transaksi tidak sukses, maka transaksu dibatalkan dan basis data dikembalikan ke keadaan konsisten sebelumnya.

Ada 3 fenomena yang harus dicegah selama eksekusi transaksi yang konkuren adalah:
a.       Dirty reads : sebiah transaksi membaca data yang telah ditulis oleh transaksi yang lain tetapi belum di commit oelh transaksi lain tersebut.
b.      Non repeatable reads : sebuah transaksi yang membaca kembali sebuah data dimana data tersebut sudah dirubah/dihapus oleh transaksi lain dan telah di commit.
c.       Phantom reads : sebuah transaksi menjalankan kembali sebuah query yang pertama dilakukan dengan query yang kedua memberikan hasil eksekusi jumlah row berbeda.

Konkurensi (Concurrency) adalah sebagai suatu firut dimana DBMS mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama. Dalam melakukan konkurensi dibutuhkan suatu Concurrensy Control Mechanism (CCM) agar transaksi yang dilakukan oleh banyak user pada suatu sistem didalam waktu yang bersamaan tidak saling “mengganggu” dan tidak menghasilkan inconsistency data.

Ada 3 masalah dalam konkurensi, yaitu :
a.       Lost update problem : masalah operasi update yang sukses dari seorang pengguna kemudian ditimpali oleh operasi update dari pengguna lain.
b.      Uncommited depedency problem : masalah terjadi saat suatu transaksi membaca data dari transaksi lain yang belum di commit.
c.       Inconsistent analysis problem : masalah terjadi saat satu transaksi membaca beberapa nilai tetapi transaksi kedua pada waktu sama memodifikasi nilai tersebut.


           4.      XML

XML (Extensible Markup Language) merupakan representasi data yang bisa didefinisikan sesuai keinginan pengguna. Karena formatnya yang standar dan fleksibel, XML sering dipergunakan pada berbagai pertukaran informasi. Dan merupakan suatu keuntungan bagi kita bisa menyimpan pada basis data dan memprosesnya. XML tidak dikonsentrasi untuk pemrosesan dan penampilan data tetapi terutama dimaksudkan untuk memberitahu komputer apa arti sesungguhnya dari data yang disertakan.

XML tidak bergantung pada satu platform alias platform independent juga language independent. Ditujukan untuk melakukan pertukaran data (data transfering). XML juga sangat berguna untuk membantu search engine dalam melakukan tugasnya, karena XML bisa mengetahui dan memahami dengan pasti apa yang sesungguhnya ada di suatu halaman web.

Aplikasi XML
·         Mendeskripsikan dokumen
·         Pertukaran data
·         Database

Aturan dalam sintaks XML
·         Seluruh elemen XML harus memiliki tag penutup
Contoh :
<student> </student>
·         Tag XML adalah case-sensitive
Contoh :
<Name>Benrigo Novansar</name>
·         Elemen XML harus disarangkan dengan tepat
Contoh :
<student>
<id>1400871</id>
<name>Benrigo Novansar</name>
</student>

XML parser

Parser adalah program untuk “membaca” dokumen XML. Ada dua cara :
·         Tree based, isi XML dipindahkan ke memori terlebih dahulu, DOM (Document Object Model).
·         Event based, isi tidak dipindahkan ke momori. Fungsi callback dipanggil setiap menemui element, SAX (Simple API XML).






           5.      Back End Program

Back-end programming adalah program yang berjalan pada basis data secara otomatis ketika terjadi suatu pemicu tertentu. Dalam oracle ada beberapa metode untuk melakukan back-end programming, yaitu dengan trigger dan stored procedure.

Trigger
Trigger adalah blok PL/SQL yang disimpan dalam basis data dan akan diaktivasi ketika kita melakukan statement-statement SQL (Delete, Update, Insert) pada sebuah tabel. Aktivasi trigger didasarkan pada event yang terjadi didalam tabel tersebut sehingga triggert dapat membantu dalam menjaga integritas dan konsistensi data. Implementasi trigger yang sering ditemui dalam dunia nyata adalah untuk mengeset dan mengubah nilai kolom dalam suatu tabel sehingga validasi nilai dari tabel tersebut akan terjaga. Adanya trigger dalam basis data akan meringankan kita dalam pembuatan aplikasi karena didalam aplikasi yang kita buat, kita tidak perlu lagi untuk melakukan validasi data.

Stored procedure
Stored procedure adalah subprogram yang disimpan didalam basis data berupa SQL + bahasa prosedural. Ada beberapa kelebihan yang dapat diperoleh dengan menggunakan stored procedure, meliputi :
·         Dijalankan di database server -> performance lebih baik, network trafik lebih rendah
·         Tools DBA -> praktis, selalu tersedia di database server
·         Dapat digunakan oleh banyak aplikasi
·         Dapat memanfaatkan tipe, fungsi yang disediakan DBMS
·         Powerfull, tools sangat penting bagi database designer, database programmer dan DBA
·         Hampir semua RDBMS mensupport
·         Walaupun sintaks berbeda, umumnya menggunakan prinsip yang sama

















Daftar Pustaka


Selasa, 07 April 2015

Membuat Database MySQL menggunakan CMD

Apa itu MySQL dan SQL?
Di dalam sistem basis data, basis data tidak dapat berdiri sendiri sehingga pasti terdapat komponen lain yang saling mendukung satu dengan lainnya. Hal yang dimaksud adalah sistem pengelola basis data atau Data Base Management System (DBMS). DBMS adalah perangkat lunak khusus yang digunakan untuk mengelola basis data. Perangkat lunak yang termasuk DBMS diantaranya meliputi dBase, Microsoft-Access, Oracle Database, dan MySQL. Adapun DBMS yang akan kita gunakan kali ini adalah MySQL. Dengan demikian, secara sederhana kita dapat mengatakan bahwa MySQL adalah perangkat lunak sistem manajemen basis data relasional yang digunakan untuk mengelola atau mengatur database yang memungkinkan user untuk berinteraksi dengan basis data di dalam disk. Lalu, Structured Query Language (SQL) adalah bahasa basis data yang paling populer saat ini.

Bagaimana Menjalankan MySQL?
1. Buka XAMPP Contol Panel, jika belum punya download disini
2. Start untuk Apache dan MySql
3. Karena kita kali ini menjalankannya di CMD maka buka CMD ketikkan:
    cd c:\xampp\mysql\bin
    mysql -u root
4. Selesai.

Kali ini saya akan membahas tentang ER-D, DDL, DML, Aggregation dan Grouping.                         

A. ER-D (Entity Relationship Diagram)
    ER-D adalah penerjemahan semesta data yang ada di 'dunia nyata' dengan memanfaatkan sejumlah perangkat konseptual menjadi sejumlah diagram data. Sederhananya, ER-D adalah suatu cara memodelkan suatu data di tingkat konseptual dalam perancangan basis data. Model ini juga merupakan alat modelling data yang populer dan banyak digunakan oleh para desainer basis data.

Komponen ER-D adalah sebagai berikut:

1. Entitas
    Entitas adalah orang, tempat, kejadian atau konsep yang informasinya akan direkam. Dalam Sistem Basis Data Entitas ini berupa sekumpulan data yang memiliki suatu informasi yang bermanfaat  bagi punggunanya  . Entitas dalam Sistem Basis Data memiliki peran sendiri –sendiri dalam menyampaikan informasi. Entitas dilambangkan dengan bentuk Persegi Panjang.

2. Atribut
  Atribut merupakan kolom pada sebuah relasi. Setiap entitas pasti memiliki aribut yang mendeskripsikan karakter dari entitas tersebut. Penentuan atau pemilihan atribut-atribut yang relevan bagi sebuah entitas merupakan hal penting dalam pembentukan model data. Ringkasnya,  atribut merupakan keseluruhan table tersebut. Atribut dilambangkan dengan bentuk Oval.

3. Relasi
    Relasi didefinisikan sebagai hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Sederhananya, relasi dikenal sebagai hubungan yang terjadi antara satu atau lebih entitas. Relasi pada ER-D direpresentasikan dalam bentuk bangun datar belah ketupat.

4. Kardinalitas
    Kardinalitas relasi menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas lain.


B. DDL (Data Definition Language)
     Perintah DDL adalah sebagai berikut:

1. Create 
  • Membuat Database
CREATE DATABASE nama_database;
contoh:
mysql> create database gempala_ikat;
Query OK, 1 row affected (0.09 sec)

untuk menggunakan database yg sudah dibuat, gunakan USE
contoh:
mysql> use gempala_ikat;
Database changed

  • Membuat Tabel
CREATE TABLE nama_tabel(
nama_field_1 tipe_data_1,
nama_field_2 tipe_data_2,
*
*
*
nama_field_n tipe_data_n
);
contoh:
mysql> create table dewanpengurus2012(
    -> npa varchar(6) primary key,
    -> nama varchar(30) not null,
    -> jabatan varchar(20) not null
    -> );
Query OK, 0 rows affected (0.10 sec)


2. DROP
  • Menghapus tabel
DROP TABLE nama_table;
  • Menghapus Database
DROP DATABASE nama_database;

3. ALTER
  • Mengubah nama tabel
ALTER TABLE nama_table_sebelum RENAME TO nama_table_yg_diinginkan;
  • Menambah Kolom/field
ALTER TABLE nama_table ADD COLUMN (nama_field tipe_data) not null);
  • Mengganti kolom/field
ALTER TABLE nama_table MODIFY nama_field tipe_data;
  • Menghapus kolom/field
ALTER TABLE nama_table DROP COLUMN nama_field;


C. DML (Data Manipulation Language)

1. INSERT
    Insert adalah perintah untuk menyisipkan, memasukan dan menyimpan data dari luar sistem kedalam table.

INSERT INTO nama_table (namafield1,namafield2,...namafieldn) values (isi1,isi2,isi3,.....);
contoh:
mysql> insert into dewanpengurus2012(npa,nama,jabatan) values
    -> ('GI1201','Fariz Indra Nuryana','Bidang Operasional'),
    -> ('GI1202','Arif Ginanjar','Divisi Rock Climbing'),
    -> ('GI1203','Arif Rahman Saleh','Divisi Hutan Gunung'),
    -> ('GI1204','Ajie Luhur Pangestu','Divivi Rock Climbing'),
    -> ('GI1205','Aprianti Gusmantini','Bendahara'),
    -> ('GI1206','Banrigo Novansar','Sekretaris Umum'),
    -> ('GI1207','Iman Amiruddin','Dana Usaha'),
    -> ('GI1208','Rizky Amalia','Kesekretariatan'),
    -> ('GI1209','Lita Oktapiana','Bidang Litbang'),
    -> ('GI1210','Hanif Al Kamal','Bidang Diklat'),
    -> ('GI1211','Widi Gusti Amalia','Divisi Hutan Gunung'),
    -> ('GI1212','Windy Nurfikri','Bidang Diklat'),
    -> ('GI1213','Witny Alya Manjari','Dana Usaha'),
    -> ('GI1214','M. Azis Wicaksono','Ketua DP');
Query OK, 14 rows affected (0.20 sec)
Records: 14  Duplicates: 0  Warnings: 0

2. SELECT
    Select adalah perintah untuk menampilkan isi table

SELECT *FROM nama_table;
contoh

mysql> select *from dewanpengurus2012;
+--------+---------------------+----------------------+
| npa      | nama              | jabatan              |
+--------+---------------------+----------------------+
| GI1201 | Fariz Indra Nuryana | Bidang Operasional   |
| GI1202 | Arif Ginanjar       | Divisi Rock Climbing |
| GI1203 | Arif Rahman Saleh   | Divisi Hutan Gunung  |
| GI1204 | Ajie Luhur Pangestu | Divivi Rock Climbing |
| GI1205 | Aprianti Gusmantini | Bendahara            |
| GI1206 | Banrigo Novansar    | Sekretaris Umum      |
| GI1207 | Iman Amiruddin      | Dana Usaha           |
| GI1208 | Rizky Amalia        | Kesekretariatan      |
| GI1209 | Lita Oktapiana      | Bidang Litbang       |
| GI1210 | Hanif Al Kamal      | Bidang Diklat        |
| GI1211 | Widi Gusti Amalia   | Divisi Hutan Gunung  |
| GI1212 | Windy Nurfikri      | Bidang Diklat        |
| GI1213 | Witny Alya Manjari  | Dana Usaha           |
| GI1214 | M. Azis Wicaksono   | Ketua DP             |
+--------+---------------------+----------------------+
14 rows in set (0.06 sec)

3. UPDATE
    Perintah ini digunakan untuk memperbarui data lama menjadi data baru.

UPDATE nama_table SET  field=nilai_baru WHERE kondisi;

4. DELETE
    Perintah ini digunakan untuk menghapus  atau menghilangkan baris data(record) dari table.

DELETE FROM nama_table WHERE kondisi;


D. AGGREGASI

1. AVG()
    Fungsi ini digunakan untuk menghasilkan nilai rata-rata dari sebuah kolom.

SELECT AVG(nama_field) FROM nama_table;

2. COUNT()
    Fungsi ini digunakan untuk menghasilkan nilai jumlah data dari suatu field

SELECT COUNT(nama_field) FROM nama_table;

3. MAX()
    Fungsi ini digunakan untuk menghasilkan nilai tertinggi dari sekelompok nilai dari sebuah field.

SELECT MAX(nama_field) FROM nama_table;

4. MIN()
    Fungsi ini digunakan untuk menghasilkan nilai terendah dari subuah field.

SELECT MIN(nama_field) FROM nama_table;

5. SUM()
    Fungsi ini digunakan untuk menghasilkan nilai total jumlah dari suatu field.

SELECT SUM(nama_field) FROM nama_table;

6. ROUND()
    Fungsi ini digunakan untuk melengkapi bidang numerik dengan jumlah desimal yang ditentukan.

SELECT ROUND(nama_field,jumlah_desimal) FROM nama_table;


E.GROUPING

1. ORDER BY
    Order by adalah perintah yang digunakan untuk menampilkan data secara terurut berdasarkan nilai tertentu. Order by dikelompok menjadi 2 jenis yaitu ascending (data diurutkan dari yang terkecil ke terbesar) dan descending(data diurutkan dari yang terbesar ke terkecil).

SELECT *FROM(nama_table) ORDER BY atribut ASC/DESC;
contoh:
mysql> select *from dewanpengurus2012 order by nama asc;
+--------+---------------------+----------------------+
| npa    | nama                | jabatan              |
+--------+---------------------+----------------------+
| GI1204 | Ajie Luhur Pangestu | Divivi Rock Climbing |
| GI1205 | Aprianti Gusmantini | Bendahara            |
| GI1202 | Arif Ginanjar       | Divisi Rock Climbing |
| GI1203 | Arif Rahman Saleh   | Divisi Hutan Gunung  |
| GI1206 | Banrigo Novansar    | Sekretaris Umum      |
| GI1201 | Fariz Indra Nuryana | Bidang Operasional   |
| GI1210 | Hanif Al Kamal      | Bidang Diklat        |
| GI1207 | Iman Amiruddin      | Dana Usaha           |
| GI1209 | Lita Oktapiana      | Bidang Litbang       |
| GI1214 | M. Azis Wicaksono   | Ketua DP             |
| GI1208 | Rizky Amalia        | Kesekretariatan      |
| GI1211 | Widi Gusti Amalia   | Divisi Hutan Gunung  |
| GI1212 | Windy Nurfikri      | Bidang Diklat        |
| GI1213 | Witny Alya Manjari  | Dana Usaha           |
+--------+---------------------+----------------------+
14 rows in set (0.03 sec)

2. GROUP BY
   Group by merupakan perintah yang digunakan untuk mengelompokan beberapa data pada perintah SELECT; 

SELECT *FROM(nama_table) GROUP BY atribut;

3. HAVING
    Fungsi Having terkait dengan GROUP BY dan AGREGASI. Biasanya digunakan untuk menentukan kondisi tertentu pada group by dan kondisi tersebut berkaitan dengan fungsi agrgasi. Fungsi HAVING sebenarnya memiliki kemiripan dengan WHERE dalam penggunaannya. HAVING digunakan dalam SQL karena WHERE tidak dapat digunakan dengan fungsi agregasi.

SELECT atribut FROM nama_table GROUP BY atribut HAVING fungsi_aggregasi;