Rabu, 25 November 2015

Rangkuman Sistem Basis Data

1.   
Basis Data dan Sistem Basis Data

Basis Data adalah suatu kumpulan data terhubung yang disimpan secara bersama-sama pada suatu media, yang diorganisasikan berdasarkan sebuah skema atau struktur tertentu, dan dengan software untuk melakukan manipulasi untuk kegunaan tertentu.
Sistem Basis Data merupakan sekumpulan basis data dengan para pemakai yang menggunakan basis data secara bersama-sama, personil yang merancang dan mengelola basis data, teknik-teknik untuk merancang dan mengelola basis data, serta sistem komputer yang mendukungnya.
Description: https://octoberplan.files.wordpress.com/2012/11/db6.jpg

2.    Integritas Data

Integritas data harus dijaga di level database karena akan sulit dan mahal jika menjaga integritas data di level aplikasi. Selain itu, menemukan bugs data yang tidak valid pada database sulit dillakukan. Berikut adalah cara-cara menjaga integritas data.
Jenis-jenis integritas data (via SQL):
·        CREATE DOMAIN yaitu untuk membuat tipe data baru. Misal: tipe Nilai sebagi integer dengan value antara 0 -100
·        NOT NULL yaitu field data harus diisi. Misal: NIM, Nama
·        UNIQUE yaiitu field data harus unik. Misal: No HP
·        PRIMARY KEY yaitu field data sebagai identitas record. Misal: NIM
·        CHECK yaitu batasan-batasan isi field data. Misal: 0<= umur <= 120
REFERENTIAL INTEGRITY
Integritas pada entitiy setiap table.
Syntax contoh untuk NOTNULL, UNIQUE, PRIMARY KEY, dan CHECK.
create table dosen ( nip char(9) not null, kode_dosen char(5) not null, nama varchar(20) not null, jum_anak small int, nama_pasangan varchar(20), tgl_masuk date, tgl_pensiun date,
Constraint
Constraint merupakan suatu aturan yang membatasi jenis data yang diizinkan untuk dimasukkan kedalam tabel.
Contoh constraint:
constraint pk1 primary key (nip), constraint un1 unique (kode_dosen), constraint c1 check (jum_anak between 0 and 15), constraint c2 check (tgl_masuk < tgl_pensiun));
• CHECK (gaji > 0 OR komisi >= 0)
• CHECK (gaji + komisi <= 5000)
• CHECK (lokasi IN (‘JAKARTA', ‘BANDUNG'));

3.    Transaksi

Transaksi dalam dunia IT berarti suatu aksi/perbuatan yang dilakukan oleh program bertujuan untuk mengakses atau mengubah data yang terdapat di database. Transaksi yang berlangsung tersebut, hanya mengenal dua hasil, yaitu berhasil secara keseluruhan, atau gagal sama sekali. Transaksi tersebut berarti tidak boleh berhasil setengah-setengah, harus berhasil secara keseluruhan.
Tujuan dari transaksi tersebut adalah untuk mencegah database dari kehilangan atau kerusakan data.
4 elemen penting pada transaksi, yaitu :
·        Atomicity : Ini berarti bahwa transaksi haruslah berhasil secara keseluruhan, atau gagal sama sekali.
·        Consistency : Menjaga konsistensi data di database
·        Isolation : Transaksi yang dilakukan secara bersamaan haruslah bisa dimulai dan bisa berakhir.
·        Durability : Setelah transaksi berakhir, data yang berubah tidak boleh kembali ke data awal walaupun sistem mati.
Dua Operasi Penting Transaksi
COMMIT
Memberi tanda bahwa transaksi telah selesai.Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan system).
ROLLBACK
Memberi tanda bahwa transaksi GAGAL.Semua update harus di-undo

4.    Concurrency

