Kamis, 11 Oktober 2012

RDBMS

5. RDBMS

5.1 RDBMS : DB2 dan ORACLE

RDBMS adalah singkatan dari  "Relational Database Management System". Data RDBMS disimpan dalam objek database yang disebut tabel. Tabel adalah tempat penyimpanan utama pada setiap RDBMS dan pada dasarnya mereka adalah koleksi entri data terkait. Sebagai contoh tabel yang disebut Users mungkin menyimpan informasi tentang banyak orang, dan setiap entri dalam tabel ini akan mewakili satu pengguna yang unik. Meskipun semua entri pengguna dalam tabel Pengguna yang unik, mereka terkait dalam arti bahwa mereka menggambarkan objek serupa.


Table Users
FirstName LastName DateOfBirth
John Smith 12/12/1969
David Stonewall 01/03/1954
Susan Grant 03/03/1970

Setiap tabel database terdiri dari kolom dan baris. Setiap kolom tabel mendefinisikan tipe data yang 
disimpan di dalamnya, dan tipe data ini berlaku untuk semua baris dalam tabel ini. Sebuah baris tabel adalah kumpulan data memiliki 1 entri untuk setiap kolom dalam tabel ini (setiap baris ini disebut dengan satu record).

RDBMS menyimpan data ke dalam kelompok tabel , yang mungkin ya atau mungkin tidak setip tabel terkait pada bagian fieldnya (field adalah satu kolom dalam tabel). RDBMS juga menyediakan operator relasional untuk memasukkan atau meng-update maupun menghapus informasi yang disimpan ke dalam tabel database.

MS SQL Server, DB2, Oracle dan MySQL semua itu adalah Relational Database Management System (RDBMS).

Pada semua tutorial mengenai SQL saya akan menggunakan kata-kata RDBMS dan database secara bergantian  jadi setiap kali saya menggunakan kata database berarti maksud saya adalah RDBMS dan sebaliknya. 


5.2 Pengenalan DB2 

5.2.1Pengertian DB2
DB2 adalah keluarga sistem manajemen database relasional (RDBMS) produk dari IBM yang melayani sejumlah sistem operasi yang berbeda platform. Menurut IBM, DB2 memimpin dalam hal pangsa pasar database dan kinerja. Meskipun produk DB2 yang ditawarkan untuk sistem berbasis UNIX dan sistem operasi komputer pribadi, DB2 jejak produk database Oracle dalam sistem berbasis UNIX dan Microsoft Access.

5.2.2 Perkembangan DB2 :
Akhir th. 70-an     : Riset penyusunan teknologi relasional
Th. 80-an     : Produk DB2 untuk VM, VSE, MVS, AS/400, OS/2
Th. 90-an     : Produk DB2 untukAIX, HP-UX, SOLARIS, NT, SINIX

5.2.3 Keunggulan DB2 :
–    Dapat dijalankan pada bermacam-macam platform
–    Menunjang client/server platform, aplikasi multimedia, object oriented
–    Dirancang untuk memperoleh informasi dalam bisnis berskala kecil maupun besar
–    Memiliki alat yang mengizinkan user membuat macam- macam aplikasi untuk mengakses dan bekerja dengan data.


5.2.4 DB 2 Product Family


DB2 Product Family.
IBM DB2 Family dari database management systems menangani ruang lingkup hardware platform yang besar mulai dari mainframe sampai dengan mesin-mesin yang berbasiskan Intel, server IBM dan non IBM RISC serta workstation, massively parallel processors, Sistem mid range AS/400, dan sistem mainframe yang dijalankan dengan sistem operasi VM, VSE dan MVS. Dengan tambahan database engines yang dijalankan pada setiap platform tersebut. DB2 family termasuk solusi “middleware” untuk pengaksesan basis data yang heterogen, replikasi data dan database systems management yang berjalan di seluruh platform.
Produk-produk DB2 yang dijalankan pada OS/2 dan platform yang berhubungan dengan produk tersebut dikenal sebagai versi DB2 Common Server. Hal ini untuk membedakan bahwa produk-produk tersebut dapat dijalankan pada platform yang sejenis, yang berisikan fungsi produk yang serupa dan menggunakan bersama source code yang sama.
Produk-produk DB2 Common Server merupakan client/server RDBMS untuk server IBM dan server non IBM, dan workstation yang berisikan fungsi-fungsi dimana aplikasi dapat dijalankan pada lingkungan client yang luas, fungsi-fungsi untuk menyimpan dan mengelola data, dan gateway yang mengizinkan pengaksesan data dengan SQL pada lingkungan yang heterogen.
5.2.5 SQL Data Language 


SQL (Structured Query Language) adalah sebuah bahasa yang dipergunakan untuk mengakses data dalam basis data relasional. Bahasa ini secara de facto merupakan bahasa standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua server basis data yang ada mendukung bahasa ini untuk melakukan manajemen datanya.
Secara umum, SQL terdiri dari dua bahasa, yaitu Data Definition Language (DDL) dan Data Manipulation Language (DML). Implementasi DDL dan DML berbeda untuk tiap sistem manajemen basis data (SMBD)[1], namun secara umum implementasi tiap bahasa ini memiliki bentuk standar yang ditetapkan ANSI. Artikel ini akan menggunakan bentuk paling umum yang dapat digunakan pada kebanyakan SMBD.

