Top Banner
1
252

Perancangan Basis Data 3

Feb 07, 2023

Download

Documents

Sumijan Sumijan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Perancangan Basis Data 3

1

Page 2: Perancangan Basis Data 3

2

Lingkungan Lingkungan Database Database

Client/Server Client/Server didi InternetInternet

Page 3: Perancangan Basis Data 3

3

Arsitektur Client/ServerArsitektur Client/Server Menggunakan LAN Menggunakan LAN

untuk mendukung untuk mendukung jaringan PCjaringan PC

Masing-masing PC Masing-masing PC memiliki memiliki penyimpan penyimpan tersendiri tersendiri

Berbagi hardware Berbagi hardware atau softwareatau software

Server

Printer

Client Jaringan

Basis Data

Client

Page 4: Perancangan Basis Data 3

4

Arsitektur File ServerArsitektur File Server Model pertama Client/ServerModel pertama Client/Server Semua pemrosesan dilakukan pada sisi Semua pemrosesan dilakukan pada sisi

workstationworkstation Satu atau beberapa server Satu atau beberapa server

terhubungkan dalam jaringanterhubungkan dalam jaringan Server bertindak sebagai file serverServer bertindak sebagai file server File server bertindak sebagai File server bertindak sebagai

pengelola file dan memungkinkan pengelola file dan memungkinkan klien mengakses file tersebutklien mengakses file tersebut

Page 5: Perancangan Basis Data 3

5

Arsitektur File Server Arsitektur File Server (Lanjutan…)(Lanjutan…)

Setiap klien Setiap klien dilengkapi DBMS dilengkapi DBMS tersendiritersendiri

DBMS berinteraksi DBMS berinteraksi dengan data yang dengan data yang tersimpan dalam bentuk tersimpan dalam bentuk file pada serverfile pada server

Aktivitas pada klien:Aktivitas pada klien: Meminta dataMeminta data Meminta penguncian dataMeminta penguncian data

Tanggapan dari klienTanggapan dari klien Memberikan dataMemberikan data Mengunci data dan Mengunci data dan

memberikan statusnyamemberikan statusnya

LAN

Permintaan dataPermintaan penguncian data

• Permintaan data

• Status penguncian

Klien Klien Klien

File Server

Page 6: Perancangan Basis Data 3

6

Batasan File ServerBatasan File Server Beban jaringan tinggi karena tabel yang Beban jaringan tinggi karena tabel yang

diminta akan diserahkan oleh file diminta akan diserahkan oleh file server ke klien melalui jaringanserver ke klien melalui jaringan

Setiap klien harus memasang DBMS Setiap klien harus memasang DBMS sehingga mengurangi memorisehingga mengurangi memori

Klien harus mempunyai kemampuan proses Klien harus mempunyai kemampuan proses tinggi untuk mendapatkan tinggi untuk mendapatkan response timeresponse time yang bagusyang bagus

Salinan DBMS pada setiap klien harus Salinan DBMS pada setiap klien harus menjaga integritas databasse yang menjaga integritas databasse yang dipakai secara bersama-sama dipakai secara bersama-sama tanggung tanggung jawab diserahkan kepada jawab diserahkan kepada programmerprogrammer

Page 7: Perancangan Basis Data 3

7

Arsitektur Database Arsitektur Database ServerServer

Klien bertanggung jawab dalam Klien bertanggung jawab dalam mengelola antar muka pemakai mengelola antar muka pemakai (mencakup logika penyajian (mencakup logika penyajian data, logika pemrosesan data, data, logika pemrosesan data, logika aturan bisnis)logika aturan bisnis)

Database serverDatabase server bertanggung jawab bertanggung jawab pada penyimpana, pengaksesan, pada penyimpana, pengaksesan, dan pemrosesan databasedan pemrosesan database

Page 8: Perancangan Basis Data 3

8

Arsitektur Database Server Arsitektur Database Server (Lanjutan…)(Lanjutan…)

Data yang diminta saja

Database serverlah Database serverlah yang dituntut memiliki yang dituntut memiliki kemampuan pemrosesan kemampuan pemrosesan yang tinggiyang tinggi

Beban jaringan menjadi Beban jaringan menjadi berkurangberkurang

Otentikasi pemakai, Otentikasi pemakai, pemeriksaan integrasi, pemeriksaan integrasi, pemeliharaan data pemeliharaan data dictionary dilakukan dictionary dilakukan pada database serverpada database server

Database server Database server merupakan implementasi merupakan implementasi dari dari two-tier architecturetwo-tier architecture

LAN

Permintaan data

Klien Klien Klien

Database Server

Page 9: Perancangan Basis Data 3

9

Application Application ArchitecturesArchitectures

Two-tier architecture: Contoh - program klien menggunakan ODBC/JDBC untuk berkomunikasi dengan database

Three-tier architecture: Contoh aplikasi berbasis Web

Page 10: Perancangan Basis Data 3

10

Contoh Two-Tier Contoh Two-Tier ArchitectureArchitecture

ProgramVisual BASIC

DatabaseServerMySQL

MyODBC

Page 11: Perancangan Basis Data 3

11

Contoh Three-tier Contoh Three-tier ArchitectureArchitecture

Klien

Server

M iddleware

(ASP, JSP, PHP, dsb)

Database (Access, Oracle, dsb)

W eb Server

(Apache, IIS, Xitam i, dsb)

Internet

Browser (Internet Explorer,

Netscape,dsb)

Perm intaan Tanggapan

Page 12: Perancangan Basis Data 3

12

Three-Tier ArchitectureThree-Tier Architecture Melibatkan Melibatkan

lapisan lapisan server yang server yang lain selain lain selain lapisan lapisan database database serverserver

LAN

Lapisan Klien

Database Server

Lapisan Bisnis

Lapisan Database

Application Server

Page 13: Perancangan Basis Data 3

13

Beberapa Keuntungan Beberapa Keuntungan Arsitektur Three-TierArsitektur Three-Tier

Keluwesan teknologiKeluwesan teknologi Mudah untuk mengubah Mudah untuk mengubah DBMS engineDBMS engine Memungkinkan pula Memungkinkan pula middle tiermiddle tier ke platform yang ke platform yang

berbedaberbeda Biaya jangka panjang yang rendahBiaya jangka panjang yang rendah

Perubahan-perubahan cukup dilakukan pada Perubahan-perubahan cukup dilakukan pada middle tiermiddle tier daripada pada aplikasi keseluruhan daripada pada aplikasi keseluruhan

Keunggulan kompetitifKeunggulan kompetitif Kekampuan untuk bereaksi thd perubahan Kekampuan untuk bereaksi thd perubahan

bisnis dengan cepat, dengan cara mengubah bisnis dengan cepat, dengan cara mengubah modul kode daripada mengubah keseluruhan modul kode daripada mengubah keseluruhan aplikasiaplikasi

Page 14: Perancangan Basis Data 3

14

MiddlewareMiddleware S/W yang memungkinkan aplikasi S/W yang memungkinkan aplikasi

berhubungan dengan S/W lain berhubungan dengan S/W lain tanpa memerlukan pengetahuan tanpa memerlukan pengetahuan pemakai terhadap kode yang pemakai terhadap kode yang diperlukan agar diperlukan agar interoperatibiltas tercapaiinteroperatibiltas tercapai

Implementasinya bisa berupa API Implementasinya bisa berupa API ((Application Program InterfaceApplication Program Interface))

Page 15: Perancangan Basis Data 3

15

ODBCODBC ODBC (ODBC (open database connectivityopen database connectivity) )

adalah suatu adalah suatu middlewaremiddleware berbasis berbasis Windows yang digunakan untuk Windows yang digunakan untuk berinteraksi denga berbagai berinteraksi denga berbagai databasedatabase

Page 16: Perancangan Basis Data 3

16

Contoh Menguji ODBCContoh Menguji ODBC Klik tombol Start Klik tombol Start

().(). Klik pada Control Klik pada Control

Panel.Panel. Klik pada Klik pada

Administrative Administrative Tools.Tools.

Klik ganda pada Klik ganda pada Data Source Data Source (ODBC).(ODBC).

Page 17: Perancangan Basis Data 3

17

Klik pada Klik pada System DSN.System DSN.

Klik pada Klik pada Add...Add.....

Pilih pada Pilih pada MySQL ODBC MySQL ODBC 3.5.13.5.1

Contoh Menguji ODBC Contoh Menguji ODBC (Lanjutan…)(Lanjutan…)

Page 18: Perancangan Basis Data 3

18

Klik tombol Klik tombol Finish.Finish.

Contoh Menguji ODBC Contoh Menguji ODBC (Lanjutan…)(Lanjutan…)

Page 19: Perancangan Basis Data 3

19

Ketikkan MySQL pada Ketikkan MySQL pada Data Source Name.Data Source Name.

Ketikkan 127.0.0.1 Ketikkan 127.0.0.1 pada Server.pada Server.

Ketikkan root pada Ketikkan root pada User.User.

Ketikkan rahasia Ketikkan rahasia pada Password.pada Password.

Pilih pegawai pada Pilih pegawai pada Database.Database.

Klik tombol Test.Klik tombol Test.

Contoh Menguji ODBC Contoh Menguji ODBC (Lanjutan…)(Lanjutan…)

Page 20: Perancangan Basis Data 3

20

Pemanfaatan ODBC pada Pemanfaatan ODBC pada VB6VB6

Function KoneksiMySQL(Conn As ADODB.Connection, _Function KoneksiMySQL(Conn As ADODB.Connection, _ Server As String, _Server As String, _ Database As String, _Database As String, _ User As String, Password As String) As User As String, Password As String) As

BooleanBoolean 'Koneksi ke database MySQL'Koneksi ke database MySQL Conn.ConnectionString = "DRIVER={MySQL ODBC 3.52 Driver};" & _Conn.ConnectionString = "DRIVER={MySQL ODBC 3.52 Driver};" & _ "SERVER=" & Server & ";" & _"SERVER=" & Server & ";" & _ "DATABASE=" & Database & ";" & _"DATABASE=" & Database & ";" & _ "UID=" & User & "; PWD=" & _"UID=" & User & "; PWD=" & _ PasswordPassword On Error Resume NextOn Error Resume Next Conn.OpenConn.Open On Error GoTo 0On Error GoTo 0 KoneksiMySQL = (Err.Number = 0)KoneksiMySQL = (Err.Number = 0) End FunctionEnd Function

Page 21: Perancangan Basis Data 3

21

JDBCJDBC JDBC (Java Database JDBC (Java Database

Connectivity) memungkinkan Connectivity) memungkinkan applet mengakses databaseapplet mengakses database

Bisa digunakan pada JSPBisa digunakan pada JSP

Page 22: Perancangan Basis Data 3

22

Query-By-Example (QBE)Query-By-Example (QBE) Suatu tool yang Suatu tool yang

memungkinkan memungkinkan pengaksesan pengaksesan database secara database secara lansung lansung menggunakan menggunakan pendekatan pendekatan grafisgrafis

Page 23: Perancangan Basis Data 3

23

InternetInternet Internet merupakan contoh Internet merupakan contoh jaringan jaringan

terbesarterbesar yang menghubungkan jutaan yang menghubungkan jutaan komputer yang tersebar di seluruh komputer yang tersebar di seluruh penjuru dunia dan tak terikat pada satu penjuru dunia dan tak terikat pada satu organisasipunorganisasipun

Siapa saja dapat bergabung pada Siapa saja dapat bergabung pada InternetInternet

Dengan menggunakan jaringan ini, sebuah Dengan menggunakan jaringan ini, sebuah organisasi dapat melakukan organisasi dapat melakukan pertukaran pertukaran informasiinformasi secara internal ataupun secara internal ataupun melakukan pertukaran informasi secara melakukan pertukaran informasi secara eksternal dengan organisasi-organisasi eksternal dengan organisasi-organisasi yang lainyang lain

Page 24: Perancangan Basis Data 3

24

InternetInternet Jaringan Jaringan

tersusun tersusun atas atas berbagai berbagai jenis jenis komputer komputer dan sistem dan sistem operasioperasi

Page 25: Perancangan Basis Data 3

25

World Wide WebWorld Wide Web Sistem pengaksesan informasi dalam Sistem pengaksesan informasi dalam

Internet yang paling terkenal dan biasa Internet yang paling terkenal dan biasa dikenal dengan istilah dikenal dengan istilah WebWeb

Web menggunakan protokol yang disebut Web menggunakan protokol yang disebut HTTPHTTP ( (HyperText Transfer ProtocolHyperText Transfer Protocol))

Dokumen Web ditulis dalam format Dokumen Web ditulis dalam format HTMLHTML ((HyperText Markup LanguageHyperText Markup Language))

Dokumen ini diletakkan dalam Web server Dokumen ini diletakkan dalam Web server dan diakses oleh klien (Pengakses dan diakses oleh klien (Pengakses informasi) melalui perangkat lunak yang informasi) melalui perangkat lunak yang disebut disebut Web browserWeb browser atau sering disebut atau sering disebut browserbrowser saja saja

Page 26: Perancangan Basis Data 3

26

e-Businesse-Business Penggunaan teknologi Internet Penggunaan teknologi Internet