Proses-Proses yang disebut konkurensi apabila proses-proses (lebih dari satu proses) berada pada saat yang sama. Karena proses tersebut bisa saja tidak saling bergantung tetapi saling berinteraksi.
Masalah Concurrency
1. Lost update/kehilangan modifikasi.
Masalah operasi update yg sukses dari seorang pengguna kemudian ditimpali oleh operasi update dari pengguna lain
2. Uncommited dependency/ketergantungan pada saat belum commit
Permasalahan timbul pada saat transaksi dibiarkan melihat hasil dari transasksi lain yang belum commit.
3. Inconsistent analysis/analisis yang tidak konsisten
Permasalahan timbul apabila suatu transaksi membaca beberapa nilai tetapi transasksi berikutnya memodifikasi salah satu nilai.
Pengontrollan Concurrency
Lebih dari satu pengguna (pada DBMS terpusat) dapat melakukan operasi pada basis data secara simultan. Jika tidak dikontrol, hal ini dapat menyebab kan interferensi satu sama lain sehingga basis data menjadi tidak konsisten. Untuk mencegahnya, DBMS mengimple-mentasikan pengontrolan konkurensi. Implementasi pengamanan sangat penting untuk menjamin sistem tidak diinterupsi dan diganggu. Proteksi dan pengamanan terdapat perangkat keras dan sistem operasi yang sama pentingnya

5.    Back-end Programming

Backend Programming adalah code yang tidak terlihat oleh user dan bekerja dibelakang layar atau server.
Stored Procedure
Stored Procedure adalah sekumpulan perintah SQL yang disusun dalam sebuah prosedur yang memiliki nama dan fungsi tertentu.
Struktur badan procedur secara umum :
CREATE OR REPLACE PROCEDURE <nama procedure> AS            /*Deklarasi variable, type, dan local subprogram*/BEGIN            /*Bagian utama prosedur*/EXCEPTION            /*Penangan error*/END <nama procedur>;
Function
Selain Stored Procedure, terdapat juga Function. Sedikit berbeda dengan Stored Procedure, disini ada nilai yang dikembalikan.
Struktur badan Function secara umum:
CREATE OR REPLACE FUNCTION <nama fungsi> RETURN <tipe data>AS            /*Deklarasi variable, type, dan local subprogram*/BEGIN            /*Bagian utama fungsi*/EXCEPTION            /*Penangan error*/RETURN(<Nilai yang dikembalikan>);END <nama fungsi>;/
Untuk mengeksekusi stored procedure dan fungsi gunakan perintah :
EXECUTE <nama procedure/fungsi>;Sedangkan untuk menghapusnya menggunakan perintahDROP PROCEDURE/FUNCTIOM <nama procedure/function>;
Trigger
Secara keseluruhan trigger hampir sama dengan Procedure dan Function, hanya saja untuk Trigger dioperasikan secara otomatis ketika terdapat aktivitas statement-statement SQL seperti Insert, Update dan Delete. Trigger ini bisa diaktivasi sebelum atau pun sesudah terjadinya satatement-statement tersebut.
Struktur badan Trigger secara umum:
Trigger ini memiliki status apakah dia aktif atau nonaktif. Untuk mengubah status Trigger berikut sintaksnya :
ALTER TRIGGER <nama_trigger> DISABLE | ENABLE;
dimana DISABLE untuk menonaktifkan Trigger, dan ENABLE untuk mengaktifkan Trigger.
Sintaks untuk menghapus Trigger :
DROP TRIGGER <nama_trigger>;                                                                                          

6.    XML

XML (extendend Markup Languange) adalah bahasa markup yang digunakan untuk menyimpan data (tidak ada program) dan tidak tergantung dengan tools tertentu (seperti editor,dbms,compiler,dsb). Jika demikian, lalu digunakan untuk apa dokumen XML ini?
XML adalah merupakan suatu bahasa markup. Markup yaitu bahasa yang berisikan kode-kode berupa tanda-ntanda tertentu dengan aturan tertentu untuk memformat dokumen teks dengan tag sendiri agar dapat dimengerti.
Perbedaan antara XML dan HTML
Perlu di ingat bahwa:

XML bukan merupakan pengganti HTML.
XML dan HTML yang dirancang dengan tujuan yang berbeda:
XML dirancang untuk transportasi dan menyimpan data, dengan fokus pada apa data.
HTML dirancang untuk menampilkan data, dengan fokus pada bagaimana data terlihat.

HTML adalah tentang menampilkan informasi, sedangkan XML adalah membawa informasi tentang.