5.2.6 DB 2 Utility 
Gambar














Ada beberapa utility yang dapat digunakan sebagai alat pemelihara di DB2, diantaranya adalah REORG, RUNSTAT dan REBIND.
1. REORG
Utiliti ini berfungsi sebagai table reorganization. Sama seperti sistem operasi, seiring berjalannya waktu maka table dan index pun dapat terdefragementasi. Oleh karena itu perlu di reorganize kembali.
Syntaxnya
REORG TABLE
Contoh
REORG TABLE staff

2. RUNSTAT
Utiliti ini berfungsi untuk menunjukkan statistik dari sebuah database.
Syntaxnya
RUNSTAT ON TABLE
Contoh
RUNSTAT ON TABLE schema.staff>
3. REBIND
Utiliti ini memungkinkan user untuk membuat kembali package yang ada di database tanpa membutuhkan bind file.
Syntax
db2rbind database_alias –l
Contoh
db2rbind sample –l mylog.txt

5.2.7 DB2 Object 

Data Objects :
1. Schema : kumpulan dari database object (table, view, index, application object).
Fungsi dari schema :
- Menyatakan indikasi kepemilikan objek dan relasi dengan aplikasi
- Secara logikal kelompok berkaitan dengan objek secara bersama
- Penggunaan schema : {schema_name}.{object_name}
2. Tables
Tipe data :