untuk menghubungkan dan untuk menghubungkan dan memperkuat proses-proses bisnis, memperkuat proses-proses bisnis, perdagangan elektronis (perdagangan elektronis (electronic electronic commercecommerce atau e-commerce), dan atau e-commerce), dan komunikasi serta kolaborasi antar komunikasi serta kolaborasi antar sebuah perusahaan dengan para sebuah perusahaan dengan para pelanggan, pemasok, dan mitra pelanggan, pemasok, dan mitra kerja bisnis elektronis lainnyakerja bisnis elektronis lainnya (O’Brien)(O’Brien)

Page 27: Perancangan Basis Data 3

27

Cakupan e-BusinessCakupan e-Business

Page 28: Perancangan Basis Data 3

28

Aplikasi Komunikasi dan Aplikasi Komunikasi dan Kolaborasi PerusahaanKolaborasi Perusahaan

Digunakan untuk mendukung komunikasi, Digunakan untuk mendukung komunikasi, koordinasi, dan kolaborasi para koordinasi, dan kolaborasi para anggota tim bisnis dalam perusahaananggota tim bisnis dalam perusahaan

Contoh, para pegawai dan konsultan Contoh, para pegawai dan konsultan yang terlibat dalam sebuah proyek yang terlibat dalam sebuah proyek bisa menggunakan jaringan Internet, bisa menggunakan jaringan Internet, Intranet, atau bahkan Extranet untuk Intranet, atau bahkan Extranet untuk saling berkomunikasisaling berkomunikasi

Komponen pendukung: e-mail, v-mail, Komponen pendukung: e-mail, v-mail, forum diskusi, sistem chat, forum diskusi, sistem chat, konferensi suara dan video, sistem konferensi suara dan video, sistem pertemuan elektronispertemuan elektronis

Page 29: Perancangan Basis Data 3

29

Aplikasi Bisnis InternalAplikasi Bisnis Internal Digunakan untuk mendukung Digunakan untuk mendukung

kegiatan, proses, dan operasi kegiatan, proses, dan operasi bisnis yang bersifat internal bisnis yang bersifat internal bagi perusahaanbagi perusahaan

Contoh:Contoh: Pemrosesan transaksi internalPemrosesan transaksi internal Enterprise information portalEnterprise information portal Sistem pendukung manajemenSistem pendukung manajemen

Page 30: Perancangan Basis Data 3

30

E-CommerceE-Commerce Aplikasi perdagangan elektronis Aplikasi perdagangan elektronis

digunakan untuk mendukung kegiatan digunakan untuk mendukung kegiatan pembelian dan penjualan, pemasaran pembelian dan penjualan, pemasaran produk, jasa, dan informasi melalui produk, jasa, dan informasi melalui InternetInternet

Contoh penerapan:Contoh penerapan: Electronic Funds TransferElectronic Funds Transfer (EFT) (EFT) Lelang onlineLelang online

Page 31: Perancangan Basis Data 3

31

E-CommerceE-Commerce E-E-

commerce commerce dibagi dibagi menjadi menjadi dua dua jenis: jenis: B2B danB2B dan B2CB2C

Page 32: Perancangan Basis Data 3

32

B2B (B2B (Business-to-BusinessBusiness-to-Business)) Menyatakan penjualan produk atau Menyatakan penjualan produk atau

jasa yang melibatkan jasa yang melibatkan antarperusahaan dan dilakukan antarperusahaan dan dilakukan dengan sistem otomasidengan sistem otomasi

Umumnya perusahaan yang terlibat Umumnya perusahaan yang terlibat adalah pemasok, distributor, adalah pemasok, distributor, pabrik, tokok, dan lain-lainpabrik, tokok, dan lain-lain

Kebanyakan transaksi berlangsung Kebanyakan transaksi berlangsung secara langsung antara dua sistemsecara langsung antara dua sistem

Page 33: Perancangan Basis Data 3

33

Keuntungan B2B, jika dikerjakan Keuntungan B2B, jika dikerjakan dengan benar, dapat menghemat dengan benar, dapat menghemat biaya, meningkatkan pendapatan, biaya, meningkatkan pendapatan, memberikan pengiriman yang memberikan pengiriman yang lebih cepat, mengurangi biaya lebih cepat, mengurangi biaya administrasi, dan meningkatkan administrasi, dan meningkatkan layanan kepada pelanggan layanan kepada pelanggan (Karper dan Ellis)(Karper dan Ellis)

B2B (B2B (Business-to-BusinessBusiness-to-Business) ) (Lanjutan)(Lanjutan)

Page 34: Perancangan Basis Data 3

34

B2C (B2C (Business-to-ConsumerBusiness-to-Consumer)) Melibatkan interaksi dan Melibatkan interaksi dan

transaksi antara sebuah transaksi antara sebuah perusahaan dengan para pelangganperusahaan dengan para pelanggan

Keunggulan B2C dibandingkan Keunggulan B2C dibandingkan dengan penjualan konvensional dengan penjualan konvensional melalui toko fisik adalah melalui toko fisik adalah memungkinkan layanan selama 24 memungkinkan layanan selama 24 jamjam

Page 35: Perancangan Basis Data 3

35

Aplikasi WebAplikasi Web Aplikasi Web dapat dibagi Aplikasi Web dapat dibagi

menjadi 2 macam:menjadi 2 macam:1.1. Web Statis danWeb Statis dan2.2. Web DinamisWeb Dinamis

Page 36: Perancangan Basis Data 3

36

Web StatisWeb Statis Web statis dibentuk dengan Web statis dibentuk dengan

menggunakan HTML sajamenggunakan HTML saja Kekurangan Web statis terletak Kekurangan Web statis terletak

pada keharusan untuk memelihara pada keharusan untuk memelihara halaman Web secara terus-halaman Web secara terus-menerus setiap ada perubahan menerus setiap ada perubahan informasiinformasi

Page 37: Perancangan Basis Data 3

37

Web DinamisWeb Dinamis Isi halaman bersifat dinamis, dapat mengikuti Isi halaman bersifat dinamis, dapat mengikuti

perubahan isi perubahan isi databasedatabase Pengertian Web dinamis terkadang diartikan Pengertian Web dinamis terkadang diartikan

sebagai halaman Web yang dilengkapi dengan sebagai halaman Web yang dilengkapi dengan gambar-gambar bergerakgambar-gambar bergerak

Web dinamis dapat digunakan untuk membentuk Web dinamis dapat digunakan untuk membentuk aplikasi interaktif, yang memungkinkan pemakai aplikasi interaktif, yang memungkinkan pemakai tak hanya memperoleh informasi terkini tetapi tak hanya memperoleh informasi terkini tetapi juga dapat melakukan perubahan data. Misalnya:juga dapat melakukan perubahan data. Misalnya: Untuk pengisian KRSUntuk pengisian KRS Perubahan data pribadiPerubahan data pribadi Pengisian berita baruPengisian berita baru dlldll

Web dinamis dibentuk dengan menambahkan perangkat Web dinamis dibentuk dengan menambahkan perangkat lunak tambahan, seperti ASP atau PHPlunak tambahan, seperti ASP atau PHP

Page 38: Perancangan Basis Data 3

38

Prinsip Kerja Web Berbasis Prinsip Kerja Web Berbasis HTMLHTML1.1. Browser meminta sebuah halaman ke Browser meminta sebuah halaman ke

suatu situssuatu situs2.2. Permintaan diterima oleh Web server Permintaan diterima oleh Web server

(server yang bertanggung jawab (server yang bertanggung jawab melayani permintaan browser)melayani permintaan browser)

3.3. Web server segera mengirimkan Web server segera mengirimkan halaman HTML yang diminta ke klien)halaman HTML yang diminta ke klien)

4.4. Browser pada klien segera Browser pada klien segera menampilkan dokumen HTML menampilkan dokumen HTML berdasarkan kode-kode yang terdapat berdasarkan kode-kode yang terdapat pada HTMLpada HTML

Page 39: Perancangan Basis Data 3

39

Prinsip Kerja Web Berbasis Prinsip Kerja Web Berbasis HTMLHTML

Klien

W eb server

Browser

Permintaan HTTP (sesuatu.html)

Kode HTM L

Tanggapan HTTP

Page 40: Perancangan Basis Data 3

40

Prinsip Kerja Web DinamisPrinsip Kerja Web Dinamis(Contoh dengan PHP)(Contoh dengan PHP)

Klien

W eb server

Browser

Perm intaan HTTP (sesuatu.php)

Kode HTM L

Tanggapan HTTP

Skrip PHP

M esin PHP

Page 41: Perancangan Basis Data 3

41

Teknologi WebTeknologi Web Teknologi untuk membentuk Teknologi untuk membentuk

aplikasi Web yang dinamis :aplikasi Web yang dinamis :1.1. Teknologi pada sisi klien (Teknologi pada sisi klien (client-client-

side technologyside technology))2.2. Teknologi pada sisi server (Teknologi pada sisi server (server-server-

side technologyside technology))

Page 42: Perancangan Basis Data 3

42

Teknologi pada Sisi Teknologi pada Sisi KlienKlien

1.1. Kontrol Active XKontrol Active X2.2. Java appletJava applet3.3. Client-side script (JavaScript Client-side script (JavaScript

dan VBScript)dan VBScript)4.4. DHTML (CSS / DHTML (CSS / Cascading Style Cascading Style

SheetsSheets))

Page 43: Perancangan Basis Data 3

43

Teknologi pada Sisi Teknologi pada Sisi ServerServer

CGICGI FastCGIFastCGI Proprietary Web Server API (ISAPI dan Proprietary Web Server API (ISAPI dan

NSAPI)NSAPI) Active Server Pages (ASP)Active Server Pages (ASP) Java Server Pages (JSP) dan Java Java Server Pages (JSP) dan Java

ServletsServlets Server-side JavaScriptServer-side JavaScript PHPPHP

Page 44: Perancangan Basis Data 3

44

Lingkungan Lingkungan Database Database

TerdistribusiTerdistribusi

Page 45: Perancangan Basis Data 3

45

DEFINISI ARSITEKTURDEFINISI ARSITEKTUR Arsitektur:

Struktur, artinya komponen-komponen apa yang ada dalam suatu sistem dan fungsi masing-masing komponen tersebut, serta bagaimana inter-relasi dan interaksi antar komponen dalam sistem tersebut.

Arsitektur Sistem Software: Spesifikasi dari arsitektur sistem software,

menyebutkan bermacam-macam modul beserta interface dan inter-relasi antar data dan alur kontrol dalam suatu sistem: Programming-in-the-small: Pengembangan individual modul Programming-in-the-large: Pengintegrasian modul-modul

menjadi suatu sistem yang komplit. Jadi, Distributed DBMS adalah Large Scale

Software System.

Page 46: Perancangan Basis Data 3

46

Reference Architecture:

Struktur “Ideal” (Standard): Segala bentuk sistem mengacu atau merupakan turunan dari Reference Architecture ini.

Untuk menciptakan Reference Architecture ini diperlukan STANDARDISASI.

Contoh: ISO/OSI Model yang merupakan reference architecture dari Wide Area Computer Networks

Page 47: Perancangan Basis Data 3

47

STANDARDISASI DBMSSTANDARDISASI DBMS Reference Model (Arsitektur Sistem) dapat

dinyatakan berdasarkan 3 pendekatan yang berbeda: Berdasarkan Komponen:

Inter-relasi antar komponen yang masing-masing mempunyai fungsi yang berbeda-beda.

Berdasarkan Fungsi: Penyediaan fungsi-fungsi/fasilitas-fasilitas yang dapat

memenuhi kebutuhan user yang berbeda-beda. Strukturnya kebanyakan berbentuk hirarkhi, sesuai klasifikasi user, contohnya ISO/OSI model.

Berdasarkan Data: Karena data merupakan sumber daya utama yang di-manage oleh

DBMS, maka pendekatan ini menjadi pilihan yang tepat untuk melangkah lebih jauh ke proses standardisasi. Penyediaan beberapa tipe data dan arsitektur sistem ditekankan pada penyediaan fungsi berdasarkan klasifikasinya yang dapat menggunakan tipe-tipe data pada masing-masing klasifikasi.

Page 48: Perancangan Basis Data 3

48

ANSI/SPARC ArchitectureANSI/SPARC Architecture Akhir tahun 72, the Computer and

Information Processing Committee (X3) of the American National Standards Institute (ANSI) membuat Study Group DBMS dibawah bantuan Standards Planning and Requirements Committee (SPARC).

Misinya adalah studi tentang kelayakan/feasibility membuat suatu standard di DBMS dan aspek apa yang memungkinkan untuk distandardisasikan.

Page 49: Perancangan Basis Data 3

49

ANSI/SPARC Architecture

Page 50: Perancangan Basis Data 3

50

Arsitektur ANSI/SPARC:

Arsitektur sistem yang berbasis organisasi data. Three Views of Data:

External View Struktur data yang terlihat oleh user.

Internal View Struktur data dalam sistem atau mesin. Berhubungan erat dengan organisasi data secara

fisik. Lokasi dan mekanisme akses ke data

Conceptual View : Yang menjembatani, definisi abstrak dari

database. Representasi data dan relasi antar data tanpa memperhatikan kebutuhan setiap aplikasi atau keterbatasan media penyimpanan.

Perlu Schema pada masing2DanMapping

Page 51: Perancangan Basis Data 3

51

Conceptual SchemaRELATION EMP [

KEY = {ENO}ATTRIBUTES = {

ENO : CHARACTER(9)ENAME : CHARACTER(15)TITLE : CHARACTER(10)}

]

RELATION PAY [KEY = {TITLE}ATTRIBUTES = {

TITLE : CHARACTER(10)SAL : NUMERIC(6)

}]