Dokumen XML dapat digunakan untuk berbagai macam tujuan, seperti:
- Sebagai penyimpan data (database) yang mudah dibaca oleh user karena disimpan dalam bentuk teks.
- Standard transfer data, dapat digunakan untuk pengiriman data transaksi antar perusahaan, atau mentransfer data dari DBMS yang berbeda (mis: Oracle ke SQL Server).
- Sebagai acuan membuat bahasa baru, seperti WML (Wireless Markup Language) yang digunakan pada mobile device dengan protokol WAP, atau VoiceXML yang digunakan sebagai bahasa markup untuk pengenalan suara, dialog, aplikasi interaksi respon suara maupun DTMF (seperti aplikasi pengisian pulsa atau call center), dan sebagainya.
- Sebagai file konfigurasi, di Java dokumen-dokumen XML sering kita jumpai seperti file server.xml dan web.xml yang digunakan Tomcat, atau perintah-perintah query yang disimpan dalam file XML yang dipakai pada framework iBatis atau Hibernate.

Sejauh mana perkembangannya?XML menjadi dasar dari beberapa bahasa markup yang telah sedang berkembang sampai saat ini, seperti: XHTML (perbaikan dari HTML), VoiceXML (bahasa untuk aplikasi suara, telepon), XForms (form pada web yang dapat digunakan pada berbagai macam jenis browser, seperti: desktop, PDA , handphone, kertas), XPath, XPointer, XSL dan XSLT (transformasi dan presentasi XML).

Referensi :
[2] Powerpoint Yudi Wibisono, Integritas data,Transaksi,Concurency

[3] Perkuliahan sistem basis data oleh Budi Laksono Putro

Senin, 06 April 2015

Basis Data (ERD,DDL,DML,AGGREGASI,GROUPING)

Introduction
Apa itu Basis Data?
Basis data sering disebut juga database adalah kumpulan informasi yang disimpan dki dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu progrma kompute runtuk memperoleh informasi dari basis data tersebut. Database digunakan untuk menyimpan informasi atau data yang terintregasi dengan baik.
Yang akan kita pelajaran adalah MySQL yang kita kenal sebagai database relasional.
MySQL  -> Program
SQL - > Bahasa Pemrograman
Dapat disimpulkan bahwa penggunaan MySQL disini menggunakan bahasa SQL yang pada dasarnya memiliki 2 jenis perintah, yaitu :
  1. DDL ( Data Definition Language )
  2. DML ( Data manipulation Languange )
DDL (Data Definition Language), yaitu perintah SQL yang berhubungan dengan pendefinisian suatu struktur database,dalam hal ini database dan table. Beberapa perintah dasar yang termasuk DDL ini yaitu :
  1. CREATE, untuk membuat objek yang baru (database atau tabel).
  2. ALTER, untuk mengubah objek
  3. DROP, untuk menghapus objek.

  1. Create

Create Database [NamaDatabase];
Create table [NamaTabel]( Value );




  1. Alter

SYNTAX ALTER TABLE [NamaTabel] [Option]
  • ADD definisi_field_baru
  • MODIFY definis_field
  • DROP nama_field
  • RENAME TO nama_tabel_baru

  1. Drop

  • SYNTAX DROP DATABASE [NAMA DATABASE];
  • SYNTAX DROP TABLE [Nama tabel];


Data Manupulation Language (DML), merupakan perintah SQL yang berhubungan dengan manipulasi atau pengolahan data atau record dalam tabel. Perintah SQL yang termasuk kedalam DML antara lain :
  • SELECT
  • INSERT
  • UPDATE
  • DELETE

 Select



Perintah ini digunakan untuk menampilkan sesuatu berupa data dari tabel atau suatu ekspresi (aggregasi , dll).
Berbagai perintah select antara lain :
a.     Menampilkan Seluruh Isi Tabel
Select *from  [NamaTabel]
b.    Menampilkan Menggunakan Klausa WHERE
Select *from [NamaTabel] Where [Kondisi]
c.     Menampilkan Bebeberapa field dari beberapa tabel
Select [NamaField,...] from [NamaTabel1,NamaTabel2,...] Where [Kondisi]
d.    Menampilkan Menggunakan Opertor And dan Or
Select [NamaField] From [NamTabel1] Where [Kondisi Or, Kondisi And]
e.    Menampilkan Menggunakan Between dan Not Between
Select [NamaField] From [Nama Tabel] Where [Kondisi Between]
f.     Menampilkan Menggunakan Kondisi Like dan Not like
Select [NamaField] From [Nama Tabel] Where [Kondisi Like] / [Kondisi Not like]