CLOB (Charcter Large Object) : biasa digunakan untuk menyimpan tulisan korea, jepang, mandarin
BLOB (Binary Large Object) : biasa digunakan untuk menyimpan gambar, video
DBCLOB (Double Byte Character Large Object)
3. User Defined Types
Digunakan untuk membuat tipe data sesuai dengan keinginan atau dibuat alias.
Contoh :
CREATE DISTINCT TYPE POUND AS INTEGER WITH COMPARISONS
CREATE DISTINCT TYPE KILOGRAM AS INTEGER
WITH COMPARISONS
CREATE TABLE person
(f_name varchar(30),
weight_p POUND NOT NULL,
weight_k KILOGRAM NOT NULL )
SELECT F_NAME FROM PERSON
WHERE weight_p > POUND(30)
Contoh diatas ialah membuat weight_p menjadi alias POUND dan weight_k menjadi alias KILOGRAM.
4. Null Values
Menunjukkan bahwa sebuah atribut tidak memiliki data apapun.
Contoh penggunaan :
CREATE TABLE Staff (
ID SMALLINT NOT NULL, NAME VARCHAR(9) ,
DEPT SMALLINT not null with default 10,
JOB CHAR(5) ,
YEARS SMALLINT ,
SALARY DECIMAL(7,2) ,
COMM DECIMAL(7,2) with default 15
5. System Catalog Tables
- Setiap database memiliki system catalog table masing-masing
- Meta data ini menyimpang objek database
- Dapat meng-query table ini sama dengan table lainnya
- Berada dalam tiga schema :
* SYSIBM : base table, dioptimalkan untuk DB2
* SYSCAT : dilihat berdasar table SYSIBM, dioptimalkan untuk kemudahan penggunaan
* SYSSTAT : database statistik
- Contoh :
SYSCAT.TABLES
SYSCAT.INDEXES
SYSCAT.COLUMNS
6. Sequence Objects
Digunakan untuk automatic values, increment dan decrement.
Syntax :
CREATE SEQUENCE {nama sequence}
START WITH {value}
MAX VALUE {value} //unlimit, klo ngga disetting juga ok
[ INCREMENT/DECREMENT ] BY {value}
[ NO CYCLE/CYCLE ]
Contoh :
CREATE SEQUENCE myseq
START WITH 1
MAX VALUE 100
INCREMENT BY 2
NO CYCLE
Cara penggunaan :
- Currval (nilai sekarang) : 1
- Nextval (nilai selanjutnya) : 3
- Preval (nilai sebelumnya) : 1
INSERT INTO TABLE VALUES(nextval from myseq)
DROP sequence myseq
7. Views
Fungsi untuk efisiensi
Data untuk View tidak disimpan terpisah
Mendukung query bersarang
Contoh :
Connect to sample
CREATE VIEW myview1
AS SELECT name,phone,email
FROM employee
SELECT * FROM myview1
8. Indexes
Fungsinya untuk clustering (pengelompokan), jadi akan lebih cepat dalam proses searching.
Karakteristik indexes :
- Ascending dan descending
- Unik dan non unik
- Compound
- Berkelompok

5.3 Pengenalan Oracle

Pengenalan Database Relational
ORACLE adalah database relational. Sebuah database relational merupakan kumpulan dari tabel-tabel. Tabel sendiri sering kita jumpai dalam kehidupan sehari-hari, misalnya laporan keuangan bulanan, daftar harga menu, grafik-grafik dan lain-lain. Masing-masing tabel mempunyai hubungan antara satu dengan yang lain, misalnya antara tabel ruas jalan tol dengan tabel kantor cabang, sehingga dia disebut relational.
Kumpulan kertas-kertas laporan yang menumpuk di atas meja atau yang ada di laci sebetulnya dapat disebut sebagai database juga. Namun dengan pengelolaan seperti ini, akan muncul masalah jika data yang dikelola volumenya besar, sehingga menyulitkan kita dalam mengelola data-data tersebut. Kemudian mungkin kita akan menggunakan fasilitas komputer, seperti menggunakan LOTUS atau EXCEL, tapi pada prinsipnya kesulitan pekerjaan pengelolaan kita tetap sama.
Sebuah Sistem Basis Data Relational (Relational Database Management System, disingkat RDBMS) seperti ORACLE pada prinsipnya merupakan sistem yang memungkinkan kita untuk:
 
1. Memasukkan data.  
2. Mengelola data. 
3.Mengambil data

5.3.1 Computing Model 
                     
Oracle Corporation mengeluarkan produk Oracle 10g berbasis grid computing. Grid computing adalah arsitektur TI baru yang menghasilkan sistem informasi perusahaan yang berbiaya rendah dan lebih adaptif terhadap dinamika bisnis. Dengan grid computing, sejumlah komponen hardware dan software yang modular dan independen akan dapat dikoneksikan dan disatukan untuk memenuhi tuntutan kebutuhan bisnis. Lebih jauh, dari sisi ekonomi, implementasi grid computing berarti membangun pusat komputasi data yang tangguh dengan struktur biaya variatif yang bisa disesuaikan dengan kebutuhan. Grid computing adalah solusi dari masalah-masalah umum yang dihadapi perusahaan IT, permasalahan pada aplikasi yang menyebabkan hardware tidak berfungsi maksimal contohnya  kasus monolitik, yaitu sistem sulit digunakan karena mahalnya ongkos pengelolaan dan sulitnya dilakukan perubahan terhadap system juga masalah informasi yang terpisah pisah dan tidak bisa dimanfaatkan secara maksimal. Dalam mengadopsi grid computing, perusahaan tidak perlu mengambil langkah secara revolusioner, karena aplikasi yang sebelumnya telah dijalankan akan tetap bekerja seperti sebelumnya. Dan dimungkinkan pula untuk mengadopsi teknologi grid computing pada aplikasi yang telah dijalankan, bahkan tanpa memerlukan banyak penulisan ulang konfigurasi sistem.

5.3.2 Overview Perintah-Perintah SQL

Perintah Select
Perintah Select digunakan untuk :
Selection : memilih baris/record
Projection : memilih kolom/field
Join : mengambil data dari beberapa tabel yang berbeda
Syntax Select
SELECT [DISTINCT] {*,column[alias],..}
FROM table;
Contoh:
SELECT loc,deptno
FROM emp
OPERATOR ARITMATIKA
Derajat Operator :
- Perkalian dan Pembagian
- Penjumlahan dan Pengurangan
- Bila ada ( ) maka ekspresi didalamnya dilaksanakan terlebih dahulu
Contoh :
SELECT ename,sal,12*sal+100 FROM emp;
NILAI NULL
Adalah nilai yang tidak ada, tidak didefinisikan, tidak diterapkan dan tidak diketahui.
Nilai null ¹ 0 { zero}, null ¹ spasi {blank}
Contoh:
SELECT ename,job,sal,comm. FROM emp;
KOLOM ALIAS
Digunakan untuk merubah tampilan judul kolom.
Menggunakan AS atau “ “ {Double Qoute}
Contoh:
SELECT ename AS name, sal “salary” FROM emp;
OPERATOR GABUNGAN
Digunakan untuk menghubungkan kolom satu dengan kolom yang lain.
Menggunakan opertor gabungan { || }
Contoh:
SELECT ename || job AS employees
FROM emp;
KOLOM ALIAS DAN GABUNGAN
Digunakan untuk merubah tampilan judul kolom.
Menggunakan AS atau “ “ {Double Qoute}
Contoh:
1. SELECT ename AS name, sal salary FROM emp;
2. SELECT ename ||”is a”|| job AS “employee details”
FROM emp;
BARIS DUPLIKAT / GANDA
Syntax Select
SELECT [DISTINCT] {*,column[alias],..}
FROM table;
Contoh:
SELECT loc,deptno
FROM emp
SQL dan SQL*PLUS
Keistimewaan SQL :
Dapat digunakan oleh user baik yang berpengalaman atau tidak dalam pembuatan program
Merupakan bahasa non prosedural
Mengurangi sejumlah waktu untuk membuat dan memelihara sistem
Sintaksnya dalam bahasa Inggris


5.3.3 Interaksi Antara SQL Plus Dengan SQL
                          
Interaksi antara SQL*Plus dengan SQL
Contoh Cursor Variable: Master Table dan Details Table


Mari kita perhatikan stored procedure di bawah ini, yang mencari database dari perpustakaan utama untuk buku, majalah, dan tape. Tabel master menyimpan judul dan kode kategori (dimana 1=buku, 2=majalah, 3=tape) untuk setiap item. Tiga tabel detail menyimpan informasi spesifik dari setiap kategori. Ketika tipanggil, procedure tesrebut mencari tabel master berdasarkan judul, menggunakan kode kategori terkait untuk membuka perintah OPEN-FOR, lalu membuka cursor variable untuk query dari tabel detail yang tepat.
========================================================================
CREATE PACKAGE cv_types AS
TYPE LibCurTyp IS REF CURSOR;
...
END cv_types;
CREATE PROCEDURE find_item (
title VARCHAR2(100),
lib_cv IN OUT
cv_types.LibCurTyp)
AS
code BINARY_INTEGER;
BEGIN
SELECT item_code
FROM titles INTO code
WHERE item_title = title;
IF code = 1 THEN
OPEN lib_cv FOR SELECT * FROM books
WHERE book_title = title;
ELSIF code = 2 THEN
OPEN lib_cv FOR SELECT * FROM periodicals
WHERE periodical_title = title;
ELSIF code = 3 THEN
OPEN lib_cv FOR SELECT * FROM tapes
WHERE tape_title = title;
END IF;
END find_item;
 5.3.4 SQL Statement VS SQL Plus Statement
 SQL adalah bahasa yang digunakan untuk berkomunikasi dengandatabase Oracle server dari sebuah tool atau aplikasi. Oracle SQL
terdiri dari beberapa bagian, ketika kita menjalankan perintah SQL,sql akan disimpan dalam suatu memory yang disebut SQL Buffer danakan tetap berada dalam memory sampai ada statemen baru.SQL *Plus adalah tool oracle yang mengenali dan menjalankanperintah SQL ke Oracle Server.
 5.3.5 Contoh Perintah SQL Plus

Perintah PAUSE memungkinkan Anda untuk menampilkan baris kosong atau teks dengan penghentian sementara aksi dan menunggu RETURN untuk pengguna;

Perintah PROMPT mengirimkan sebuah baris kosong atau pesan pada layar;

ACCEPT variabel [NUMBER | CHAR | DATA]
[FORMAT format] [PROMPT text | NOPROMPT] [HIDE]   


Peninjauan:
- Jenis variabel default adalah CHAR;
- Teks PROMPT dicetak sebelum pengguna memberikan nilai yang sebenarnya;
- HIDE adalah pilihan yang membuat nilai yang diberikan oleh pengguna untuk disembunyikan;
- Pilihan menunjukkan FORMAT format string;
- Pergantian variabel, jika ada, tidak boleh digunakan dengan simbol "&".


Contoh:
ACCEPT Alpha PROMPT ' number of copies: '
ACCEPT beta PROMPT ' author name ':
SELECT *
FROM the book
WHERE nrex = & alpha
AND author = ' & ' beta;

Variabel Substitusi

Pergantian variabel (& nama) digunakan untuk menyimpan nilai sementara.

Interface mengharuskan user untuk memberikan nilai setiap kali bertemu dengan sebuah variabel tidak terdefinisi.

Jika variabel didahului oleh simbol "& &", hanya panggilan pertama yang akan meminta variabel substitusi (& nama) fimana digunakan untuk menyimpan nilai sementara. Variabel ini dapat terjadi di SQL perintah atau SQL * Plus.

Interface mengharuskan user untuk memberikan nilai setiap kali bertemu dengan sebuah variabel tidak terdefinisi. Jika variabel didahului oleh simbol "& &", hanya panggilan pertama yang akan membutuhkan nilai.

Untuk variabel tipe karakter. Variabel substitusi dapat terjadi dalam kondisi WHERE, dalam klausa ORDER BY dalam ekspresi kolom, dalam nama tabel, bukan perintah SELECT keseluruhan.

  
Contoh:
SELECT & kolom
FROM & tabel
WHERE & kondisi
ORDER BY & order;


Variabel tetap mengatur sampai salah satu meninggalkan SQL * Plus atau perintah UNDEFINE diberikan untuk variabel yang bersangkutan. Mencetak semua variabel, nilai-nilai dan jenis variabel tersebut harus diperoleh oleh bentuk DEFINE.

Contoh:
SQL > DEFINE autor1 = Brad
SQL > DEFINE autor2 = Stuart
SQL > SELECT title, nrex
FROM the book
WHERE author = ' & autor1 '
OR author = ' & autor2 '; 

5.3.6 PL/SQL


PLSQL

PL/SQL (Procedural Language/Structured Query Language) merupakan
pengembagan SQL oleh Oracle. Prasyarat mempelajari PL/SQL adalah paling tidak
mengetahui dasar-dasar SQL. Sebagai awalan belajar PLSQL, mari kita lihat contoh
kasus dan contoh blok PL/SQL berikut ini.
PL / SQL adalah salah satu dari tiga bahasa pemrograman kunci tertanam dalam Database Oracle, MOD_PLSQL Oracle HTTP Server (Apache) modul extension, bersama dengan SQL itu sendiri dan Jawa.

PL / SQL program unit (dasarnya kontainer code) dapat dikompilasi ke database Oracle. Pemrogram sehingga dapat menanamkan PL / SQL unit fungsionalitas ke dalam database secara langsung. Mereka juga dapat menulis skrip yang berisi PL / SQL program unit yang dapat membaca ke database menggunakan Oracle .Setelah unit program telah disimpan ke dalam database, mereka menjadi tersedia untuk eksekusi di lain waktu.

Keuntungan Penggunaan PL/SQL
– Memungkinkan Aplikasi dan Oracle Server menggunakan Library yang dapat digunakan bersama-sama dalam bentuk stored procedure
– Peningkatan Kinerja
– Penggunaan PL/SQL, memungkinkan pengiriman perintah secara blok dalam satu perintah yang secara drastis dapat menurunkan trafik jaringan
– Modular. Bentuk modular memungkinkan banyak kemudahan yang dapat diperoleh
– Portable. PL/SQL adalah sarana yang asli dimiliki oleh Oracle Server, artinya, program PL/SQL dapat dengan mudah dipindahkan dari satu Oracle Server ke Oracle Server lainnya, meskipun dengan OS atau platform yang berbeda.
– Dapat mendeklarasikan Variable
– Dapat berupa Variable, Constant, Cursor dan Exception
– Penggunaan variable/identifier sangat memudahkan dalam membuat suatu perintah. Misalkan untuk membaca hasil suatu perintah SELECT untuk diproses dan hasilnya digunakan untuk melakukan proses lainnya
– Dapat menggunakan Struktur Kontrol :LOOP, FOR, WHILE
– Dapat menangani Error
– Error bisa dihasilkan/dibangkitkan oleh Oracle
– Server atau bisa dibangkitkan sendiri dengan sengaja
– Untuk mengantisipasi berbagai hal yang barangkali sulit untuk ditangani secara langsung menggunakan kontrol program


SQL PLUS dan PLSQL

• PL/SQL (Procedural Language/Structure Query Language)
– Adalah suatu blok yang berisi skrip-skrip bahasa prosedural.
• PL/SQL merupakan bahasa pemrograman prosedural
• PL/SQL dapat meningkatkan kinerja database
Tipe Data dasar :
• Numerik
– NUMBER, BINARY_INTEGER, DEC, DOUBLE PRECISION, INTEGER, INT, NUMERIC, REAL, SMALLINT
• Karakter
– VARCHAR2, CHAR, LONG
• DATE
• BOOLEAN
• ROWID

Tipe Data tambahan :
• RECORD
• ARRAY
VARIABLE
• Adalah sebuah peubah yang digunakan untuk menampung sebuah nilai di memori komputer.
CONTOH VARIABLE
DECLARE
X integer;
Alamat varchar2(40);
No_induk char(8);
.....
BEGIN
X := 12;
Alamat := ‘Gelatik Dalam 391, Bandung’;
No_induk := ‘DOG29549’;
END;
KONSTANTA
• Digunakan untuk menyimpan sebuah nilai di memori komputer.
• Nilai yang disimpan bersifat tetap (konstan)

Contoh :
DECLARE
pi CONSTANT real := 3.14;
lebar CONSTANT integer := 100;
KOMENTAR
• Digunakan untuk memudahkan proses maintenance
• Jenis komentar :
– /* ... */ : untuk beberapa baris komentar
– -- ... : untuk satu bari komentar

Contoh :
/* Ini adalah komentar Oracle */
-- Ini juga komentar Oracle

STRUKTUR BLOK
• Terdapat tiga bagian :
• Bagian pendeklarasian tipe data (opsional)
– Bagian penulisan perintah
– Bagian eksepsi (opsional)
BENTUK UMUM
DECLARE
variabel tipe_data;
konstanta CONSTANT tipe_data := nilai;
...
BEGIN
statement_1;
statement_2;
...
EXCEPTION
WHEN nama_eksepsi THEN statement_untuk_mengatasi_error;
...
END;
CONTOH PALING SEDERHANA
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Belajar Oracle’);
END;

