Anda di halaman 1dari 0

1

Danny Kriestanto, S.Kom., M.Eng


File Sharing dan Database Desktop
Client Server
Ada beberapa defenisi Client/Server:
- Gallaugher dan Ramanathan (1996): Client-Server adalah client mengirimkan permintaan
ke server, server menerjemahkan pesan, kemudian berusaha memenuhi permintaan.
- Blaha dan Premeriani (1998): Client-Server adalah suatu arsitektur dimana sumber daya
server menyediakan komputasi untuk banyak komponen client. Client dan server dapat
berjalan pada mesin yang sama atau yang berbeda, ditulis dalam berbagai bahasa dan
menggunakan sistem operasi yang berbeda.

Pada client server terdapat beberapa karakteristik :
1. Servis (layanan)
Hubungan antara proses yang berjalan pada mesin yang berbeda:
- Pemisahan fungsi berdasarkan ide layanannya.
- Server sebagai provider, client sebagai konsumen
2. Sharing resources (sumber daya)
Server bisa melayani beberapa client pada waktu yang sama, dan meregulasi akses
bersama untuk share sumber daya dalam menjamin konsistensinya.
3. Asymmetrical protocol (protokol yang tidak simetris)
Many-to-one relationship antara client dan server. Client selalu menginisiasikan dialog
melalui layanan permintaan, dan server menunggu secara pasif request dari client.
4. Transparansi lokasi
2
Danny Kriestanto, S.Kom., M.Eng
Proses yang dilakukan server boleh terletak pada mesin yang sama atau pada mesin yang
berbeda melalui jaringan.Lokasi server harus mudah diakses dari client.
5. Mix-and-Match
Perbedaan server client platforms
6. Pesan berbasiskan komunikasi
Interaksi server dan client melalui pengiriman pesan yang menyertakan permintaan dan
jawaban.
7. Pemisahan interface dan implementasi
Server bisa diupgrade tanpa mempengaruhi client selama interface pesan yang diterbitkan
tidak berubah.

Adapun yang database yang didukung oleh client server :
1. SQL Server
2. Oracle
3. MySQL
4. PostgreSQL
5. Microsoft Access
6. Interbase / Firebird
7. dll.

Sifat-sifat dari client pada umumnya adalah aktif, dalam arti mengirimkan request, dan
menunggu balasan dari server. Sedangkan sifat dari server adalah pasif, dalam arti menunggu
request dari client, lalu mengerjakan request tersebut sebelum mengirimkan hasilnya kepada
client.
3
Danny Kriestanto, S.Kom., M.Eng
Perlu diingat bahwa ada beberapa macam arsitektur database, yaitu: 1-tier architecture, 2-tier
architecture, 3-tier architecture, dan n-tier architecture.
1-tier architecture adalah arsitektur dimana database dan program menjadi satu kesatuan. Jenis
database pada arsitektur ini hanya dapat digunakan pada 1 komputer dan tidak dapat diakses dari
komputer lain. Selain itu, database ini tidak mengenal adanya otentifikasi, sehingga username
dan password tidak diperlukan. Oleh karena itu, arsitektur database ini sangat rentan terhadap
pembobolan data yang sangat mungkin terjadi karena data dapat diubah dari aplikasi lain tanpa
otentifikasi.
2-tier architecture disebut juga sebagai database client-server. Pada arsitektur ini database telah
dipisahkan dari aplikasi. Aplikasi dapat berada di lokal, sedangkan database dapat berada di
lokasi lain. Database ini lebih aman karena telah menggunakan otentifikasi agar data tidak dapat
diubah oleh pihak yang tidak berwenang.
3-tier architecture merupakan arsitektur database yang selain memisahkan antara aplikasi dan
database, namun juga memisahkan proses bisnis yang dibutuhkan aplikasi. Proses bisnis dapat
berada pada lokasi yang berbeda dari database maupun aplikasi yang dibuat. Salah satu contoh
proses bisnis yang diterapkan adalah stored procedure dan stored function.