RELATION PROJ [KEY = {PNO}ATTRIBUTES = {

PNO : CHARACTER(7)PNAME : CHARACTER(20)BUDGET : NUMERIC(7)

}]

RELATION ASG [KEY = {ENO,PNO}ATTRIBUTES = {

ENO : CHARACTER(9)PNO : CHARACTER(7)RESP : CHARACTER(10)DUR : NUMERIC(3)

}]

Page 52: Perancangan Basis Data 3

52

Internal Schema:INTERNAL_REL EMPL [

INDEX ON E# CALL EMINXFIELD = {

HEADER : BYTE(1)E# : BYTE(9)ENAME : BYTE(15)TIT : BYTE(10)

}]

Page 53: Perancangan Basis Data 3

53

External Schema: Contoh 1 (Create a BUDGET view from the PROJ

relation):CREATE VIEW BUDGET(PNAME, BUD)

AS SELECT PNAME, BUDGETFROM PROJ

Contoh 2 (Create a Payroll view from relations EMP and TITLE_SALARY):

CREATE VIEW PAYROLL (ENO, ENAME, SAL)AS SELECT EMP.ENO,EMP.ENAME,PAY.SAL

FROM EMP, PAYWHERE EMP.TITLE = PAY.TITLE

Page 54: Perancangan Basis Data 3

54

MODEL ARSITEKTUR UNTUK DISTRIBUTED DBMSMODEL ARSITEKTUR UNTUK DISTRIBUTED DBMS

Klasifikasi Distributed DBMS (3 Dimensi Permasalahan):

1. Distribusi: Lokasi komponen sistem di satu tempat atau tidak.

2. Heterogenitas: Bermacam-macam level (H/W, Komunikasi, OS) Yang terpenting (Data model, Query language, Transaction

Management Algorithms)3. Otonomi:

Versi Design Autonomy: Masing-masing DBMS bebas menggunakan model data dan manajemen transaksi yang disukai.

Versi Communication Autonomy: Masing-masing DBMS menentukan apa dan bagaimana cara berkomunikasi dengan DBMS lain.

Versi Execution Autonomy: Masing-masing DBMS mengeksekusi operasi-operasi lokal dengan berbagai cara yang disukai.

Page 55: Perancangan Basis Data 3

55

Alternatif Implementasi DBMS:

Page 56: Perancangan Basis Data 3

56

Distributed Database Reference Architecture (Data Organizational View):

LIS (Local Internal Schema): Physical Data Organization pada setiap site mungkin berbeda, untuk itu pada masing-masing site dibutuhkan individual internal schema.LCS (Local Conceptual Schema): Karena data pada Distributed Database biasanya terfragmentasi atau terduplikasi, maka organisasi data secara logispun dibutuhkan di setiap site.GCS (Global Conceptual Schema): Struktur logis data yang ada pada semua site.Mendukung Data Independensi (Ekstensi ANSI/SPARC Arc.), Transparansi Replikasi data, Transparansi Network..Local Database Management diintegrasikan dalam Global DBMS.

Page 57: Perancangan Basis Data 3

57

Komponen-komponen Distributed DBMS (Peer-to-Peer):

Page 58: Perancangan Basis Data 3

58

Komponen-komponen Distributed DBMS (Peer-to-Peer):

USER PROCESSOR:USER PROCESSOR: User Interface Handler: Menerjemahkan perintah user dan

menampilkan data ke user. Semantic Data Controller: Chek terhadap user query, dapat

diproses atau tidak? Global Query Optimizer and Decomposer: Strategi eksekusi dengan

cost yang minimal, penerjemahan global query ke local query. Distributed Execution/Transaction Monitor: Koordinasi Eksekusi

yang terdistribusi.Physical Data Organization pada setiap site mungkin berbeda, untuk itu pada masing-masing site dibutuhkan individual internal schema.

DATA PROCESSOR:DATA PROCESSOR: Local Query Optimizer: Bertugas sebagai Access Path

Selector (indexing attribute2) Local Recovery Manager: Menjaga konsistensi database

lokal ketika terjadi kegagalan. Run-time Support Processor: Interface ke OS dan terdapat

database buffer (cache) manager yang memaintain main memory buffer dan akses data.

Page 59: Perancangan Basis Data 3

59

Multi DBS Architecture:

Page 60: Perancangan Basis Data 3

60

FAKULTASKode_FNm_Fakultas

MATAKULIAHKode_mtkNama_MtkSks Kode_f

MAHASISWANobpNamaKode_fPin

NILAINPMKode_MtkNILAi_KuisNilai_PrNilai_UTSNilai_UAS

Page 61: Perancangan Basis Data 3

61

Create Table Tfakultas( Kode_f Char(16) NOT NULL PRIMARY Key, Nama_f Varchar2(100), Nama_PS char(20), Status char(45), NoSK char(35));

Create Table Tmhs( Nobp Char(16) NOT NULL PRIMARY Key, Nama Varchar2(100), Kelas char(15), Kode_f char(3) References Tfakultas(Kode_f));

Page 62: Perancangan Basis Data 3

62

Create Table Tmtk( Kode_MK Char(10) NOT NULL PRIMARY Key, Nama_MK Varchar2(100), Sks number(2), Prasyarat1 char(10), Prasyarat2 char(10), Prasyarat3 char(10));

Create Table tNilai( Kode_MK Char(10) References tmtk(kode_mk), Nobp Char(16) References tmhs(nobp), Nilai_KUIS number(5,2), Nilai_PR number(5,2), Nilai_UTS number(5,2), Nilai_UAS number(5,2), constraint pk_nilai PRIMARY KEY (kode_mk, Nobp));

Page 63: Perancangan Basis Data 3

63

Insert into Tmtk values ('KKKI53001','Apl. DBServer',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI52002','Perbankan',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI53011','Multiuser',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI53012','Mnj. Sains',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI52005','Peng. Sistem Informasi',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI52006','Prak. Sistem Operasi Jaringan',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI53007','Teknik Kompilasi',2,NULL,NULL,NULL);

Insert into tfakultas values ('261','Ilmu Komputer','Sistem Informasi','Terakreditasi','001/BAN-PT/S1/SK/2009');Insert into tfakultas values ('262','Ilmu Komputer','Sistem Komputer','Terakreditasi','056/BAN-PT/S1/SK/2006');Insert into tfakultas values ('260','Ilmu Komputer','Mnj. Informatika','Terakreditasi','089/BAN-PT/D3/SK/2006');Insert into tfakultas values ('263','Ilmu Komputer','Teknik Informatika','Terdaftar','-');Insert into tfakultas values ('511','Ekonomi','S1-Akuntansi', 'Terakreditasi','056/BAN-PT/S1/SK/2006');Insert into tfakultas values ('531','Ekonomi','S1-Manajemen‘ ,'Terakreditasi','089/BAN-PT/D3/SK/2006');Insert into tfakultas values ('751','Psikologi','Psikologi' ,'Terakreditasi','089/BAN-PT/S1/SK/2009');Insert into tfakultas values ('425','Teknologi Industri','Teknik Industri' ,'Terdaftar','-');Insert into tfakultas values ('433','Sipil Dan Perencanaan','Teknik Sipil,'Terdaftar','-');Insert into tfakultas values ('911','Desain Komunikasi Visual','Desain Komunikasi Visual' ,'Terdaftar','-');Insert into tfakultas values ('811','Pascasarjana','S2-Magister Manajemen' ,'Terakreditasi','089/BAN-PT/S2/SK/2008');Insert into tfakultas values ('812','Pascasarjana','S2-Magister Komputer' ,'Terakreditasi','089/BAN-PT/S2/SK/2008');

Page 64: Perancangan Basis Data 3

64

Insert into tmhs values ('07101152610254','Widya','4SI-6','261');Insert into tmhs values ('07101152610255','Atika','4SI-6','261');Insert into tmhs values ('07101152610256','Danny','4SI-6','261');Insert into tmhs values ('07101152610257','Debie','4SI-6','261');Insert into tmhs values ('07101152610258','Thia','4SI-6','261');Insert into tmhs values ('07101152610259','Susy','4SI-6','261');Insert into tmhs values ('07101152610260','Egil','4SI-6','261');

Page 65: Perancangan Basis Data 3

65