Insert



Perintah ini digunakan untuk menambah record atau data ke dalam tabel
INSERT INTO [NamaTabel] Values (‘nilai1’,’nilai2’,...);
Bentuk lain
INSERT (Nama Field) INTO [NamaTabel] VALUES (‘Nilai1’,...);
\\

 Update



Sewaktu-waktu kita memerlukan untuk mengedit data yang ada didalam suatu tabel.
UPDATE [NamaTabel] Set field1=’value’ WHERE kondiisi;

Delete



Proses ini menghapus data atau record yang ada di dalam tabel. Berhati hatilah ketika menghapus record
DELETE FROM [NamaTabel] WHERE Kondisi


Agregasi

Berikut beberapa fungsi agregasi yang dapat digunakan dalam SQL.
Perintah AgregasiSintaksKeterangan
Avg()
Select Avg(nama_field) from nama_tabel
Menghasilkan nilai rata – rata nilai dari field numerik
Count()
Select Count(nama_field) from nama_tabel
Menghasilkan nilai jumlah data
Max()
Select Max(nama_field) from nama_tabel
Menghasilkan nilai tertinggi dari field numerik
Min()
Select Min(nama_field) from nama_tabel
Menghasilkan nilai terendah dari field numerik
Sum()
Select Sum(nama_field) from nama_tabel
Menghasilkan nilai total dari field numerik
Round()
Select Round(nama_field, jumlah_desimal) from nama_tabel
Melengkapi bidang numeric dengan jumlah desimal yang telah ditentukan.
StdDev_Pop()
Select StdDev_Pop(nama_field) from nama_tabel
Menghasilkan nilai standar deviasi populasi
Var_Pop()
Select Var_Pop(nama_field) from nama_tabel
Menghasilkan nilai standar varian populasi
 Nama Field yang akan tercetak adalah fungsi agregasi setelah klausa select. Untuk mengubah nama field ini dapat dengan cara menambahkan ‘as nama_field’ diantara fungsi agregasi dan klausa from.

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_tabel) ORDER BY atribut ASC/DESC
Contoh :
SELECT *FROM matkul ORDER BY matkul DESC;


2. Group By

Group by merupakan perintah yang digunakan untuk mengelompokan beberapa data pada perintah SELECT;
SELECT *FROM(nama_tabel) GROUP BY atribut;
Contoh:
SELECT * FROM nilai GROUP BY nim;

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_tabel GROUP BY atribut HAVING fungsi_agregasi:
Contoh:
SELECT nim, kode_matkul, nilai FROM nilai GROUP BY nim, kode_matkul HAVING
AVG(nilai)>80;


4. View

View dapat disebut sebagai sebuah table semu/bayangan. Data-data pada table view dapat merupakan gabungan dari data pada tabe-tabel lain. View dapat digunakan untuk membatasi pengaksesan atas sebuah table tertentu, jadi user hanya boleh melihat table yang berisi data-data secara spesifik.
CREATE VIEW NAMA_VIEW AS<QUERY>
Contoh:
CREATE VIEW V_nilaiMHS as Select a.nim, a.nama, b.nama_matkul, c.nama_dosen,
d.nilai
FROM mahasiswa as a, matkul as b, nilai as d, dosen as c
WHERE a.nim=d.nim and b.kode_matkul=d.kode_matkul and c.nip=b.nip;
Untuk Menampilkan :
SELECT * FROM Nama_Tabel_semu_yg_telah_dibuat;
SELECT * FROM V_nilaiMHS;

ERD

       ER-Diagram didefinisikan sebagai 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.
Adapun komponen ER-Diagram adalah sebagai berikut:
1. Entitas
Entitas didefinisikan sebagai individu yang mewakili sesuatu yang nyata dan dapat dibedakan dari sesuatu yang lain. Sederhananya, entitas dikenal sebagai suatu objek yang dapat dibedakan dengan objek lainnya di dalam dunia nyata. Entitas di dalam ER-D direpresentasikan oleh bangun datar persegi panjang. Adapun beberapa contoh entitas adalah sebagai berikut: siswa, pegawai, guru, mobil, dan seterusnya.


 