Socket adalah sebuah endpoint untuk komunikasi di dalam jaringan. Sepasang proses atau thread
berkomunikasi dengan membangun sepasang socket, yang masing-masing proses memilikinya.
Socket dibuat dengan menyambungkan dua buah alamat IP melalui port tertentu. Dengan kata
lain, client akan menunjuk satu port untuk melakukan pertukaran data. Jika tidak melalui socket /
port yang ditunjuk, maka proses client-server tidak dapat berjalan. Socket pada client dan server
dapat berbeda satu dengan yang lain.

Sebagai contoh sebuah program web browser pada host x (IP 146.86.5.4) ingin berkomunikasi
dengan web server (IP 152.118.25.15) yang sedang menunggu pada port 80. Host x akan
4
Danny Kriestanto, S.Kom., M.Eng
menunjuk sebuah port. Dalam hal ini port yang digunakan ialah port 1655. Sehingga terjadi
sebuah hubungan dengan sepasang socket (146.86.5.4:1655) dengan (152.118.25.15:80).
Perkenalan SQL
Sebuah database adalah sekumpulan informasi yang disusun dengan baik. Untuk mengatur
sebuah database, dibutuhkan sebuah Database Management System (DBMS). DBMS merupakan
program untuk menyimpan, mengambil, dan memodifikasi data dalam database karena
permintaan user.
Ada lima macam tipe database yaitu hirarki, jaringan, relasional, objek, dan dimensional.
Ada beberapa terminologi dalam database relasional (yang digunakan oleh Oracle), yaitu:
1. Row, atau baris, mempresentasikan semua data dari sebuah tabel. Sebuah seharusnya
diidentifikasikan dengan sebuah kunci primer (primary key).
2. Kolom, atau atribut yang berisi salah satu jenis nilai dari row.
3. Primary key, atau kunci primer, yang HARUS terdiri atas satu nilai unik.
4. Foreign key, atau kunci tamu, merupakan kolom yang mendefinisikan bagaimana
tabel dapat berhubungan satu dengan yang lain.
5. Field (pada Oracle) dapat ditemukan sebagai titik pertemuan antara baris dan kolom
dan hanya terdapat satu nilai di dalamnya.
Untuk mengakses data pada database diperlukan perintah khusus yang dikenal dengan naman
SQL. Ada beberapa jenis perintah SQL pada Oracle, yakni:
1. Pengambilan data, yakni: SELECT.
2. Data Manipulation Language (DML), yakni: INSERT, UPDATE, DELETE, dan
MERGE.
3. Data Definition Language (DDL), yakni: CREATE, ALTER, DROP, RENAME,
dan TRUNCATE.
4. Kontrol transaksi, yakni: COMMIT dan ROLLBACK.
5. Data Control Language (DCL), yakni: GRANT dan REVOKE.
5
Danny Kriestanto, S.Kom., M.Eng
Ada beberapa hal yang perlu diperhatikan dalam menulis perintah SQL:
1. Perintah SQL tidak case-sensitive. Artinya, huruf besar dan kecil tidak dibedakan.
2. Perintah SQL dapat lebih dari 1 baris.
3. Kata-kata kunci tidak boleh dipotong atau dipisahkan pada baris yang berbeda.
4. Klausa pada umumnya diletakkan pada baris yang berbeda.
5. Inden dapat digunakan untuk memudahkan dalam pembacaan.
Perintah dasar SELECT
SELECT * | {[DISTINCT] kolom | ekspresi [alias], }
FROM nama_tabel;
Keterangan: Setelah perintah SELECT, gunakan tanda * untuk memilih semua kolom yang
ada pada tabel. Perintah DISTINCT digunakan untuk menghilangkan duplikasi pada hasil
SQL. Bagian kolom dipakai apabila perintah DISTINCT digunakan tapi dapat juga
digunakan tanpa perintah DISTINCT.
Contoh:
1. SELECT * FROM employees;
2. SELECT DISTINCT * FROM departments;
3. SELECT department_id, location_id FROM departments;
Ekspresi Aritmetika
SQL juga mengenal beberapa ekspresi aritmetika, yaitu:
Operator Deskripsi
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
Dari keempat operator tersebut, urutan prioritas pengerjaannya adalah: *, /, +, -
Dengan demikian, operasi dengan menggunakan / akan didahulukan apabila terdapat operator
+ dan/atau - di dalam SQL, demikian halnya apabila terdapat operasi perkalian dan
pembagian maka operator * akan didahulukan sebelum operasi /, dan seterusnya.
6
Danny Kriestanto, S.Kom., M.Eng
Contoh:
1. SELECT last_name, salary, salary + 300 FROM employees;
2. SELECT last_name, salary, 12 * salary + 100 FROM employees;
3. SELECT last_name, salary, 12 * (salary + 100) FROM employees;
Penggunaan Alias
Selain itu, setiap kolom dapat dibuat aliasnya. Alias merupakan penamaan ulang dari sebuah
kolom, dan sangat berguna untuk kolom yang melakukan perhitungan. Penulisan alias dilakukan
setelah menyebutkan nama kolom dan dapat menggunakan kata kunci AS di antara nama kolom
dan nama alias. Penulisan alias membutuhkan tanda petik ganda apabila dalam nama kolom yang
baru terdapat spasi, karakter special, atau menggunakan huruf besar dan kecil.
Contoh:
1. SELECT last_name AS nama, commission_pct komisi FROM employees;
2. SELECT last_name Nama, salary * 12 Gaji Tahunan FROM employees;
Perintah Concate
Dalam SQL dapat juga digunakan operator penggabungan (concatenate) untuk menggabungkan
kolom atau kata dengan kolom lain. Operator ini direpresentasikan dengan dua garis tegak lurus (
|| ). Untuk menggabungkan dengan kalimat, digunakan tanda petik tunggal. Untuk lebih jelasnya,
kerjakan praktik nomor 10 dan 11.
Contoh:
1. SELECT last_name || job_id AS Pegawai FROM employees;
2. SELECT last_name || memiliki ID pekerjaan: || job_id AS Detil Pegawai FROM
employees;
Struktur Tabel
Untuk melihat struktur tabel, dapat digunakan perintah SQL berikut:
7
Danny Kriestanto, S.Kom., M.Eng
DESC[RIBE] nama_tabel;
Contoh:
DESCRIBE departments;
Membatasi dan Mengurutkan Data
Salah satu cara untuk membatasi penampilan data adalah dengan memberikan syarat/kondisi
pada klausa WHERE.
Perintah dasar SQL-nya adalah sebagai berikut;
SELECT * | {[DISTINCT] kolom/ekspresi [alias], }
FROM nama_tabel
WHERE kondisi;
Pada kolom dengan nilai berupa string, pada bagian kondisi menggunakan tanda petik tunggal.
Contoh:
1. SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90;
2. SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = Whalen;
Pada bagian kondisi terdapat beberapa operator perbandingan yang dapat digunakan, seperti
yang terdapat pada tabel berikut.
Operator Arti
= Sama dengan
> Lebih besar dari
>= Lebih besar atau sama dengan
< Kurang dari
<= Kurang dari atau sama dengan
<> Tidak sama dengan
8
Danny Kriestanto, S.Kom., M.Eng
!= Tidak sama dengan
^= Tidak sama dengan
BETWEEN
AND
Berada di antara 2 value
IN(set) Yang cocok dengan salah satu
yang terdapat dalam set
LIKE Yang cocok dengan pola
karakter tertentu
IS NULL Jika value-nya merupakan
merupakan nilai null
Contoh:
1. SELECT last_name, job_id, department_id, hire_date
FROM employees
WHERE hire_date = 01-JAN-95;
2. SELECT last_name, job_id, department_id, salary
FROM employees
WHERE salary >= 6000;
3. SELECT last_name, salary FROM employees WHERE salary <= 3000;
4. SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500;
5. SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201);
6. SELECT first_name FROM employees WHERE first_name LIKE S%;
7. SELECT first_name FROM employees WHERE first_name LIKE _o%;
8. SELECT last_name, manager_id FROM employees WHERE manager_id IS NULL;
Logika Kondisi
Logika kondisi menggabungkan hasil dari dua komponen kondisi sehingga menghasilkan satu
kondisi. Operatornya seperti pada tabel berikut.
Operator Arti
AND Menghasilkan TRUE
9
Danny Kriestanto, S.Kom., M.Eng
apabila kedua komponen
benar
OR Menghasilkan TRUE
apabila salah satu
komponen benar
NOT Menghasilkan TRUE
apabila kondisinya false
Contoh:
1. SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000 AND job_id LIKE %MAN%;
2. SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000 OR job_id LIKE %MAN%;
3. SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201);
4. SELECT last_name, job_id
FROM employees
WHERE job_id NOT IN (IT_PROG, ST_CLERK, SA_REP);
Tata Urutan Hak Pada Operator
Semua operator yang telah dijelaskan di atas memiliki urutan tertentu dalam pengerjaannya,
yang ditunjukkan pada tabel di bawah ini. Urutan ini dapat dilanggar dengan menggunakan tanda
kurung pada bagian perintah yang akan dikerjakan terlebih dahulu.
Urutan
Pengerjaan
Operator
1 Operator aritmetika
2 Operator penggabungan
3 Operator perbandingan
4 IS [NOT] NULL, LIKE, [NOT]
IN
5 [NOT] BETWEEN
6 Kondisi logika NOT
10
Danny Kriestanto, S.Kom., M.Eng
7 Kondisi logika AND
8 Kondisi logika OR
Contoh:
1. SELECT last_name, job_id, salary
FROM employees
WHERE job_id = SA_REP OR job_id = AD_PRES AND salary > 15000;
2. SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = SA_REP OR job_id = AD_PRES) AND salary > 15000;