Catatan:
Untuk melihat hasil, setting terlebih dahulu variabel sistem SERVEROUTPUT dengan menuliskan :
SET SERVEROUTPUT ON
CONTOH DENGAN EKSPESI
SET SERVEROUTPUT ON
DECLARE
X Integer;
BEGIN
X := ‘Belajar Oracle’;
DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE (‘Kesalahan pada pengisisan
nilai’);
END;

                           

Rabu, 10 Oktober 2012

Pengenalan SQL

4. PENGENALAN SQL

4.1 Pengenalan SQL
SQL (Structured Query Language), merupakan script yang digunakan untuk melakukan komunikasi dengan Database. SQL juga merupakan bahasa standar yang digunakan untuk RDBMS (Relational DataBase Management Systems). SQL sendiri juga bisa digunakan untuk melakukan proses insert, update atau delete ke dalam suatu database. Sintaks-sintaks ini yang disebut dengan Data Manipulation Language (DML) yang merupakan bagian dari SQL. Berikut ini adalah penjelasan singkat dari sintaks-sintaks tersebut.
- SELECT, bertugas untuk mengakses data dari suatu tabel dalam database
- UPDATE, bertugas untuk mengupdate (merubah) data dalam suatu tabel pada database.
- DELETE, bertugas untuk menghapus data dari suatu tabel dalam database
- INSERT, bertugas untuk menambahkan data ke dalam suatu tabel dalam database.
Suatu database berisi dari satu atau lebih tabel. Setiap tabel diberi nama tertentu yang berhubungan dengan isinya, contohnya tabel yang isinya mengenai data pelanggan diberi nama tabel Customers. Tabel itu sendiri berisi dari satu atau sekumpulan record. Record adalah satu baris data yang dibentuk oleh satu atau beberapa field. Nah, field-field inilah yang berisi data. Berikut ini adalah contoh dari suatu tabel yang berisi data. Berikut ini adalah contoh dari tabel yang bernama 'Karyawan'.
Tabel di atas terdiri dari tiga buah record. Masing-masing record terdiri dari empat buah field (LastName, FirstName, Address, City).