2. Atribut
Atribut merupakan karakteristik dari entity atau relationship yang menyediakan penjelasan detail tentang entity atau relationship tersebut. Atribut di dalam ER-D direpresentasikan dalam bentuk bangun datar oval.
Adapun beberapa contoh atribut adalah sebagai berikut:
nomor_induk_siswa, nama, alamat, dan seterusnya.

 

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. Adapun beberapa contoh relasi adalah sebagai berikut: mengontrak, transaksi, dan mengepalai.

 

4. Kardinalitas
Kardinalitas relasi menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas lain. Adapun kardinalitas yang terjadi diantara dua himpunan entitas adalah sebagai berikut:

a. One to One
Kardinalitas ini terjadi apabila entitas (aku) berhubungan dengan paling banyak satu entitas (kamu), begitu pun sebaliknya. Sederhananya, relasi tabel one-to-one merupakan relasi 2 tabel dengan primary key (pk) dan foreign key (fk) dengan meletakkan kolom one-to-one ke tabel baru. Sebenarnya relasi ini jarang digunakan.

Adapun beberapa alasan relasi ini digunakan adalah sebagai berikut:
·         Memindahkan data ke tabel lain memungkinkan untuk membuat query yang lebih cepat;
·         Mengisolasi dan menghindarkan nilai NULL pada tabel utama;
·         Membuat sebagian data susah diakses.
Di sini, mari menggunakan entitas kepala_sekolah, sekolah, dan relasi mengepalai.
Mari kita lihat perancangannya:

 

ER-D tersebut jika ditransformasikan ke tabel adalah sebagai berikut:
kepala_sekolah : nip, nama, alamat
sekolah : npsn, nama, alamat

b. One to Many dan Many to One
Kardinalitas One to Many terjadi apabila entitas (aku) berhubungan dengan banyak entitas (kamu, dia_1, dia_n), tetapi tidak berlaku sebaliknya, dalam artian entitas (kamu, dia_1, dia_n) hanya berhubungan dengan satu entitas (aku). Kardinalitas Many to One terjadi apabila entitas (saya_1, saya_2, saya_n) berhubungan dengan satu entitas (kamu), tetapi tidak berlaku sebaliknya, dala artian entitas (kamu) berhubungan dengan banyak entitas (saya_1, saya_2, saya_n).
Relasi One to Many terjadi apabila sebuah data yang ada pada tabel pertama memiliki beberapa data yang sama pada tabel kedua. Pada relasi ini hanya diizinkan sebuah data pada tabel pertama dan tabel kedua boleh memiliki beberapa data yang sama dengan tabel pertama. Relasi Many to One berlaku sebaliknya. Mari kita simak perancangan berikut ini dengan menggunakan entitas ibu, anak, dan relasi memiliki.

 

ER-D tersebut jika ditransformasikan ke tabel adalah sebagai berikut:
ibu : nik_ibu, nama, alamat
anak : nik_anak, nama, jenis_kelamin, alamat, nik_ibu


c. Many to many
Kardinalitas Many to Many terjadi apabila banyak entitas (saya, dia_1, dia_n) berhubungan dengan banyak entitas (kamu, kamuu, kamuuu). Relasi Many to Many terjadi apabila sebuah data yang ada pada tabel pertama memiliki beberapa data yang sama pada table kedua, dan sebuah data yang ada pada tabel kedua juga memiliki beberapa data yang sama pada tabel pertama. Pada relasi ini, table pertama dan kedua diizinkan memiliki beberapa data yang sama dengan kedua table tersebut. Mari kita simak perancangan berikut yang melibakan entitas dosen, mahasiswa, dan relasi mengajar.

 

ER-D tersebut jika ditransformasikan ke tabel adalah sebagai berikut:
dosen : nip, nama, tgl_lahir, jenis_kelamin, alamat
mahasiswa : nim, nama, tgl_lahir, jenis_kelamin, alamat
mengajar : id_mengajar, nip, nim