Klausa ORDER BY
Digunakan untuk mengurutkan data hasil SQL. Terdapat dua macam pengurutan yakni:
ASC: urut naik, secara default digunakan
DESC: urut turun
Perintah ORDER BY dituliskan pada bagian akhir dari pernyataan SELECT. Sintaksnya sebagai
berikut.
SELECT * | {[DISTINCT] kolom/ekspresi [alias], }
FROM nama_tabel
[WHERE kondisi]
[ORDER BY {kolom, ekspresi} [ASC|DESC]];
Perintah ini juga dapat digunakan untuk mengurutkan kolom berdasarkan alias kolom maupun
untuk mengurutkan lebih dari satu kolom.
Contoh:
1. SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date;
2. SELECT last_name, job_id, department_id, hire_date
11
Danny Kriestanto, S.Kom., M.Eng
FROM employees
ORDER BY hire_date DESC;
3. SELECT employee_id, last_name, salary * 12 gajitahunan
FROM employees
ORDER BY gajitahunan;
4. SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;

12
Danny Kriestanto, S.Kom., M.Eng
Query Banyak Tabel
Ada kalanya untuk mendapatkan data tertentu dibutuhkan query yang mengakses lebih dari satu
tabel.
Ketikkan kedua perintah berikut pada SQL Editor atau pada prompt SQL>
DESC employees;
DESC departments;
Seperti yang telah dijelaskan pada pembahasan sebelumnya, kedua perintah tersebut
menunjukkan struktur tabel employees dan departments.
Perhatikan struktur kedua tabel tersebut. Kolom employee_id dan department_id terdapat pada
tabel employees, dan ternyata kolom department_id juga terdapat pada tabel departments. Agar
supaya kedua tabel tersebut dapat menampilkan data dalam satu query, kedua tabel tersebut
harus dihubungkan.
Cartesian Product
Sebuah Cartesian product tercipta ketika kondisi join tidak disebutkan atau invalid. Untuk
menghindari terjadinya Cartesian product, selalu masukkan kondisi join yang valid di klausa
WHERE. Untuk lebih jelas mengenai Cartesian product, kerjakan praktik nomor 1.
Contoh:
SELECT last_name, department_name namadep FROM employees, departments;
Untuk menggabungkan dua tabel pada Oracle digunakan perintah sebagai berikut.
SELECT tabel1.kolom, tabel2.kolom
FROM tabel1, tabel2
WHERE tabel1.kolom1 = tabel2.kolom2;
Sintaks di atas disebut juga dengan nama equijoin. Kerjakan dan perhatikan contoh berikut.
13
Danny Kriestanto, S.Kom., M.Eng
Contoh:
SELECT employees.employee_id, employees.last_name, employees.department_id,
departments.department_id, departments.location_id
FROM employees, departments
WHERE employees.department_id = departments.department_id;
SELECT last_name, employees.department_id, department_name
FROM employees, departments
WHERE employees.department_id = departments.department_id AND
last_name=Matos;
Penyebutan nama tabel dapat dijadikan alias untuk mempermudah pengetikan query. Kerjakan
dan perhatikan contoh berikut.
Contoh:
SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id
FROM employees e, departments d WHERE e.department_id = d.department_id;
Untuk menggabungkan lebih dari dua tabel dibutuhkan kondisi sebanyak (n-1) dimana n adalah
banyaknya tabel yang akan dihubungkan. Jadi, untuk menghubungkan 3 buah tabel dibutuhkan 2
kondisi join, untuk menggabungkan 4 tabel dibutuhkan 3 kondisi join, dst.
Contoh:
SELECT e.last_name, d.department_name, L.city
FROM employees e, departments d, location L
WHERE e.department_id = d.department_id AND d.location_id = L.location_id;
Selain equijoin, Oracle juga memiliki non-equijoin. Kondisi non-equijoin mengandung sesuatu
selain operator sama dengan (=) seperti operator <, >, atau juga BETWEEN. Contoh:
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d WHERE e.employee_id = d.department_id;
14
Danny Kriestanto, S.Kom., M.Eng
Bentuk join yang lain adalah Outer Join. Outer join pada umumnya digunakan untuk
menampilkan yang tidak memiliki hubungan induk-anak pada tabel-tabel yang berhubungan.
Sintaksnya sebagai berikut.
SELECT tabel1.kolom, tabel2.kolom
FROM tabel1, tabel2
WHERE tabel1.kolom(+) = tabel2.kolom;