Insert into tnilai values ('KKKI53001','07101152610260',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610260',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610260',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610260',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610260',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610260',60,65,80,70);Insert into tnilai values ('KKKI53001','07101152610254',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610254',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610254',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610254',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610254',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610254',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610254',70,55,90,80);Insert into tnilai values ('KKKI53001','07101152610255',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610255',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610255',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610255',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610255',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610255',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610255',70,55,90,80);Insert into tnilai values ('KKKI53001','07101152610256',80,75,60,60);

Page 66: Perancangan Basis Data 3

66

Insert into tnilai values ('KKKI52002','07101152610256',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610256',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610256',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610256',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610256',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610256',70,55,90,80);Insert into tnilai values ('KKKI53001','07101152610257',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610257',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610257',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610257',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610257',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610257',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610257',70,55,90,80);Insert into tnilai values ('KKKI53001','07101152610258',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610258',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610258',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610258',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610258',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610258',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610258',70,55,90,80);commit;

Page 67: Perancangan Basis Data 3

3. 3. Kalau Orang Tua Dapat Uang selalu memikirkan Anak, tetapi kalau anak dapat uang siapa yang diingat ?.

2. 2. Siapa yang besar Allah atau Sombongmu, Angkuhmu, pujian dari makluknya ?.

1.1. Siapa yang besar Allah atau Harta, Siapa yang besar Allah atau Harta, Jabatan, keluarga, materi, Ilmu, Jabatan, keluarga, materi, Ilmu, Kecantikan, Kegagahan ?Kecantikan, Kegagahan ?

4. 4. Kalau anak sakit, orang tua selalu memikirkan Anaknya bagaimana supaya sembuh dengan bergai cara, tetapi kalau orang tua sakit bagaimana anak ?.

RENUNGKAN DAN BAGAIMANA KONDISI INI ?.

6767

Page 68: Perancangan Basis Data 3

68

Limiting the Rows Selected Restrict the rows returned by using the WHERE clause.

The where clause follows the FROM clause.

SELECT * | {[DISTINCT] column | expression [alias], …}FROM table[WHERE condition(s)];

Page 69: Perancangan Basis Data 3

69

Using the WHERE ClauseSELECT Kode_f, Nama_f, Nama_PS, substr(Kode_f,1,2) as Kode_FakFROM tfakultasWHERE substr(Kode_f,1,2)=26;

Page 70: Perancangan Basis Data 3

70

Character Strings and Dates Character strings and date values are enclosed in single quotation marks.

Character values are case sensitive, and date values are format sensitive.

The default date format is DD-MON-RR.

SELECT Kode_f, Nama_f, Nama_PS, substr(Kode_f,1,2) as Kode_FakultasFROM tfakultasWHERE Nama_F = 'Ekonomi';

Page 71: Perancangan Basis Data 3

71

Comparison ConditionsOperator Meaning

= Equal to> Greater than>= Greater than or equal

to< Less than<= Less than or equal to<> Not equal to

SELECT *FROM tnilaiwhere nilai_UAS >=90

Page 72: Perancangan Basis Data 3

72

Other Comparison Conditions

Operator Meaning

BETWEEN … AND …

Between two values (inclusive)

IN Match any of a list of values

LIKE Match a character pattern

IS [NOT] NULL Is a null value

Concatenation operator (||)

Page 73: Perancangan Basis Data 3

73

Using the BETWEEN Condition

SELECT *FROM tnilaiwhere nilai_UAS between 80 and 90

Use the BETWEEN condition to display rows based on a range of values.

Lower limit

Upper limit

Page 74: Perancangan Basis Data 3

74

Using the IN Condition

SELECT *FROM tnilaiwhere nilai_UAS in(70,90)

Use the IN membership condition to test for values in a list.

Page 75: Perancangan Basis Data 3

75

Using the LIKE Condition

SELECT Nama_PSFROM tfakultasWHERE Nama_Ps LIKE 'S%';

• Use the LIKE condition to perform wildcard searches of valid search string values.• Search conditions can contain either literal characters or numbers.

- % denotes zero or many characters.- _ (underscore) denotes one

character.

Page 76: Perancangan Basis Data 3

76

Using the LIKE Condition

SELECT Nama_PSFROM tfakultasWHERE Nama_Ps LIKE 'S%';

• You can combine pattern-matching characters.

• You can use the ESCAPE identifier to search for the actual % and _ symbols.SELECT Nama_F, Nama_PSFROM tfakultasWHERE Nama_Ps LIKE 'S%' ESCAPE '\';

Page 77: Perancangan Basis Data 3

77

Page 78: Perancangan Basis Data 3

78

Using the NULL Condition

SELECT *FROM tmhsWHERE Kelas is NULL

Test for nulls with the IS NULL operator.

Page 79: Perancangan Basis Data 3

79

Logical ConditionsOperator Meaning

AND Returns TRUE if both component conditions are true

OR Returns TRUE if either component condition is true

NOT Returns TRUE if the following condition is false

AND TRUE FALSE NULLTRUE TRUE FLASE NULLFALSE FALSE FALSE FALSENULL NULL FLASE NULL

AND Truth Table

OR TRUE FALSE NULLTRUE TRUE TRUE TRUEFALSE TRUE FALSE NULLNULL TRUE NULL NULL

OR Truth Table

Page 80: Perancangan Basis Data 3

80

Using the AND Operator

SELECT Nama_F, Nama_PSFROM tfakultasWHERE Nama_Ps LIKE 'S%' and substr(kode_f,1,2)=26

AND requires both conditions to be true.

Page 81: Perancangan Basis Data 3

81

Using the OR OperatorSELECT *FROM tnilaiwhere nilai_UAS >=80 and Kode_MK like '%12%'

OR requires either condition to be true.

8 rows selected

Page 82: Perancangan Basis Data 3

82

Using the NOT OperatorSELECT *FROM tnilaiwhere nilai_UAS >=80and Kode_MK not in ('KKKI52012','KKKI53012');

Page 83: Perancangan Basis Data 3

83

Rules of PrecedenceOrder Evaluated Operator

1 Arithmetic Operators2 Concatenation Operator3 Comparisons conditions4 IS [NOT] NULL, LIKE, [NOT] IN5 [NOT] BETWEEN6 NOT logical condition7 AND logical condition8 OR logical condition

Override rules of precedence by using parentheses.

Page 84: Perancangan Basis Data 3

84

The CREATE TABLE Statement

CREATE TABLE table(column datatype [DEFAULT expr], …);

Example:CREATE TABLE dept

(dept_no number(3), dept_name varchar2(15), location varchar2(10));

Table created.

You must have:- CREATE TABLE privilege- A storage area

Page 85: Perancangan Basis Data 3

85

Data TypesData Types Description

VARCHAR2(size) Variable-length character dataCHAR(size) Fixed-length character dataNUMBER(p,s) Variable length numeric dataDATE Date and time valuesLONG Variable-length character data up to 2

gigabytesCLOB Character data up to 4 gigabytesRAW and LONG RAW Raw binary dataBLOB Binary data up to 4 gigabytesBFILE Binary data stored in an external file; up

to 4 gigabytesROWID A 64 base number system representing the

unique address of a row in its table

Page 86: Perancangan Basis Data 3

86

The ALTER TABLE Statement

Use the ALTER TABLE statement to:• Add a new column• Modify an existing column• Define a default value for the new column• Drop a column

Page 87: Perancangan Basis Data 3

87

The ALTER TABLE Statement

ALTER TABLE tableADD (column datatype [DEFAULT expr], …);

Example:ALTER TABLE deptADD (dept_id number(3));Table altered.

Page 88: Perancangan Basis Data 3

88

The ALTER TABLE Statement

ALTER TABLE tableMODIFY (column datatype [DEFAULT expr], …);

Example:ALTER TABLE deptMODIFY (dept_id number(3));Table altered.

ALTER TABLE tableDROP (column);

Example:ALTER TABLE deptDROP (dept_id);Table altered.

Page 89: Perancangan Basis Data 3

89

Dropping a TABLE

DROP TABLE dept;Table dropped.

• All data and structure in the table is deleted.• Any pending transactions are committed.• All indexes are dropped• You cannot roll back the DROP TABLE statement.

Page 90: Perancangan Basis Data 3

90

Data Manipulation Language

• A DML statement is executed when you:- Add new rows to a table- Modify existing rows in a table- Remove existing rows from a table

• A transaction consists of a collection of DML statements that form a logical unit of work

Page 91: Perancangan Basis Data 3

91

The INSERT StatementINSERT INTO table [(column_1, column_2, …)]VALUES (value1, value2, …);

• Add new rows to a table by using the INSERT statement.

• Only one row is inserted at a time with this syntax.Example:

INSERT INTO dept (dept_no, dept_name, location)VALUES (001, ‘Marketing’, ‘Padang’);

Page 92: Perancangan Basis Data 3

92

The INSERT Statement• Insert from another table:

INSERT INTO dept (dept_no, dept_name, location)SELECT department_id, department_name, areaFROM departmentWHERE department_id = ‘101’;

• Do not use VALUES clause• Match the number of columns in the INSERT clause to those in the subquery.

Page 93: Perancangan Basis Data 3

93

The UPDATE Statement

UPDATE table SET column = value [, column = value, …][WHERE condition];

• Modify existing rows in a table by using the UPDATE statement.

• Update more than one row at a time, if required.Example:UPDATE dept SET dept_name = ‘Production’WHERE dept_name = ‘Marketing’;

Page 94: Perancangan Basis Data 3

94

The DELETE Statement

DELETE [FROM] table [WHERE condition];

• Remove existing rows from a table by using the DELETE statement.

• Specific rows are deleted if you specify the WHERE clause.Example:DELETE FROM dept WHERE dept_name = ‘Marketing’;

• All rows are deleted if you omit the WHERE clause.Example:

DELETE FROM dept;

Page 95: Perancangan Basis Data 3

95

The DATE Data Type

TO_CHAR(date, ‘format_model’);Example:SELECT employee_id, TO_CHAR(hire_date, ‘MM/YY’) Month_HiredFROM employeesWHERE last_name = ‘Higgins’;

• Use TO_CHAR function to display dates.

EMPLOYEE_ID MONTH_HIRED205 06/94

Page 96: Perancangan Basis Data 3

96

Elements of the DATE Format Model

YY Two-digit value for yearYYYY Full year in numbersYEAR Year spelled outMM Two-digit value for monthMONTH Full name for the monthMON Three-letter abbreviation of the

monthDY Three-letter abbreviation of the day

of the weekDAY Full name of the day of the weekDD Numeric day of the week

Page 97: Perancangan Basis Data 3

97

The DATE Data Type

TO_DATE(char, ‘format_model’);Example:INSERT INTO employees (hire_date)VALUES (TO_DATE(’16/05/2005’, ‘DD/MM/YY’));

• Use TO_DATE function to convert a character string to a date format.

Page 98: Perancangan Basis Data 3

98

Joining Tables

SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column1 = table2.column2;

• Use a join to query data from more than one table.

• Write the join condition in the WHERE clause.• Prefix the column name with the table name when the same column name appears in more than one table.

Page 99: Perancangan Basis Data 3

99

Retrieving Records with Equijoins

SELECT employees.employee_id, employees.last_name, employees.department_id, departments.department_id,departments.location_id

FROM employees, departmentsWHERE employees.department_id = departments.department_id;

EMPLOYEE_ID LAST_NAME DEPARTMENT_ID DEPARTMENT_ID LOCATION_ID200 Whalen 10 10 1700201 Hartstein 20 20 1800202 Fay 20 20 1800

…..

Page 100: Perancangan Basis Data 3

100

Additional Search Conditions

SELECT employees.last_name, employees.department_id, department_nameFROM employees, departmentsWHERE employees.department_id = departments.department_idAND last_name = ‘Matos’;

LAST_NAME DEPARTMENT_ID DEPARTMENT_NAMEMatos 50 Shipping

Page 101: Perancangan Basis Data 3

101

Join with AliasesSELECT e.last_name, e.department_id, d.department_nameFROM employees e, departments dWHERE e.department_id = d.department_idAND e.last_name = ‘Matos’;

LAST_NAME DEPARTMENT_ID DEPARTMENT_NAMEMatos 50 Shipping

Page 102: Perancangan Basis Data 3

102

Creating a Table using a Subquery

CREATE TABLE dept80 AS

SELECT employee_id, last_name, salary*12 ann_sal, hire_date

FROM employeesWHERE department_id = 80;

Table created.Name Null? Type

EMPLOYEE_ID NUMBER(6)LAST_NAME NOT NULL VARCHAR2(25)ANN_SAL NUMBERHIRE_DATE NOT NULL DATE

Page 103: Perancangan Basis Data 3

103

ConstraintsConstraints enforce rules at the table level.Constraints prevent the deletion of a table if there are dependencies.The following constraint types are valid:

- NOT NULL – a column cannot contain a null value

- UNIQUE – values must be unique for all rows

- PRIMARY KEY – uniquely identifies each row

- FOREIGN KEY – establishes a foreign key in relation

- CHECK – a condition must be true

Page 104: Perancangan Basis Data 3

104

Defining Constraintscolumn [CONSTRAINT constraint_name] constraint_type;

• Column constraint level

• Table constraint levelColumn, …

[CONSTRAINT constraint_name] constraint_type(column, …),

Page 105: Perancangan Basis Data 3

105

The NOT NULL ConstraintsCREATE TABLE employees (

employee_id NUMBER(6),last_name VARCHAR2(25) NOT NULL,salary NUMBER(8,2),commission_pct NUMBER(2,2),hire_date DATE

CONSTRAINT emp_hire_date_nnNOT NULL,

• Defined at the column level:

Page 106: Perancangan Basis Data 3

106

The UNIQUE ConstraintsCREATE TABLE employees (

employee_id NUMBER(6),last_name VARCHAR2(25) NOT NULL,salary NUMBER(8,2),commission_pct NUMBER(2,2),hire_date DATE NOT NULL,

…CONSTRAINT emp_email_uk UNIQUE(email));

• Defined at either the table level or the column level:

Page 107: Perancangan Basis Data 3

107

The PRIMARY KEY Constraints

CREATE TABLE departments (department_id NUMBER(4),department_name VARCHAR2(30)

CONSTRAINT dept_name_nn NOT NULL,manager_id NUMBER(6),location_id NUMBER(4),

CONSTRAINT dept_id_pk PRIMARY KEY (department_id));

• Defined at either the table level or the column level:

Page 108: Perancangan Basis Data 3

108

The FOREIGN KEY Constraints

CREATE TABLE employees (employee_id NUMBER(6),last_name VARCHAR2(25) NOT NULL,salary NUMBER(8,2),commission_pct NUMBER(2,2),hire_date DATE NOT NULL,

…department_id NUMBER(4),CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments(department_id),CONSTRAINT emp_email_uk UNIQUE(email));

• Defined at either the table level or the column level:

Page 109: Perancangan Basis Data 3

109

FAKULTASKode_FNm_Fakultas

MATAKULIAHKode_mtkNama_MtkSks Kode_f

MAHASISWANobpNamaKode_fPin

NILAINPMKode_MtkNILAi_KuisNilai_PrNilai_UTSNilai_UAS

Page 110: Perancangan Basis Data 3

110

select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, (nilai_kuis+nilai_pr+nilai_uts+nilai_uas)/4 as Ratarata from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp in ('07101152610254','07101152610260');

1. Tampilkan nobp, nama, kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, dan rata-rata =nilai_kuis+nilai_pr+nilai_uts+nilai_uas)/4 Ratarata dari tabel tmhs t1, tmtk t2, tnilai t3 untuk Nonp 07101152610254 dan 07101152610260

Page 111: Perancangan Basis Data 3

111

Create view contohvw as select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, (0.10*nilai_kuis)+(0.20*nilai_pr)+(0.30*nilai_uts)+(0.40*nilai_uas) as Ratarata from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp in ('07101152610254','07101152610260');

2. Tampilkan nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, ratarata= (10%*nilai_kuis) + (20%*nilai_pr) + (30%*nilai_uts) + (40%*nilai_uas) dari table tmhs, tmtk dan tnilai untuk Nobp 07101152610254 dan 07101152610260

Page 112: Perancangan Basis Data 3

112

Create view contohvw select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, (0.10*nilai_kuis)+(0.20*nilai_pr)+(0.30*nilai_uts)+(0.40*nilai_uas) as Ratarata from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t2.nama_mk like '%an%'

3. Tampilkan nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, ratarata= (10%*nilai_kuis) + (20%*nilai_pr) + (30%*nilai_uts) + (40%*nilai_uas) dari table tmhs, tmtk dan tnilai Untuk nama_mk yang mengandung karakter ‘an’

Page 113: Perancangan Basis Data 3

113

Page 114: Perancangan Basis Data 3

114

Create view contohvw select t2.kd_cust,nama, t1.kd_brg, nama_brg,tglj,t1.harga,jml, t1.harga*jml as TotalHarga, (0.05*t1.harga*jml) as Discount, (t1.harga*jml)-(0.05*t1.harga*jml) as TotalBersih from barang t1, customer t2, transaksi t3 where t1.kd_brg=t3.kd_brg and t2.kd_cust=t3.kd_cust;

1. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual

Page 115: Perancangan Basis Data 3

115

Create view contohvw select t2.kd_cust,nama, t1.kd_brg, nama_brg,tglj,t1.harga,jml, t1.harga*jml as TotalHarga, (0.05*t1.harga*jml) as Discount, (t1.harga*jml)-(0.05*t1.harga*jml) as TotalBersih from barang t1, customer t2, transaksi t3 where t1.kd_brg=t3.kd_brg and t2.kd_cust=t3.kd_cust and t2.kd_cust in ('K0002','K0005');

2. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual untuk Konsumen 'K0001‘ dan 'K0005'

Page 116: Perancangan Basis Data 3

116

Create view contohvw select t2.kd_cust,nama, t1.kd_brg, nama_brg,tglj,t1.harga,jml, t1.harga*jml as TotalHarga, (0.05*t1.harga*jml) as Discount, (t1.harga*jml)-(0.05*t1.harga*jml) as TotalBersih from barang t1, customer t2, transaksi t3 where t1.kd_brg=t3.kd_brg and t2.kd_cust=t3.kd_cust and tglj between '02-mar-05' and '05-dec-05' order by tglj;

3. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual untuk transaksi penjualan tanggal '02-mar-05' sampai dengan '05-dec-05' dan urutkan berdasarkan tanggal jual

Page 117: Perancangan Basis Data 3

117

Page 118: Perancangan Basis Data 3

118

select t2.kd_k,nama, t1.kd_m, jenis,tglj, jml, t1.harga, jml*t1.harga as TotalHarga, (0.10*jml*t1.harga) as Discount, (jml*t1.harga)-(0.10*jml*t1.harga) as TotalBersihfrom Mobil t1, konsumen t2, Jual t3 where t1.kd_m=t3.kd_m and t2.kd_k=t3.kd_k;

1. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual

Page 119: Perancangan Basis Data 3

119

select t2.kd_k,nama, t1.kd_m, jenis,tglj, jml, t1.harga, jml*t1.harga as TotalHarga, (0.10*jml*t1.harga) as Discount, (jml*t1.harga)-(0.10*jml*t1.harga) as TotalBersihfrom Mobil t1, konsumen t2, Jual t3 where t1.kd_m=t3.kd_m and t2.kd_k=t3.kd_k and t3.kd_k in ('K0001','K0005');

2. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual untuk Konsumen 'K0001‘ dan 'K0005'

Page 120: Perancangan Basis Data 3

120

select t2.kd_k,nama, t1.kd_m, jenis,tglj, jml, t1.harga, jml*t1.harga as TotalHarga, (0.10*jml*t1.harga) as Discount, (jml*t1.harga)-(0.10*jml*t1.harga) as TotalBersihfrom Mobil t1, konsumen t2, Jual t3 where t1.kd_m=t3.kd_m and t2.kd_k=t3.kd_k and tglj between '02-mar-05' and '05-dec-05' order by tglj;

3. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual untuk transaksi penjualan tanggal '02-mar-05' sampai dengan '05-dec-05' dan urutkan berdasarkan tanggal jual

Page 121: Perancangan Basis Data 3

121

Page 122: Perancangan Basis Data 3

122

select t2.kodevcd, judul,t1.kodepenyewa, nama, hargasewa, tglsewa, tglkembali from penyewa t1, vcd t2, peminjaman t3 where t1.kodepenyewa=t3.kodepenyewa and t2.kodevcd=t3.kodevcd and t1.kodepenyewa in ('P-001','P-005') order by t2.kodevcd;

1. Tampilkan kodevcd, judul,t1.kodepenyewa, nama, hargasewa, tglsewa, tglkembali dari table penyewa , vcd , dan peminjaman untuk kdpenyewa 'P-001‘ dan 'P-005') urutkan berdasarkan kodevcd;

Page 123: Perancangan Basis Data 3

123

select t2.kodevcd, judul,t1.kodepenyewa, nama, hargasewa, tglsewa from penyewa t1, vcd t2, peminjaman t3 where t1.kodepenyewa=t3.kodepenyewa and t2.kodevcd=t3.kodevcd and tglsewa between '01-Mar-2006' and '01-dec-2006' order by t2.kodevcd;

2. Tampilkan kodevcd, judul,t1.kodepenyewa, nama, hargasewa, tglsewa, tglkembali dari table penyewa , vcd , dan peminjaman untuk tanggal sewa mulai '01-Mar-2006' sampai dengan '01-dec-2006' diurutkan berdasarkan kodevcd;

Page 124: Perancangan Basis Data 3

124

select t1.kodepenyewa, nama, sum(hargasewa) as TotalBayar from penyewa t1, vcd t2, peminjaman t3 where t1.kodepenyewa = t3.kodepenyewa and t2.kodevcd=t3.kodevcd and tglsewa between '01-jan-2006' and '01-dec-2006' group by t1.kodepenyewa, nama

3. Tampilkan kodepenyewa, nama, sum(hargasewa) dari table penyewa , vcd , dan peminjaman yang disewa tanggal sewa mulai '01-jan-2006' sampai dengan '01-dec-2006'

Page 125: Perancangan Basis Data 3

125

Page 126: Perancangan Basis Data 3

126

Select b.npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, (a.tgl_k)-(a.tgl_hrs_k) as Lewat, TO_NUMBER((a.tgl_k)-(a.tgl_hrs_k))*1000 as DendaFrom peminjaman1 a, mahasiswa1 b, buku c Where a.nobp = b.npm AND a.kd_b=c.kd_b and b.npm between '07101152610003' and '07101152610005' order by b.npm

1. Tampilkan npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, lewat=(a.tgl_k)-(a.tgl_hrs_k), denda setiap hari Rp.1000,- dari tabel peminjaman1, mahasiswa1, dan buku Untuk Npm mulai '07101152610003' sampai dengan '07101152610005' dan urutkan berdasarkan npm

Page 127: Perancangan Basis Data 3

127

Select b.npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, (a.tgl_k)-(a.tgl_hrs_k) as Lewat, TO_NUMBER((a.tgl_k)-(a.tgl_hrs_k))*1000 as Denda From peminjaman1 a, mahasiswa1 b, buku c Where a.nobp = b.npm AND a.kd_b=c.kd_b and tgl_p between '11-may-09' and '13-may-09' and (a.tgl_k)-(a.tgl_hrs_k)>0 order by b.npm

2. Tampilkan npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, lewat=(a.tgl_k)-(a.tgl_hrs_k), denda setiap hari Rp.1000,- dari tabel peminjaman1, mahasiswa1, dan buku Untuk Tanggal peminjaman mulai '11-may-09' and '13-may-09' sampai dengan yang terlambat mengembalikan buku dan urutkan berdasarkan npm

Page 128: Perancangan Basis Data 3

128

Select b.npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, (a.tgl_k)-(a.tgl_hrs_k) as Lewat, TO_NUMBER((a.tgl_k)-(a.tgl_hrs_k))*1000 as DendaFrom peminjaman1 a, mahasiswa1 b, buku c Where a.nobp = b.npm AND a.kd_b=c.kd_b and tgl_p between '14-may-09' and '17-may-09' and (a.tgl_k)-(a.tgl_hrs_k)>=0 order by b.npm

3. Tampilkan npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, lewat=(a.tgl_k)-(a.tgl_hrs_k), denda setiap hari Rp.1000,- dari tabel peminjaman1, mahasiswa1, dan buku Untuk Tanggal peminjaman mulai '14-may-09' and '17-may-09' sampai dengan yang terlambat mengembalikan buku dan urutkan berdasarkan npm

Page 129: Perancangan Basis Data 3

129

Page 130: Perancangan Basis Data 3

130

select rute.kd_rute, rute, pesawat.kd_pesawat, pelanggan.kd_plg, nm_plg, hargafrom rute, pesawat, pelanggan, tiket where pelanggan.kd_plg = tiket.kd_plg and rute.kd_rute=tiket.kd_rute and pesawat.kd_rute=rute.kd_rute and rute.kd_rute between '02' and '03' order by pesawat.kd_pesawat

1. Tampilkan kd_rute, rute, kd_pesawat, kd_plg, nm_plg, harga dari tabel rute, pesawat,pelanggan, dan tiket untuk kd_rute '02' dan '03' urutkan berdasarkan kd_pesawat

Page 131: Perancangan Basis Data 3

131

select rute.kd_rute, rute, pesawat.kd_pesawat, pelanggan.kd_plg, nm_plg, hargafrom rute, pesawat, pelanggan, tiket where pelanggan.kd_plg = tiket.kd_plg and rute.kd_rute=tiket.kd_rute and pesawat.kd_rute=rute.kd_rute and pesawat.kd_pesawat='M-3' order by pesawat.kd_pesawat

2. Tampilkan kd_rute, rute, kd_pesawat, kd_plg, nm_plg, harga dari tabel rute, pesawat,pelanggan, dan tiket untuk kd_Pesawat ='M-3' urutkan berdasarkan kd_pesawat

Page 132: Perancangan Basis Data 3

132

select rute.kd_rute, rute, pesawat.kd_pesawat, sum(harga) as TotalBiayafrom rute, pesawat, pelanggan, tiket where pelanggan.kd_plg = tiket.kd_plg and rute.kd_rute=tiket.kd_rute and pesawat.kd_rute=rute.kd_rute group by rute.kd_rute, rute, pesawat.kd_pesawat

3. Tampilkan kd_rute, rute, kd_pesawat, sum(harga) dari tabel rute, pesawat, pelanggan, dan tiket urutkan berdasarkan kd_pesawat

Page 133: Perancangan Basis Data 3

133

Page 134: Perancangan Basis Data 3

134

select kabupaten.kd_Kab, Nm_Kab, pangan.Kd_Pangan, Nm_Pangan, satuan, klmpk_pangan, stock, bulan, produksi, jumlah_sedia, kebutuhan, jumlah_minta, (stock+produksi)-(kebutuhan+jumlah_minta) as Sisa from pangan, kabupaten, ketersediaan where pangan.kd_pangan=ketersediaan.kd_pangan and kabupaten.kd_kab=ketersediaan.kd_kab and kabupaten.kd_Kab in ('K001','K004','K002') order by kabupaten.kd_Kab

1. Tampilkan kd_Kab, Nm_Kab,Kd_Pangan, Nm_Pangan, satuan, klmpk_pangan, stock, bulan, produksi, jumlah_sedia, kebutuhan, jumlah_minta, dan sisa (stock+produksi)-(kebutuhan+jumlah_minta) dari tabel pangan, kabupaten, dan ketersediaan untuk kd_Kab 'K001','K004', dan 'K002‘ urutkan berdasarkan kd_Kab

Page 135: Perancangan Basis Data 3

135

select kabupaten.kd_Kab, Nm_Kab, pangan.Kd_Pangan, Nm_Pangan, satuan, klmpk_pangan, stock, bulan, produksi, jumlah_sedia, kebutuhan, jumlah_minta, (stock+produksi)-(kebutuhan+jumlah_minta) as Sisa from pangan, kabupaten, ketersediaan where pangan.kd_pangan=ketersediaan.kd_pangan and kabupaten.kd_kab=ketersediaan.kd_kab and bulan between '01-feb-09' and '01-aug-09' order by kabupaten.kd_Kab

2. Tampilkan kd_Kab, Nm_Kab,Kd_Pangan, Nm_Pangan, satuan, klmpk_pangan, stock, bulan, produksi, jumlah_sedia, kebutuhan, jumlah_minta, dan sisa (stock+produksi)-(kebutuhan+jumlah_minta) dari tabel pangan, kabupaten, dan ketersediaan untuk bulan Februari s/d agustus 2009

Page 136: Perancangan Basis Data 3

136

select kabupaten.kd_Kab, Nm_Kab, sum(stock), sum(produksi), sum(jumlah_sedia), sum(kebutuhan), sum(jumlah_minta), sum((stock+produksi)-(kebutuhan+jumlah_minta)) as Sisa from pangan, kabupaten, ketersediaanwhere pangan.kd_pangan=ketersediaan.kd_pangan and kabupaten.kd_kab = ketersediaan.kd_kab group by kabupaten.kd_Kab, Nm_Kab order by kabupaten.kd_Kab

3. Tampilkan kabupaten.kd_Kab, Nm_Kab, sum(stock), sum(produksi), sum(jumlah_sedia), sum(kebutuhan), sum(jumlah_minta), sum((stock+produksi)-(kebutuhan+jumlah_minta)) dari tabel pangan, kabupaten, dan ketersediaan urutkan berdasarkan kd_kab

Page 137: Perancangan Basis Data 3

137

Page 138: Perancangan Basis Data 3

138

select tamu.No_Id, Nama, Alamat, kamar.No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk as cekin, Tgl_Keluar as cekout from tamu, kamar, transaksi1 where tamu.No_Id=transaksi1.No_Id and kamar.No_Kamar=transaksi1.No_Kamar

1. Tampilkan No_Id, Nama, Alamat, No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk, Tgl_Keluar, lama=(Tgl_Keluar-Tgl_Masuk), Biaya_Adm, TotalBiaya=((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm dari tabel tamu, kamar, transaksi1 urut berdasarkan NO_Id

Page 139: Perancangan Basis Data 3

139

select tamu.No_Id, Nama, Alamat, kamar.No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk as cekin, Tgl_Keluar as cekout, (Tgl_Keluar-Tgl_Masuk) as Lama, Biaya_Adm as Adm, (to_Number((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm as TotBiaya from tamu, kamar, transaksi1 where tamu.No_Id=transaksi1.No_Id and kamar.No_Kamar=transaksi1.No_Kamar and alamat in ('Aceh','Padang','Palembang','Medan')

2. Tampilkan No_Id, Nama, Alamat, No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk, Tgl_Keluar, lama=(Tgl_Keluar-Tgl_Masuk), Biaya_Adm, TotalBiaya=((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm dari tabel tamu, kamar, transaksi1 urut berdasarkan NO_Id untuk wilayah pulau sumatera

Page 140: Perancangan Basis Data 3

140

select tamu.No_Id, Nama, Alamat, kamar.No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk as cekin, Tgl_Keluar as cekout, (Tgl_Keluar-Tgl_Masuk) as Lama, Biaya_Adm as Adm, (to_Number((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm as TotBiaya from tamu, kamar, transaksi1 where tamu.No_Id=transaksi1.No_Id and kamar.No_Kamar=transaksi1.No_Kamar and tgl_keluar between '12-may-09' and '18-may-09';

3. Tampilkan No_Id, Nama, Alamat, No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk, Tgl_Keluar, lama=(Tgl_Keluar-Tgl_Masuk), Biaya_Adm, TotalBiaya=((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm dari tabel tamu, kamar, transaksi1 urut berdasarkan NO_Id yang telah check-in pada tanggal '12-may-09' sampai dengan '18-may-09';

Page 141: Perancangan Basis Data 3

141

AFTER MID SEMESTERAFTER MID SEMESTER PL/SQL (procedural Language/Structured

Query Language) untuk oracle Meningkatkan performance oracle database Tersedia type data, variable, constants,

aritmatik, Logical, if-conditions, loops conditions, procedure, function, dan trigger

Termasuk struktur program dalam PL/SQL Studi kasus Sistem Penilaian pada

Perguruan Tinggi

Page 142: Perancangan Basis Data 3

142

Page 143: Perancangan Basis Data 3

14310/19/22

Ten Years of Writing on the Oracle PL/SQL Language

Page 144: Perancangan Basis Data 3

144

These "Old" Programmers

Page 145: Perancangan Basis Data 3

145

System Global Area (SGA) of RDBMS Instance

Shared Pool

Large Pool

Reserved Pool

show_empscalc_totals upd_salaries

Select * from emp

Shared SQLPre-parsed

Update emp Set sal=...

Library cache

Session 1 memory (PGA/UGA)

emp_rec emp%rowtype;tot_tab tottabtype;

Session 2 memory (PGA/UGA)

emp_rec emp%rowtype;tot_tab tottabtype;

User 1 User 2mysess.pkg

Sess2.sql

Page 146: Perancangan Basis Data 3

146

Oracle server

PL/SQL Runtime Engine SQL EnginePL/SQL block Procedura

l statement executor SQL

statement executor

FORALL aDept IN deptlist.FIRST.. deptlist.LAST DELETE emp WHERE deptno = deptlist(aDept);

Much less overhead for Much less overhead for context switchingcontext switching

Enter the “Bulk Bind”

Page 147: Perancangan Basis Data 3

147

Oracle server

PL/SQL Runtime Engine SQL EnginePL/SQL block Procedura

l statement executor SQL

statement executor

FOR aDept IN deptlist.FIRST.. deptlist.LASTLOOP DELETE emp WHERE deptno = deptlist(aDept);END LOOP;

Performance penalty Performance penalty for many “context for many “context switches”switches”

Enter the “Bulk Bind”

Page 148: Perancangan Basis Data 3

148

Pendahuluan 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

Page 149: Perancangan Basis Data 3

149

DeclareDeclarex integer; alamat varchar2(100);Nobp char(16);

BeginBeginx := 10;

Alamt := ‘Komp. Palm Griya Indah Padang’;

Nobp := ‘07101152610762’; end;end;

Variable, Type data, dan Variable, Type data, dan ConstantsConstants

Page 150: Perancangan Basis Data 3

150

DECLAREDECLARE variable type_data;variable type_data; variable konstanta Constant type_data:=nilai;variable konstanta Constant type_data:=nilai; mendeklarasikan konstanta;mendeklarasikan konstanta;BEGINBEGIN statement-1;statement-1; statement-2;statement-2; … …....EXCEPTIONEXCEPTIONWHENWHEN nama_eksepsi nama_eksepsi THENTHEN statement_untuk_mengatasi_error;statement_untuk_mengatasi_error; …… ……..END;END;

Struktur PL/SQLStruktur PL/SQL

Page 151: Perancangan Basis Data 3

151

Contoh ProgramContoh Programset serveroutput ondeclare x constant integer:=100;begin dbms_output.put_line(to_number(x));exception when value_error then dbms_output.put_line('Kesalahan Pada Pengisian Nilai'); end;

Page 152: Perancangan Basis Data 3

152

Tipe DataTipe 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

Page 153: Perancangan Basis Data 3

153

Variabel Adalah sebuah peubah yang digunakan untuk menampung sebuah nilai di memori komputer.

Page 154: Perancangan Basis Data 3

154

Contoh VariabelDECLARE

X integer;Alamat varchar2(40);No_induk char(8);

.....BEGIN

X := 12;Alamat := ‘Gelatik Dalam 391, Bandung’;No_induk := ‘DOG29549’;

END;

Page 155: Perancangan Basis Data 3

155

Konstanta Digunakan untuk menyimpan sebuah nilai di memori komputer.

Nilai yang disimpan bersifat tetap (konstan)

Contoh :DECLAREpi CONSTANT real := 3.14;lebar CONSTANT integer := 100;

Page 156: Perancangan Basis Data 3

156

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

Page 157: Perancangan Basis Data 3

157

Struktur Blok PL/SQL

Terdapat tiga bagian : Bagian pendeklarasian tipe data

(opsional) Bagian penulisan perintah Bagian eksepsi (opsional)

Page 158: Perancangan Basis Data 3

158

Bentuk Umum Stuktur Umum PL/SQLDECLARE

variabel tipe_data;konstanta CONSTANT tipe_data := nilai;...

BEGINstatement_1;statement_2;...

EXCEPTIONWHEN nama_eksepsi THEN statement_untuk_mengatasi_error;...

END;

Page 159: Perancangan Basis Data 3

159

Contoh Paling Sederhana

BEGINDBMS_OUTPUT.PUT_LINE(‘Belajar Oracle’);

END;

Catatan:Untuk melihat hasil, setting terlebih

dahulu variabel sistem SERVEROUTPUT dengan menuliskan :

SET SERVEROUTPUT ON

Page 160: Perancangan Basis Data 3

160

Contoh LainSET SERVEROUTPUT ONDECLAREteks VARCHAR2 (20);

BEGINteks := ‘Belajar Oracle’;DBMS_OUTPUT.PUT_LINE(teks);

END;/

Page 161: Perancangan Basis Data 3

161

Contoh dengan eksepsiSET SERVEROUTPUT ON

DECLAREX Integer;

BEGINX := ‘Belajar Oracle’;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );

EXCEPTIONWHEN VALUE_ERROR THENDBMS_OUTPUT.PUT_LINE (‘Kesalahan pada pengisisan nilai’);

END;/

Page 162: Perancangan Basis Data 3

162

set serveroutput on /* untuk keluaran */begin dbms_output.put_line('Ocale Database');end;

Contoh Penggunaan set Contoh Penggunaan set serveroutput onserveroutput on

Page 163: Perancangan Basis Data 3

163

set serveroutput ondeclare teks varchar2(45);begin teks:='Ocale Database'; dbms_output.put_line(teks);end;

Contoh Penggunaan Declare VarContoh Penggunaan Declare Var

Page 164: Perancangan Basis Data 3

164

set serveroutput ondeclare x constant integer:=100;begin dbms_output.put_line(to_number(x));exception when value_error then dbms_output.put_line('Kesalahan Pada Pengisian Nilai'); end;

Contoh Penggunaan Exception Contoh Penggunaan Exception ErrorseErrorse

Page 165: Perancangan Basis Data 3

165

Pendahuluan Terminologi

Z := 3 + 6Maka :

Z disebut variabel:= disebut operator assigment3 dan 6disebut operand3 + 6 disebut ekspresi+ disebut operator aritmatikaZ:=3+6 disebut statemen aritmatika

Page 166: Perancangan Basis Data 3

166

Jenis Operator Operator Logika

Operator NOT , AND , OR Operator Aritmatika

Operator + , - , * , / , MOD Operator Relasional

Operator < , <= , > , >= Operator Persamaan

Operator = , <> Operator Penggabungan

Operator ||

Page 167: Perancangan Basis Data 3

167

Contoh Penggunaan Operator +

SET SERVEROUPUT ONDECLARE

X INTEGER;Y NUMBER;

BEGINX := 2 + 3;Y := 2.45 + 3.14;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );DBMS_OUTPUT.PUT_LINe( TO_CHAR(X) );

END;/

Page 168: Perancangan Basis Data 3

168

Contoh Penggunaan Operator -

SET SERVEROUPUT ONDECLARE

X INTEGER;Y NUMBER;

BEGINX := 5 - 3;Y := 6.88 – 2.73;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );DBMS_OUTPUT.PUT_LINe( TO_CHAR(X) );

END;/

Page 169: Perancangan Basis Data 3

169

Contoh Penggunaan Operator *

SET SERVEROUPUT ONDECLARE

X INTEGER;Y NUMBER;

BEGINX := 5 * 2;Y := 6.13 – 2;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );DBMS_OUTPUT.PUT_LINe( TO_CHAR(X) );

END;/

Page 170: Perancangan Basis Data 3

170

Contoh Penggunaan Operator /

SET SERVEROUPUT ONDECLAREX NUMBER;

BEGINX := 10 / 3;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );

END;/

Page 171: Perancangan Basis Data 3

171

Contoh Penggunaan Operator MODSET SERVEROUPUT ONDECLAREX INTEGER;

BEGINX := 10 MOD 3;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );

END;/

Page 172: Perancangan Basis Data 3

172

Contoh Penggunaan Operator RelasionalSET SERVEROUTPUT ONDECLARE

X INTEGER;BEGIN

X := 10;IF (X <= 5) THEN

DBMS_OUTPUT.PUT_LINE(‘TRUE’);ELSE

DBMS_OUTPUT.PUT_LINE(‘FALSE’);END IF;

END;/

Page 173: Perancangan Basis Data 3

173

Contoh Penggunaan Operator PersamaanSET SERVEROUTPUT ONDECLARE

X INTEGER;BEGIN

X := 10;IF (X = 10) THEN

DBMS_OUTPUT.PUT_LINE(‘Sepuluh’);ELSE

DBMS_OUTPUT.PUT_LINE(‘Bukan Sepuluh’);END IF;

END;/

Page 174: Perancangan Basis Data 3

174

Contoh Penggunaan Operator PenggabunganSET SERVEROUTPUT ONDECLARE

X NUMBER;S VARCHAR2 (25);

BEGINX := 15.2 + 4.63;S := ‘Nilai X sama dengan ‘;DBMS_OUTPUT.PUT_LINE(S || TO_CHAR(X) );

END;/

Page 175: Perancangan Basis Data 3

175

set serveroutput ondeclare x integer; y number;begin x := 2 + 3; y := 2.45 + 3.14 ; dbms_output.put_line(to_char(x)); dbms_output.put_line(to_char(y));end;

Contoh Penggunaan Operator Contoh Penggunaan Operator AritmatikaAritmatika

Page 176: Perancangan Basis Data 3

176

Contoh Penggunaan Operator Contoh Penggunaan Operator AritmatikaAritmatika

set serveroutput ondeclare x integer; y number;begin x := 5 - 3; y := 6.88 - 2.73 ; dbms_output.put_line(to_char(x)); dbms_output.put_line(to_char(y));end;

Page 177: Perancangan Basis Data 3

177

set serveroutput ondeclare x number; s varchar2(45);begin x := 15.2 + 4.63; s := 'Nilai x sama dengan :'; dbms_output.put_line(s || to_char(x));end;

Contoh Penggunaan Operator Contoh Penggunaan Operator AritmatikaAritmatika

Page 178: Perancangan Basis Data 3

178

Pendahuluan Blok Eksepsi (exception block) adalah blok yang digunakan untuk menjebak error yang mungkin terdjadi di dalam blok PL/SQL

Eksepsi (exception) merupakan jenis-jenis error yang menyebabkan terhentinya program secara tidak normal

Page 179: Perancangan Basis Data 3

179

Tujuan dan Jenis Tujuan Blok Eksepsi adalah menangani error-error yang telah didefinisikan menjadi sebuah eksepsi sehingga meskipun terdapat error, error tersebut tidak akan ditampilkan melainkan dilempar ke bagian eksepsi

Jenis Eksepsi : Pre-defined exception User-defined exception

Page 180: Perancangan Basis Data 3

180

Bentuk Umum EksepsiEXCEPTION

WHEN eksepsi_pertama THENstatemen_utk_mengatasi_eksepsi_pertama;WHEN eksepsi_kedua THENstatemen_utk_mengatasi_eksepsi_kedua;...WHEN OTHERS THENstatemen_utk_mengatasi_eksepsi_lainnya;

END;

Page 181: Perancangan Basis Data 3

181

Pre-defined Exception Adalah sebuah eksepsi yang telah didefinisikan atau sudah tersedia dalam Oracle, sehingga dapat langsung menggunakan tanpa harus membuatnya terlebih dahulu

Page 182: Perancangan Basis Data 3

182

Contoh 1, Tanpa blok eksepsiSET SERVEROUTPUT ONDECLARE

X INTEGER;Y NUMBER;

BEGINX := 0;Y := 1 / X;DBMS_OUTPUT.PUT_LINE(‘Nilai Y = ‘ || TO_CHAR(Y));

END;/

Hasil yang muncul dilayar:ORA-01476 : divisior is equal to zero

Page 183: Perancangan Basis Data 3

183

Contoh 1, Dengan blok eksepsiSET SERVEROUTPUT ONDECLARE

X INTEGER;Y NUMBER;

BEGINX := 0;Y := 1 / X;DBMS_OUTPUT.PUT_LINE(‘Nilai Y = ‘ || TO_CHAR(Y));

EXCEPTIONWHEN ZERO_DEVIDE THENDBMS_OUTPUT.PUT_LINE(‘Terjadi kesalahan karena terdapat ‘ || ‘pembagian dengan 0 (NOL) ‘);

END;/

Page 184: Perancangan Basis Data 3

184

Contoh 2, Tanpa blok eksepsiSET SERVEROUTPUT ONDECLARE

X NUMBER;BEGIN

X := ‘Budi Raharjo’;DBMS_OUTPUT.PUT_LINE(‘Nilai X = ‘ || TO_CHAR(X) );

END;/

Hasil yang muncul dilayar :ORA-06502: PL/SQL: numeric or value error

Page 185: Perancangan Basis Data 3

185

Contoh 2, Dengan blok eksepsiSET SERVEROUTPUT ONDECLARE

X NUMBER;BEGIN

X := ‘Budi Raharjo’;DBMS_OUTPUT.PUT_LINE(‘Nilai X = ‘ || TO_CHAR(X) );

EXCEPTIONWHEN VALUE_ERROR THENDBMS_OUTPUT.PUT_LINE(‘Pengisian nilai tidak sesuai dengan ‘ || ‘tipe variabel’);

END;/

Page 186: Perancangan Basis Data 3

186

Nama Eksepsi Kode Error

Keterangan

CURSOR_ALREADY_OPEN ORA-6511 Cursor masih dalam keadaan terbukaDUP_VALUE_ON_INDEX ORA-0001 Duplikasi constraintINVALID_CURSOR ORA-1001 Membuka cursor yang salahINVALID_NUMBER ORA-1722 Melakukan operasi numerik pada tipe non-numerikLOGIN_DENIED ORA-1017 Username/password salahNO_DATA_FOUND ORA-1403 Tidak terdapat data pada queryNOT_LOGGED_ON ORA-1012 Melakukan operasi database ketika tidak

terhubung (connect)PROGRAM_ERROR ORA-6501 Kesalahan internalROWTYPE_MISMATCH ORA-6504 Host variabel dan cursor mempunyai tipe yang

tidak samaSTORAGE_ERROR ORA-6500 Kesalahan internalTYMEOUT_ON_RESOURCE ORA-0051 Terjadi timeoutTOO_MANY_ROWS ORA-1422 Statemen SELECT INTO yang mengembalikan lebih

dari satu barisTRANSACTION_BACKED_OUT ORA-006 Rollback transaksi untuk didealokasikanVALUE_ERROR ORA-6502 Konversi atau truncation salahZERO_DIVIDE ORA-1476 Pembagian dengan nol

Page 187: Perancangan Basis Data 3

187

User-defined Exception

Untuk membuat sebuah eksepsi, diperlukan : Variabel bertipe EXCEPTION Dihubungkan dengan tipe PRAGMA

EXCEPTION_INIT Kode error harus negatif (-) Bentuk Umum :DECLARE

nama_eksepsi EXCEPTION;PRAGMA EXCEPTION_INIT (nama_eksepsi, kode_error);

Page 188: Perancangan Basis Data 3

188

Contoh tanpa eksepsiSET SERVEROUTPUT ONDECLARE

X ROWID;BEGIN

SELECT ROWID INTO X FROM ALL_VIEWS;END;/

Hasil yang tampil dilayar :ORA-01445: Cannot select ROWID from view

of more than one table

Page 189: Perancangan Basis Data 3

189

Contoh dengan eksepsiSET SERVEROUTPUT ONDECLARE

eksepsiku EXCEPTION;PRAGMA EXCEPTION_INIT(eksepsiku, -10445);X ROWID;

BEGINSELECT ROWID INTO X FROM ALL_VIEWS;

EXCEPTIONWHEN eksepsiku THENDBMS_OUTPUT.PUT_LINE(‘KESALAHAN : Tidak dapat ‘ ||‘menampilkan ROWID dari beberapa tabel atau view’);

END;/

Page 190: Perancangan Basis Data 3

190

PendahuluanPercabangan dalam PL/SQL Oracle : Struktur satu kondisi Struktur dua kondisi Struktur tiga atau lebih kondisi

Page 191: Perancangan Basis Data 3

191

Struktur satu kondisi Jika kondisi tidak terpenuhi atau bernilai FALSE, badan percabangan tidak akan pernah dimasuki

Bentuk umum :IF kondisi THENstatemen_1;...

END IF;

Page 192: Perancangan Basis Data 3

192

Contoh Struktur satu kondisiSET SERVEROUTPUT ONDECLARE

BIL INTEGER := 80;BEGIN

IF MOD(BIL, 2) = 0 THENDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ ADALAH BILANGAN GENAP’);END IF;

END;/

Page 193: Perancangan Basis Data 3

193

Struktur dua kondisi Bentuk umum :

IF kondisi THENstatemen_1;...

ELSEstatemen_2;...

END IF;

Page 194: Perancangan Basis Data 3

194

Contoh stuktur dua kondisiSET SERVEROUTPUT ONDECLARE

BIL INTEGER := 3;BEGIN

IF MOD(BIL, 2) = 0 THENDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ ADALAH BILANGAN GENAP’);ELSEDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ ADALAH BILANGAN GANJIL’);END IF;

END;/

Page 195: Perancangan Basis Data 3

195

Contoh Penggunaan if-then Contoh Penggunaan if-then StatementStatement

set serveroutput ondeclare bil integer := 55;begin if mod(bil, 2) = 0 then dbms_output.put_line(to_char(bil) || ' Adalah Bilangan Genap'); else dbms_output.put_line(to_char(bil) || ' Adalah Bilangan Ganjil'); end if;end;

Page 196: Perancangan Basis Data 3

196

set serveroutput ondeclare nilai integer := 75; Huruf varchar2(45); predikat varchar2(45); begin if nilai >=80 then huruf:='A'; predikat:='Excellent'; elsif nilai >=65 then huruf:='B'; predikat:='Good';

elsif nilai >=55 then huruf:='C'; predikat:='Foor'; elsif nilai >=35 then huruf:='D'; predikat:='With Honor'; elsif nilai >=1 then huruf:='E'; predikat:='Bad'; end if; dbms_output.put_line(‘Nilai : ’,to_char(nilai) || ‘ Huruf : ’ || huruf || ‘Keterangan : ’ || predikat);end;

Contoh Penggunaan if-then-elsif Contoh Penggunaan if-then-elsif StatementStatement

Page 197: Perancangan Basis Data 3

197

Struktur tiga kondisi atau lebih Bentuk umum :

IF kondisi_1 THENstatemen_1;...

ELSIF kondisi_2 THENstatemen_2;...

ELSEstatemen_3;...

END IF;

Page 198: Perancangan Basis Data 3

198

Contoh struktur tiga kondisi atau lebihSET SERVEROUTPUT ONDECLARE

BIL INTEGER;BEGIN

BIL := -25;IF BIL > 0 THENDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ adalah bilangan positif’);ELSIF BIL = 0 THENDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ adalah bilangan negatif’);END IF;

END;/

Page 199: Perancangan Basis Data 3

199

PENDAHULUAN Tiga macam struktur pengulangan : Struktur simple LOOP Struktur WHILE-LOOP Struktur FOR-LOOP

Page 200: Perancangan Basis Data 3

200

Struktur simple loop Bentuk umum :

LOOPstatemen_1;...EXIT WHEN kondisi;

END LOOP;

Page 201: Perancangan Basis Data 3

201

Contoh struktur simple loopSET SERVEROUTPUT ONDECLARE

J INTEGERBEGIN

J := 0;LOOPJ := J + 1;DBMS_OUTPUT.PUT_LINE(‘Saya belajar PL/SQL’);EXIT WHEN J = 10;END LOOP;

END;/

Page 202: Perancangan Basis Data 3

202

Struktur WHILE-LOOP Bentuk umum :

WHILE kondisi LOOPstatemen_1;...

END LOOP;

Page 203: Perancangan Basis Data 3

203

Contoh struktur WHILE-LOOPSET SERVEROUTPUT ONDECLARE

J INTEGERBEGIN

J := 1;WHILE (J <= 10) LOOPDBMS_OUTPUT.PUT_LINE(‘Saya belajar PL/SQL’);J := J + 1;END LOOP;

END;/

Page 204: Perancangan Basis Data 3

204

Struktur FOR-LOOP Bentuk umum :

FOR variabel IN batas_minimal .. batas_maksimal LOOP

statemen_1;...

END LOOP;

Page 205: Perancangan Basis Data 3

205

Contoh Stuktur FOR-LOOPSET SERVEROUTPUT ONDECLARE

I INTEGER;BEGIN

FOR I IN 1..10 LOOPDBMS_OUTPUT.PUT_LINE( TO_CHAR(I));END LOOP;

END;/

Page 206: Perancangan Basis Data 3

206

Contoh Stuktur FOR-LOOP (2)SET SERVEROUTPUT ONDECLARE

I INTEGER;BEGIN

FOR I IN REVERSE 1..10 LOOPDBMS_OUTPUT.PUT_LINE( TO_CHAR(I));END LOOP;

END;/

Page 207: Perancangan Basis Data 3

207

set serveroutput ondeclare j integer;begin j := 0; loop j := J + 1; dbms_output.put_line(to_char(j) || ' Loop'); exit when j = 10; end loop;end;

Penggunaan Loop-when StatementPenggunaan Loop-when Statement

Page 208: Perancangan Basis Data 3

208

Penggunaan while-Loop StatementPenggunaan while-Loop Statement

set serveroutput ondeclare j integer;begin j := 0; while (j<=10) loop j := J + 1; dbms_output.put_line(to_char(j) || ' Loop'); end loop;end;

Page 209: Perancangan Basis Data 3

209

Penggunaan for-loop StatementPenggunaan for-loop Statement

set serveroutput ondeclare j integer;begin for j in 1..10 loop dbms_output.put_line(to_char(j) || ' Loop'); end loop;end;

Page 210: Perancangan Basis Data 3

210

Pendahuluan Definisi

Tipe data bentukan yang dapat menyimpan sekumpulan nilai dari tipe data yang sama dan dikemas dalam bentuk larik.

Nilai dari elemen-elemen array dapat diacu atau diakses melalui indeksnya, perlu diperhatikan bahwa indeks array harus dari tipe data yang mempunyai keterurutan, seperti halnya tipe integer.

Page 211: Perancangan Basis Data 3

211

Membuat Tipe Array Bentuk Umum :

TYPE nama_tipe ISTABLE OF tipe_dataINDEX BY BINARY_INTEGER;

Contoh :

DECLARETYPE array_ku IS

TABLE OF CHAR(5)INDEX BY BINARY_INTEGER;

X array_ku;

Page 212: Perancangan Basis Data 3

212

Mengisikan Nilai pada Elemen Array Contoh 1 :

BEGINX(1) := ‘A’;X(2) := ‘B’;

END;

Contoh 2 :

BEGINX(1) := 10;X(2) := 20;

END;

Page 213: Perancangan Basis Data 3

213

Contoh 1SET SERVEROUTPUT ONDECLARE

TYPE LARIK ISTABLE OF NUMBERINDEX BY BINARY_INTEGER;

A LARIK;I INTEGER;

BEGINFOR I IN 1..5 LOOP

A(I) := I * 10;END LOOP;FOR I IN 1..5 LOOP

DBMS_OUTPUT.PUT_LINE(‘Nilai elemen larik ke-’ || TO_CHAR(I) || ‘ = ‘ || TO_CHAR(A(I)));END LOOP;

END;/

Page 214: Perancangan Basis Data 3

214

Contoh 2SET SERVEROUTPUT ONDECLARE

TYPE SISWA ISTABLE OF VARCHAR2(25)INDEX BY BINARY_INTEGER;

NAMA SISWA;I INTEGER;

BEGINNAMA(1) := ‘Arista Destriana’;NAMA(2) := ‘Yandri Gunawan’;NAMA(3) := ‘Herry Wahyudinata’;NAMA(4) := ‘Budi Raharjo’;NAMA(5) := ‘Noni Sutrisna’;FOR I IN 1..5 LOOPDBMS_OUTPUT.PUT_LINE(‘Nama siswa ke-’ || TO_CHAR(I) || ‘ : ‘ || NAMA(I));END LOOP;

END;/

Page 215: Perancangan Basis Data 3

215

Pendahuluan Adalah sebuah blok PL/SQL yang dapat berdiri sendiri serta dikompilasi untuk selanjutnya masuk ke dalam skema database.

Nama procedure yang dibuat kemudian menjadi objek dengan tipe procedure. Procedure akan dieksekusi pada saat pemanggilan setelah sebelumnya dibuat terlebih dahulu

Page 216: Perancangan Basis Data 3

216

Membuat Procedure Bentuk umum : CREATE OR REPLACE PROCEDURE

nama_procedure(parameter_1 tipe_data, … ) ASvariabel_1 tipe_data;…BEGINstatemen_1;…END;

Page 217: Perancangan Basis Data 3

217

Membuat Procedure (2) CREATE digunakan untuk membuat

procedure baru REPLACE digunakan untuk mengganti isi

procedure yang telah dibuat sebelumnya Parameter dan variable/konstanta

bersifat opsional Bentuk umum perintah untuk

mengeksekusi sebuah procedure :EXECUTE nm_procedure(paremeter_1,…);

Page 218: Perancangan Basis Data 3

218

Contoh Procedure Tanpa Parameter

SET SERVEROUTPUT ONCREATE OR REPLACE PROCEDURE hitung_luas_segitiga AS

alas NUMBER(5);tinggi NUMBER(5);luas NUMBER(10);

BEGINalas := 3;tinggi := 6;luas := (alas * tinggi) / 2;DBMS_OUTPUT.PUT_LINE(‘LUAS = ‘ || luas);

END;/…………………………………EXECUTE hitung_luas_segitiga;

Page 219: Perancangan Basis Data 3

219

Contoh Procedure dengan Parameter

Dengan Parameter Masukan

CREATE OR REPLACE PROCEDURE tambah_dua ( a IN INTEGER) AShasil INTEGER(5);

BEGINhasil := a + 2;DBMS_OUTPUT.PUT_LINE (‘Hasil akhir = ‘ || hasil);

END;/………………………………EXECUTE tambah_dua(4);

Page 220: Perancangan Basis Data 3

220

Contoh Procedure dengan Parameter (2) Dengan Parameter Keluaran

CREATE OR REPLACE PROCEDURE tambah_10 ( bil IN INTEGER, X OUT INTEGER) AS

BEGINX := bil + 10;

END;/

Page 221: Perancangan Basis Data 3

221

Contoh Procedure dengan Parameter (2)

Dengan Parameter Keluaran

SET SERVEROUTPUT ONDECLARE

hasil INTEGER;BEGIN

tambah_10(5, hasil);DBMS_OUTPUT.PUT_LINE(‘Hasilnya = ‘ || TO_CHAR(hasil));

END;/

Page 222: Perancangan Basis Data 3

222

Contoh Procedure dengan Parameter (3)

Dengan Parameter Masukan/Keluaran

CREATE OR REPLACE PROCEDURE tambah_10 ( X IN OUT INTEGER) AS

BEGINX := X + 10;

END;/

Page 223: Perancangan Basis Data 3

223

Contoh Procedure dengan Parameter (3)

Dengan Parameter Masukan/Keluaran

SET SERVEROUTPUT ONDECLARE

Y INTEGER;BEGIN

Y := 15;tambah_10(Y);DBMS_OUTPUT.PUT_LINE(‘Hasilnya = ‘ || TO_CHAR(Y));

END;/

Page 224: Perancangan Basis Data 3

224

Contoh Procedure Di Dalam Procedure

CREATE OR REPLACE PROCEDURE cetak_angka(X IN INTEGER) ASJ INTEGER;

BEGINFOR J IN 1..X LOOPDBMS_OUTPUT.PUT_LINE( TO_CHAR(J));END LOOP;

END;/

Page 225: Perancangan Basis Data 3

225

Contoh Procedure Di Dalam Procedure (2)

CREATE OR REPLACE PROCEDURE panggil_proc AS

BEGINcetak_angka(10);

END;/----------------------------SET SERVEROUTPUT ONEXECUTE panggil_proc

Page 226: Perancangan Basis Data 3

226

Pendahuluan Function adalah suatu blok PL/SQL yang memiliki konsep sama dengan procedure, hanya saja pada function terdapat pengembalian nilai (return value)

Karena function dapat mengembalikan sebuah nilai, function dapat diakses seperti layaknya sebuah variabel biasa

Page 227: Perancangan Basis Data 3

227

Membuat Function Bentuk Umum :

CREATE OR REPLACE FUNCTION nama_function (parameter_1, …)

RETURN tipe_data ASvariabel_1 tipe_data;…

BEGINstatemen_1;…RETURN nilai_yang_dikembalikan;

END;

Page 228: Perancangan Basis Data 3

228

Membuat Function (2)

Statemen RETURN tipe_data diatas menunjukkan bahwa function akan mengembalikan nilai dengan tipe data tertentu

Statemen RETURN nilai_yang_dikembalikan berfungsi untuk mengembalikan nilai yang telah diproses dalam function

Page 229: Perancangan Basis Data 3

229

Contoh Function Tanpa Parameter

CREATE OR REPLACE FUNCTION tulis_teks RETURN VARCHAR2 ASS VARCHAR2(20)

BEGINS := ‘HALLO SEMUA’;RETURN S;

END;/

Page 230: Perancangan Basis Data 3

230

Contoh Function Tanpa Parameter (2)

SET SERVEROUTPUT ONDECLAREX VARCHAR2(20);

BEGINX := tulis_teks;DBMS_OUTPUT.PUT_LINE(X);

END;/

Page 231: Perancangan Basis Data 3

231

Contoh Function Dengan Parameter

CREATE OR REPLACE FUNCTION pangkat (bil INTEGER, n INTEGER)

RETURN INTEGER ASHASIL INTEGER(10);I INTEGER;

BEGINHASIL := 1;FOR I IN 1..n LOOPHASIL := HASIL * bil;END LOOP;RETURN HASIL;

END;/

Page 232: Perancangan Basis Data 3

232

Contoh Function Dengan Parameter (2)SET SERVEROUTPUT ONDECLARE

H INTEGER;BEGIN

H := pangkat(2, 3);DBMS_OUTPUT.PUT_LINE(‘Hasil = ‘ || TO_CHAR(H));

END;/

Page 233: Perancangan Basis Data 3

233

Contoh Function Dalam Function

CREATE OR REPLACE FUNCTION kuadrat (X NUMBER)

RETURN NUMBER ASHASIL NUMBER(10);

BEGINHASIL := X * X;RETURN HASIL;

END;/

Page 234: Perancangan Basis Data 3

234

Contoh Function Dalam Function (2)

CREATE OR REPLACE FUNCTION determinan(a NUMBER, b NUMBER, c NUMBER)RETURN NUMBER AS

D NUMBER(10);BEGIN

D := kuadrat(b) – (4 * a * c);RETURN D;

END;/

Page 235: Perancangan Basis Data 3

235

Contoh Function Dalam Function (3)

SET SERVEROUTPUT ONDECLARE

D NUMBER(10);BEGIN

D := determinan(1, 1, -6);DBMS_OUTPUT.PUT_LINE(‘Nilai determinan = ‘ || TO_CHAR(D));

END;/

Page 236: Perancangan Basis Data 3

236

create or replace trigger TR_Nilai_mhs before insert on tnilaifor each rowbegin dbms_output.put_line('Trigger Before Insert Dilaksanakan');end;==================================================================create or replace trigger TR_Nilai_mhs after update on tnilaifor each rowbegin dbms_output.put_line('Trigger After Update Dilaksanakan');end;==================================================================create or replace trigger TR_Nilai_mhs after Delete on tnilaifor each rowbegin dbms_output.put_line('Trigger After Delete Dilaksanakan');end;

Penggunaan Create or Replace Penggunaan Create or Replace TRIGGER Statement TRIGGER Statement

Page 237: Perancangan Basis Data 3

237

Penggunaan Create or Replace Penggunaan Create or Replace Procedure Statement Procedure Statement

create or replace procedure Pangkat (bil in integer, pemangkat in integer,hasil out integer) as j integer;begin hasil := 1; for j in 1..pemangkat loop hasil := hasil * bil; end loop;end;

Page 238: Perancangan Basis Data 3

238

set serveroutput ondeclare h integer;begin pangkat(2,5,h); dbms_output.put_line(to_char(h) || ' Hasil Pemangkatan');end;

Penggunaan Create or Replace Penggunaan Create or Replace Procedure Statement Procedure Statement

Page 239: Perancangan Basis Data 3

239

Penggunaan Create or Replace Penggunaan Create or Replace function Statement function Statement

create or replace function cek_prima1 ( bil in integer) return boolean as prima boolean := true; j integer;begin if bil <= 1 then prima := false; end if; for j in 2..(bil / 2) loop if mod(bil,j) = 0 then prima := false; exit; end if; end loop; return prima;end;

Page 240: Perancangan Basis Data 3

240

set serveroutput ondeclare x integer;begin for x in 0..40 loop if cek_prima1(x) then dbms_output.put_line('Prima ' || to_char(x)); end if; end loop; end;

Penggunaan Create or Replace Penggunaan Create or Replace function Statement function Statement

Page 241: Perancangan Basis Data 3

241

set serveroutput ondeclarecursor c_IPK is select * from tmhs; vrec c_IPK%ROWTYPE;begin open c_IPK; loop fetch c_IPK into vrec; exit when c_IPK%NOTFOUND; dbms_Output.put_line(vrec.Nobp || vrec.Nama); end loop; close c_IPK;end;

Page 242: Perancangan Basis Data 3

242

set serveroutput ondeclarecursor c_IPK is select m.Nobp, m.Nama, k.Nama_MK, k.Kode_MK, k.sks, N.Nilai_PR, N.Nilai_KUIS, N.Nilai_UTS, N.Nilai_UAS from tmtk k, tnilai N, tmhs m where k.Kode_MK=N.Kode_MK and m.nobp=n.nobp and (m.nobp='07101152610260' or m.nobp='07101152610254'); vrec c_IPK%ROWTYPE;begin open c_IPK; loop fetch c_IPK into vrec; exit when c_IPK%NOTFOUND; dbms_Output.put_line(vrec.nobp ||' ' || vrec.Nama || ' ' || vrec.Kode_MK || ' ' || vrec.Nama_MK ); end loop; close c_IPK;end;

Page 243: Perancangan Basis Data 3

243

FAKULTASKode_FNm_Fakultas

MATAKULIAHKode_mtkNama_MtkSks Kode_f

MAHASISWANobpNamaKode_fPin

NILAINPMKode_MtkNILAi_KuisNilai_PrNilai_UTSNilai_UAS

Page 244: Perancangan Basis Data 3

244

Pembuatan Function Nilai Pembuatan Function Nilai AkhirAkhir

create or replace function Nilai_Akhir (PR number, KUIS number, UTS number,UAS number) return number as hasil number;begin hasil := (0.10 * PR) + (0.10 * KUIS) + (0.30 * UTS) + (0.50 * UAS); return hasil;end;

Page 245: Perancangan Basis Data 3

245

Pembuatan Function Konversi Nilai Pembuatan Function Konversi Nilai Angka ke Huruf Angka ke Huruf

create or replace function Cari_Index ( nilai in integer) return varchar2 as Indeks varchar2(2);begin if nilai >=80 then Indeks:='A'; elsif nilai >=65 then Indeks:='B'; elsif nilai >=55 then Indeks:='C'; elsif nilai >=35 then Indeks:='D'; elsif nilai >=1 then Indeks:='E'; end if; return Indeks;end;

Page 246: Perancangan Basis Data 3

246

Pembuatan Function Konversi Nilai Pembuatan Function Konversi Nilai Angka ke Huruf Angka ke Huruf

create or replace function Cari_huruf ( nilai in integer) return varchar2 as Indeks varchar2(2);begin if nilai >=80 then Indeks:='A'; elsif nilai >=65 then Indeks:='B'; elsif nilai >=55 then Indeks:='C'; elsif nilai >=35 then Indeks:='D'; elsif nilai >=1 then Indeks:='E'; end if; return Indeks;end;

Page 247: Perancangan Basis Data 3

247

create or replace function Kali ( x number, IDX char) return number is nilai number; hasil number;begin if (IDX ='A') then Nilai:=4; elsif (IDX='B') then Nilai:=3; elsif (IDX='C') then Nilai:=2; elsif (IDX='D') then Nilai:=1; elsif (IDX='E') then Nilai:=0; end if; hasil := x * nilai; return hasil;end;

Pembuatan Function Cari Bobot dan Pembuatan Function Cari Bobot dan Bobot x SksBobot x Sks

Page 248: Perancangan Basis Data 3

248

create or replace function Bobot (IDX char) return integer is nilai integer;begin if (IDX ='A') then Nilai:=4; elsif (IDX='B') then Nilai:=3; elsif (IDX='C') then Nilai:=2; elsif (IDX='D') then Nilai:=1; elsif (IDX='E') then Nilai:=0; end if; return nilai;end;

Pembuatan Function Cari Pembuatan Function Cari BobotBobot

Page 249: Perancangan Basis Data 3

249

select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas) as Ratarata, Cari_huruf(Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas)) as Indek from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp between 07101152610254 and 07101152610255

Memanggil Fungsi Nilai Memanggil Fungsi Nilai Akhir dan IndexAkhir dan Index

Page 250: Perancangan Basis Data 3

250

select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas) as Ratarata, Cari_huruf(Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas)) as Indek,bobot(Cari_huruf(Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas))) as BB from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp between 07101152610254 and 07101152610255