4.2 Pengelompokan Perintah
  1. DDL ( Data Definition Language )
DDL merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut database, table, atribut (kolom), batasan-batasan terhadap suatu atribut serta hubungan antar table. Yang termasuk kelompok DDL ini adalah :
CREATE untuk menciptakan table ataupun indeks
ALTER untuk mengubah struktur table
DROP untuk menghapus table ataupun indeks
  1. DML ( Data Manipulation Language )
Adalah kelompok perintah yang berfungsi untuk memanipulasi data, misalnya untuk pengambilan, penyisipan pengubahan dan penghapusan data. Yang termasuk DML :adalah
SELECT memilih data
INSERT menambah data
DELETE menghapus data
UPDATE mengubah data
  1. DCL ( Data Control Language )
Berisi perintah-perintah untuk mngendalikan pengaksesan data. Yang termasuk DCL adalah :
GRANT memberikan kendali pada pengaksesan data.
REVOKE mencabut kemampuan pengaksesan data
LOCK TABLE mengunci table

4.3 Contoh Kasus 
1. DDL : create, drop, alter
- Membuat Tabel (CREATE TABLE)
1. CREATE TABLE S (Sn Char(5) NOT NULL,
Sname Char(20) NOT NULL,
Status Smallint NOT NULL,
City Char(15) NOT NULL);
2. CREATE TABLE P
(Pn Char(6) NOT NULL,
Pname Char(20) NOT NULL,
Color Char(6) NOT NULL,
Weight Smallint NOT NULL);
3. CREATE TABLE SP
(Sn Char(5) NOT NULL,
Pn Char(6) NOT NULL,
QTY INTEGER NOT NULL);
4. CREATE UNIQUE INDEX Sidx ON S(Sn);
CREATE UNIQUE INDEX Pidx ON P(Pn);
CREATE INDEX Sdx ON SP(Sn);
CREATE INDEX Pdx ON SP(Pn);
- Modifikasi Table P dengan perintah :
RENAME COLUMN P.COLOR TO WARNA
ALTER TABLE P ADD (City CHAR(15) NOT NULL)
- Membuat View (CREATE VIEW)
 1. Membuat view untuk suplier yang statusnya lebih besar dari 15