SELECT tabel1.kolom, tabel2.kolom
FROM tabel1, tabel2
WHERE tabel1.kolom = tabel2.kolom(+);
Sintak tabel1.kolom=tabel2.kolom(+) merupakan sintak outer join yang ditempatkan di salah
satu sisi (bukan keduanya) pada klausa WHERE. Tanda (+) diletakkan pada sisi yang tidak
sempurna (misalnya, terdapat nilai null di dalamnya). Selain itu, outer join tidak boleh
menggunakan operator IN dan OR.
Contoh:
SELECT e.last_name, d.department_id, d.department_name
FROM employees e, departments d WHERE e.department_id(+) = d.department_id;
SELECT e.last_name, e.department_id, d.department_name
FROM employees e LEFT OUTER JOIN departments d ON (e.department_id =
d.department_id);
Sedikit tambahan tentang outerjoin, selain dua macam sintaks tersebut, terdapat tiga macam
outer join yaitu: LEFT OUTER JOIN, RIGHT OUTER JOIN, dan FULL OUTER JOIN. FULL
OUTER JOIN tidak akan dibahas disini.
Contoh:
SELECT e.last_name, e.department_id, d.department_name
FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id =
d.department_id);
SELECT e.last_name, e.department_id, d.department_name
15
Danny Kriestanto, S.Kom., M.Eng
FROM employees e FULL OUTER JOIN departments d ON (e.department_id =
d.department_id);
Join juga dapat dilakukan pada satu tabel yang sama.
Contoh:
SELECT pekerja.last_name || bekerja pada || manager.last_name
FROM employees pekerja, employees manager
WHERE pekerja.manager_id = manager.employee_id;
Untuk mempermudah penulisan pada equijoin, dapat digunakan klausa USING. Klausa USING
digunakan untuk mencocokkan satu kolom ketika terdapat lebih dari satu kolom yang sama.
Contoh:
SELECT employee_id, e.last_name, d.location_id
FROM employees e JOIN departments d USING (department_id);
SELECT l.city, d.department_name
FROM locations l JOIN departments d USING (location_id)
WHERE location_id = 1400;
SELECT l.city, d.department_name
FROM locations l JOIN departments d USING (location_id)
WHERE d.location_id = 1400;

Anda mungkin juga menyukai