Memanggil Fungsi Nilai Memanggil Fungsi Nilai Akhir, Index, dan BobotAkhir, Index, dan Bobot

Page 251: Perancangan Basis Data 3

251

select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, Nilai_Akhir (nilai_kuis, nilai_pr, nilai_uts, nilai_uas) as Ratarata, Cari_huruf (Nilai_Akhir(nilai_kuis,nilai_pr, nilai_uts,nilai_uas)) as Indek, bobot (Cari_huruf(Nilai_Akhir (nilai_kuis, nilai_pr,nilai_uts, nilai_uas))) as BB,Kali (t2.sks, Cari_huruf(Nilai_Akhir( nilai_kuis,nilai_pr, nilai_uts,nilai_uas))) as Tbb from tmhs t1, tmtk t2, tnilai t3 where t1.nobp = t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp between 07101152610254 and 07101152610255

Memanggil Fungsi Nilai Memanggil Fungsi Nilai Akhir, Index, Bobot, Akhir, Index, Bobot,

Total BobotTotal Bobot

Page 252: Perancangan Basis Data 3

252

select t1.nobp, nama, sum(t2.sks) as TotSks, sum(Kali (t2.sks, Cari_huruf(Nilai_Akhir( nilai_kuis,nilai_pr, nilai_uts,nilai_uas)))) as Totalbb, round((sum(Kali (t2.sks, Cari_huruf(Nilai_Akhir( nilai_kuis,nilai_pr, nilai_uts,nilai_uas)))) / sum(t2.sks)),2) as IPK from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk group by t1.nobp, nama

Mencari TotalSks, Mencari TotalSks, TotalBobot dan Index TotalBobot dan Index Prestasi KumulatifPrestasi Kumulatif