CREATE VIEW GOOD_SUPPLIERS AS SELECT Sn, Status, City FROM S WHERE Status > 15;
2. Membuat view yang berisi supplier yang tinggal di Paris
CREATE VIEW Paris_Suppliers AS SELECT * FROM Supliers WHERE City = ' Paris '
3. Membuat view dengan mengganti nama_atributnya
CREATE VIEW Parts (PNum, Part_Name, WT) AS SELECT P#, Pname, Weight FROM Part WHERE COLOR = 'Red'
 
2. Contoh kasus DML
1. Menambah record (INSERT)
INSERT INTO S VALUES ('S1','Smith',20,'London'); INSERT INTO S VALUES ('S2','Jones,10,'Paris'); INSERT INTO S VALUES ('S3','Blake',30,'Paris')
2. Merubah record (UPDATE)
1. Merubah data (record) pada tabel P yang mempunyai nomor part P2, warnanya dirubah menjadi Kuning dan beratnya ditambah 5
UPDATE P SET Warna = 'Yellow', Weight = Weight + 5 WHERE Pn = 'P2'
2. Merubah record pada tabel S, statusnya menjadi dua kali status awal untuk supplier yang bertempat tinggal di kota London
UPDATE S SET Status = 2 * Status WHERE City = 'London'
3. Menghapus record (DELETE)
Menghapus record pada tabel S yang nomor supplier-nya S5
DELETE FROM S WHERE Sn ='S5'
4. Menampilkan record (SELECT 1 tabel)
1. Menampilkan semua data supplier
SELECT * FROM S
atau
SELECT Sn, Sname, Status, City FROM S
2. Menampilkan semua nilai Pn pada tabel SP
SELECT Pn FROM SP
3. Menampilkan nomor supplier dan status untuk supplier yang tinggal di Paris
SELECT Sn, Status FROM S WHERE City ='Paris'
4. Menampilkan no.supplier yang tinggal di Paris dengan status > 20
SELECT Sn FROM S WHERE City ='Paris" AND Status > 20
5. Menampilkan jumlah pengiriman P1
SELECT COUNT(*) FROM SP WHERE Pn = 'P1'
6. Perintah untuk menghindari hasil data yang sama terulang kembali (distinct)
SELECT DISTINCT Pn FROM SP
7. Menampilkan no.supplier dan status bagi supplier yang tinggal di Paris dalam urutan status menurun
SELECT Sn,Status FROM S WHERE City = 'Paris' ORDER BY Status desc
8. Menampilkan no.Part dari semua part yang dipasok oleh lebih dari seorang supplier
 SELECT Pn FROM SP GROUP BY Pn HAVING COUNT(*) > 1
5. Menampilkan record (SELECT lebih dari satu tabel / JOIN)
1. Menampilkan semua supplier dan part yang keduanya bertempat tinggal pada kota yang sama
SELECT Sn, Sname,S tatus, S.City , Pn, Pname, Warna, Weight FROM S,P WHERE S.City = P.City
2. Menampilkan nama supplier yang memasok barang dengan nomor part P2
SELECT Sname FROM S, SP WHERE S.Sn = SP.Sn AND SP.Pn = 'P2'
3. Menampilkan nama supplier yang memasok part berwarna merah
SELECT Sname FROM S, SP, P WHERE S.Sn = SP.Sn AND SP.Pn = P.Pn AND P.COLOR = 'RED'
6. Menampilkan record (SELECT lebih dari satu tabel / SELECT Bertingkat)
1. Menampilkan nama supplier yang memasok barang dengan nomor part P2
SELECT Sname FROM S WHERE Sn IN (SELECT Sn FROM SP WHERE Pn = 'P2')
atau
SELECT Sname FROM S WHERE Sn = ANY (SELECT Sn FROM SP WHERE Pn = 'P2')
2. Menampilkan nama supplier yang memasok part berwarna merah
SELECT Sname FROM S WHERE Sn IN (SELECT Sn FROM SP WHERE Pn IN (SELECT Pn FROM P WHERE Warna = 'Red'))
3. Menampilkan no.supplier dengan nilai status lebih kecil daripada nilai maksimum status yang ada pada tabel S
SELECT Sn FROM S WHERE Status < (SELECT MAX(Status) FROM S)
4. Menampilkan nama supplier yang tidak memasok barang dengan nomor part P2 SELECT Sname FROM S WHERE Sn NOT IN
(SELECT Sn FROM SP WHERE Pn = 'P2')
5. Menampilkan semua nomor supplier yang sama lokasinya dengan S1
SELECT Sn FROM S WHERE CITY = (SELECT CITY FROM S WHERE Sn = 'S1')
7. Fungsi Perhitungan
COUNT : jumlah baris dan kolom
SUM : jumlah nilai dam kolom
AVG : rata - rata nilai dalam kolom
MAX : nilai terbesar dalam kolom
MIN : nilai terkecil dalam kolom
Untuk SUM dan AVG nilainya harus numerik (INT, SMALLINT, FLOAT). Fungsi-fungsi tsb jika dikenakan pada nilai yang NULL maka nilainya akan diabaikan kecuali untuk COUNT(*)
1.) Menghitung jumlah supplier
SELECT COUNT(*) FROM S
atau
SELECT COUNT (Sn) FROM S
2.) Menampilkan nomor part dan total kuantitas pengiriman dari setiap part
SELECT Pn, SUM(QTY) FROM SP GROUP BY Pn
3.) Menghitung jumlah kuantitas dari P2 yang telah disupply
SELECT SUM (QTY) FROM SP WHERE Pn = 'P2'
4.) Menampilkan jumlah pengiriman barang dengan nomor P4 dan dipasok oleh nomor suppplier S1
SELECT COUNT(*) FROM SP  WHERE Pn = 'P4' AND Sn = 'S1'
5.) Menampilkan nomor part dan total kuantitas dari masing-masing part
SELECT Pn, SUM(QTY) FROM SP GROUP BY P3
 
  3. Contoh Kasus DCL (Data Control Language) : Grant dan Revoke

1. GRANT
syntax:
GRANT PRIVILEGES ON UNIVERSITAS GUNADARMA TO Masyarakat,Mahasiswa
Yang berarti pengguna masyarakat dan mahasiswa boleh untuk mengakses data mengenai universitas gunadarma
1) Syntax:
GRANT PRIVILEGES ON STUDENTSITE TO MAHASISWA GUNADARMA
Yang berarti pengguna Mahasiswa gunadarma boleh mengakses data dari studentsite.
2) GRANT INSERT, DELETE, UPDATE ON kuliah TO anto, John
Yang artinya yaitu Pengguna dengan login-name anto dan John memperoleh hak untuk melakukan operasi INSERT, DELETE, dan UPDATE pada file/tabel kuliah.
2 .REVOKE

bentuk umumnya sebagai berikut:
REVOKE akses-1 [, akses-2, ...] ON tabel FROM user-1 [, user-2, ...]
Contoh pemakaiannya adalah sebagai berikut ini:
1) REVOKE INSERT, DELETE ON kuliah FROM John
Perintah ini membatalkan hak dari John untuk melakukan INSERT dan DELETE pada file kuliah.
2) REVOKE DELETE,UPDATE ON kuliah FROM Andi
Perintah ini membatalkan hak dari andi untuk melakukan delete dan update pada file kuliah
3) REVOKE INSERT,UPDATE ON Materi Kuliah FROM Anton
Perintah ini membatalkan hak akses dari anton untuk melakukan insert dan update pada file materi kuliah.
 

Model Data Relasional

3. MODEL DATA RELASIONAL

3.I PENGERTIAN MODEL RELASIONAL

I. Pengertian Model Relasional, Contoh Tabel, dan Keterhubungannya.
Sebuah database relasional terdiri dari koleksi dari tabel-tabel, yang masing-masing diberikan nama yang unik. Sebuah baris dalam tabel merepresentasikan sebuah keterhubungan/relationship dari beberapa nilai yang ada.
Contoh tabel dan keterhubungannya :
Contoh tabel relasi
3.2 KEUNTUNGAN MODEL RELASIONAL

  Kentungan Basis Data Relasional :
1. Bentuknya sederhana
2. Mudah melakukan berbagai operasi data

Model Relasional merupakan model data yang paling banyak digunakan saat ini. Hal ini disebabkan oleh bentuknya yang sederhana dibandingkan dengan model jaringan/network atau model hirarki. Bentuk yang sederhana ini membuat pekerjaan seorang programmer menjadi lebih mudah, yaitu dalam melakukan berbagai operasi data (query, insert, update, delete, dan lainnya).

3.3 ISTILAH-ISTILAH DALAM MODEL RELASIONAL

  • Relasi
berdasarkan definisi matematika, adalah sebuah himpunan bagian dari perkalian kartesian dari sekumpulan domain. Dalam model relasional, relasi dapat direpresentasikan dengan tabel.
  • Atribut
adalah kepala/header dari setiap kolom yang ada dalam tabel relasi. Berdasarkan contoh tabel MHS sebelumnya, atribut yang ada adalah NPM, Nama, dan Alamat.
  • Tupel
adalah sebuah baris dalam tabel relasi. Berdasarkan contoh tabel MKUL sebelumnya, salah satu tupelnya adalah (KU122, Pancasila, 2).
  • Domain
adalah sekumpulan nilai yang valid untuk setiap atribut yang ada dalam tabel relasi. Berdasarkan contoh tabel NILAI sebelumnya, domain dari atribut FINAL adalah angka 0 sampai 100.
  • Derajat
adalah jumlah atribut yang ada dalam tabel relasi. Berdasarkan contoh tabel MHS sebelumnya, derajat dari relasinya adalah 3.
  • Kardinalitas
adalah jumlah tupel yang ada dalam tabel relasi. Berdasarkan contoh tabel MKUL sebelumnya, kardinalitas dari relasinya adalah 3.

3.4 RELASIONAL KEYS 
 
  • Super Key
adalah sebuah atau sekumpulan atribut yang secara unik mengidentifikasi sebuah tupel dalam tabel relasi. Berdasarkan contoh tabel MHS sebelumnya, super key yang mungkin adalah (NPM), (NPM, Nama), (NPM, Alamat), (Nama, Alamat), dan (NPM, Nama, Alamat).
  • Candidate Key
adalah super key yang himpunan bagian yang sebenarnya tidak ada yang menjadi super key juga. Berdasarkan contoh super key sebelumnya, candidate key yang mungkin adalah (NPM) dan (Nama, Alamat). Atribut Nama dan Alamat dapat dijadikan candidate key jika kombinasi keduanya bisa menjadi pengidentifikasi yang unik untuk sebuah tabel relasi.   
  • Primary Key
adalah candidate key yang dipilih sebagai pengidentifikasi unik untuk sebuah tabel relasi. Berdasarkan contoh candidate key sebelumnya, primary key yang dipilih adalah (NPM), karena nilai NPM sangat unik dan tidak ada 2 mahasiswa yang memiliki NPM yang sama.
  • Alternate Key
adalah candidate key yang tidak dipilih sebagai primary key. Berdasarkan contoh candidate key sebelumnya, alternate key adalah (Nama, Alamat).

3.5 RELASIONAL INTERGRITY RULES

  • NULL
adalah nilai sebuah atribut yang tidak diketahui atau tidak ada pada sebuah tupel dalam tabel relasi. Misalnya pada contoh tabel MHS sebelumnya, seorang mahasiswa tidak diketahui alamatnya sehingga pada tupel yang mengidentifikasi mahasiswa tersebut nilai dari atribut alamat diisi dengan NULL.
  • Entity Integrity
adalah sebuah peraturan integritas yang menyatakan bahwa setiap tabel relasi harus mempunyai sebuah primary key, dan atribut/sekumpulan atribut yang dipilih sebagai primary key harus mempunyai nilai dan nilai tersebut harus unik dan tidak NULL.
  • Referential Integrity
adalah sebuah peraturan integritas yang menyatakan bahwa setiap atribut sebuah tabel relasi yang menunjuk ke tabel relasi lainnya harus merupakan hubungan yang valid. Berdasarkan contoh tabel MKUL dan NILAI sebelumnya, nilai atribut KDMK pada tabel NILAI harus merupakan data yang ada dan valid pada tabel MKUL yang ditunjuknya.


3.6 BAHASA PADA MODEL RELASIONAL

3.6.1 .Bahasa Formal
Bahasa query yang diterjemahkan dengan menggunakan simbol-simbol matematis
Contoh :
a.Aljabar relasional
Bahasa query prosedural : pemakai menspesifikasikan data apa yang dibutuhkan dan bagaimana untuk mendapatkannya
b.Kalkulus relasional
Bahasa query non prosedural : pemakai menspesifikasikan data apa yang dibutuhkan tanpa menspesifikasikan bagaimana utntuk mendapatkannya
Kalkulus relasional terbagi 2 :
•Kalkulus relasional tupel
•Kalkulus Relasional Domain

3.6.2  .Bahasa Komersial
Bahasa query yang dirancang sendiri oleh programmer menjadi suatu program aplikasi agar pemakai lebih mudah menggunakannya (user friendly)
Contoh :
a.QUEL
Berbasis pada bahasa kalkulus relasional
b.QBE
Berbasis pada bahasa kalkulus relasional
c.SQL
Berbasis pada bahasa kalkulus relasional dan aljabar relasional