• Tidak ada hasil yang ditemukan

Basis Data. Pengenalan Basis Data MODUL PERKULIAHAN. Modul ini berisi materi tentang pengenalan terhadap basis data, dan DBMS

N/A
N/A
Protected

Academic year: 2021

Membagikan "Basis Data. Pengenalan Basis Data MODUL PERKULIAHAN. Modul ini berisi materi tentang pengenalan terhadap basis data, dan DBMS"

Copied!
180
0
0

Teks penuh

(1)

MODUL PERKULIAHAN

Basis Data

Pengenalan Basis Data

       

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh    Ilmu Komputer  Teknik Informatika 

01

87033  Tim Dosen   

Abstract

Kompetensi

Modul ini berisi materi tentang pengenalan terhadap basis data, dan DBMS

Mahasiswa mampu menjelaskan konsep basis data, mampu

menjelaskan komponen dalam basis data, mampu menyebutkan dan menjelaskan keuntungan dan kelebihan penggunaan basis data

(2)

Pendahuluan

Basis data merupakan kumpulan data, yang mendeskripsikan aktivitas suatu organisasi yang saling berhubungan atau lebih. Misalkan sebuah rumah sakit yang mungkin berisi informasi sebagai berikut:

Entitas seperti dokter, suster, pegawai RS, pasien, obat dan informasi lainnya.

Hubungan antara entitas, contohnya adalah relasi periksa antara dokter dengan pasien, relasi pengobatan antara pasien dengan obat dan relasi lainnya yang mungkin terjadi dari hubungan antara 2 relasi atau lebih.

Jauh sebelum ditemukan dan diaplikasikan basis data dalam pengembangan system dan aplikasi, industry teknologi informasi menggunakan pendekatan aplikasi berbasis file atau file-base approach. Berikut adalah penjelasan mengenai file-based system.

File-Based Systems

 Kumpulan dari program-program aplikasi yang menyediakan layanan untuk end users

sebagai contohnya adalah laporan.

 Setiap program mendefinisikan dan mengatur datanya masing-masing, artinya bersifat dependent terhadap program yang spesifik.

(3)

Keterbatasandaripendekatanberbasisfile(File‐Based)

Data terpisah-pisah dan terisolasi (Separation and isolation of data)

o Setiap program mengatur datanya masing-masing.

o User dari program yang satu tidak dapat menggunakan data yang diperlukan yang

berada pada program yang lain.

Duplikasi Data (Duplication of data)

o Data yang sama terdapat pada program yang berbeda.

o Pemborosan ruang penyimpanan dan sangat potensial untuk terjadinya perbedaan

format dan/atau nilai untuk data yang sama.

Ketergantungan Data (Data dependence)

o Stuktur file didefinisikan dalam kode program.

Ketidaksesuaian Format File (Incompatible file formats)

o Program dituliskan dalam bahasa pemrograman yang berbeda, sehingga tidak

mudah untuk mengakses data/file yang satu dengan yang lainnya.

Program Aplikasi dengan Queri/pengembangan yang terbatas (Fixed

Queries/Proliferation of application programs)

o Program dibuat untuk memenuhi fungsi-fungsi khusus

o Setiap terdapat kebutuhan baru yang timbul/diperlukan, akan memerlukan program

yang baru pula.

Pendekatan Database

Timbulkarena:

- Pendefinisian data disimpan/dilekatkan dalam program aplikasi bukan disimpan pada tempat yang terpisah dan independen.

- Tidak ada pengaturan/control pada pengaksesan dan manipulasi data yang dilakukan oleh program aplikasi

Hasil:

(4)

Definisi:

 Kumpulan relasi-relasi logikal dari data (dan deskripsi data) yang dapat digunakan bersama dan dibuat untuk memperoleh informasi yang dibutuhkan oleh perusahaan.

 Katalog sistem (metadata) menyediakan deskripsi data untuk memungkinkan kemandirian data-program (program–data independence).

 Merupakan relasi data logikal yang terdiri dari entity-entity, atribut-atribut, dan relationship dari informasi organisasi/perusahaan.

Database Management System (DBMS)

Sistem software yang memungkinkan user untuk mendefinisikan, membuat, dan memelihara

database dan menyediakan akses terkontrol untuk database yang bersangkutan.

Data definition language (DDL).

o Memungkinkan spesifikasi tipe data, struktur dan batasan-batasan data o Semua spesifikasi disimpan dalam database

Data manipulation language (DML).

(5)

Pengontrolan akses terhadap database meliputi : o Sistem keamanan.

o Sistem integritas.

o Sistem kontrol konkurensi. o Sistem kontrol recovery.

o Katalog yang dapat diakses oleh user. Mekanisme view .

o Hanya menyediakan data-data yang dibutuhkan atau digunakan oleh user.

DataBase Management System (DBMS)

Definisi Data (DDL)

o Untuk spesifikasi tipe data, struktur dan batasan-batasan lainnya (Skema eksternal,

konseptual dan internal, juga mapping-mapping yang ada).

o Seluruh spesifikasi disimpan dalam database.

o DBMS harus menyertakan komponen DDL processor atau DDL Compiler.

Manipulasi Data (DML)

o DBMS harus mampu menangani permintaan pemanggilan data, update atau

penghapusan data, juga penambahan data baru kedalam database.

o DBMS harus menyertakan komponen DML processor atau DML compiler.

Optimasi dan Eksekusi

o DML Request akan diproses oleh komponen Optimizer yang berfungsi untuk

menentukan cara yang paling efisien dalam implementasi request.

o Requaest yang telah dioptimalkan kemudian dieksekusi dibawah kontrol Run-Time

Manager.

Keamanan dan Integritas Data

o DBMS harus mampu memonitor permintaan user, dan menolak segala usaha yang

(6)

Recovery dan Concurrency Data

o DBMS atau komponen software lain (Transaction Manager) harus menyediakan kontrol

system recovery dan concurrency.

Data Dictionary

o Berisikan “data about the data “, yaitu seluruh objek yang terkait dalam system

didefinisikan dan disimpan dalam data dictionary.

Performance

o DBMS harus menampilkan semua fungsi yang telah didefinisikan sebelumnya se-efisien

mungkin.

Mekanisme View.

o Menyediakan/menampilkan kepada pengguna data-data yang diperlukan dan

digunakan saja.

Views

o Memungkinkan setiap pengguna memiliki tampilan database tersendiri. o Suatu view pada dasarnya merupakan bagian/subset dari database. o Manfaat view meliputi:

 Mengurangi kerumitan (Reduce complexity)

 Menyediakan tingkatan keamanan (Provide a level of security)  Menyediakan mekanisme untuk mengubah tampilan database

 Menampilkan struktur database yang konsisten dan tidak berubah walaupun database asal diubah

(7)

Komponen DBMS

Komponen DBMS

Hardware

- Meliputi PC sampai dengan jaringan komputer.

- Tempat penyimpanan secondary (manegtic disk), I/O device ex : disk drives),

device Controller, I/O Channels, dan lainnya.

- Hardware processor dan main memory, digunakan untuk mendukung saat

eksekusi system software database.

Software

- DBMS, operating system, network software (jika diperlukan) dan program

aplikasi pendukung lainnya.

Data

- Data pada sebuah system database baik itu single-user system maupun

multi-user system harus terintegrasi dan dapat ddigunakan bersama

(Integrated and Shared).

- Digunakan oleh organisasi dan deskripsi dari data disebut schema.

Procedures

- Instrukti dan aturan yang harus disertakan dalam mendesain dan

menggunakan database dan DBMS.

People

- DA (Data Administrator), seseorang yang berwenang untuk membuat

(8)

- DBA (DataBase Administrator), menyediakan dukungan teknis untuk

implementasi keputusan tersebut, dan bertanggungjawab atas keseluruhan kontrol system pada level teknis

- Database Designer (Logical and Physical)

- Application Programmers, bertanggungjawab untuk membuat aplikasi

database dengan menggunakan bahasa pemrograman yang ada, seperti : C++, Java, dan lainnya.

- End Users, Siapapun yang berinteraksi dengan system secara online melalui

workstation/terminal.

History of Database Systems

First generation

- Hierarchical and Network

Second generation

- Relational

Third generation

- Object Relational - Object-Oriented

Keuntungan dan kerugian DBMS

Keuntungan DBMS

 Penggunaan Data Bersama (The Data Can Be Shared)

 Mengurangi Kerangkapan Data (Redudancy Can Be Reduced)

 Menghindari Ketidakkonsistenan Data (Inconsistency Can Be Avoided)

 Integritas Data Terpelihara (Integrity Can Be Maintained )

 Keamanan Terjamin (Security Can Be Enforced )

(9)

 Pelaksanaan Standarisasi (Standards Can Be Enforced)

 Meningkatkan Produktivitas (Increased productivity)

 Layanan Back up dan Recovery Semakin Baik (Improved backup and recovery services)

Kerugian DBMS

 Rumit (Complexity)

Karena penetapan fungsi dari DBMS yang baik, menyebabkan DBMS menjadi software yang cukup rumit. Seluruh user harus mengetahui fungsi-fungsi yang ada dengan baik,

sehingga dapat memperoleh manfaatnya.

 Ukuran (Size)

Kerumitan dan banyaknya fungsi yang ada menyebabkan DBMS memerlukan banyak software pendukung yang mengakibatkan penambahan tempat penyimpanan dan memory.

 Biaya DBMS (Cost of DBMS)

 Biaya Tambahan Hardware (Additional hardware costs)

 Biaya Konversi (Cost of conversion)

 Performance

Pada dasarnya DBMS dibuat untuk menyediakan banyak aplikasi, akibatnya mungkin beberapa aplikasi akan berjalan tidak seperti biasanya.

 Higher impact of a failure

Karena system yang terpusat, jika seluruh user dan aplikasi terakses dari DBMS maka

kerusakan pada bagian manapun dari system, akan menyebabkan operasi terhenti.

   

(10)

Latihan

1. Jelaskan dengan singkat menggunakan kalimat anda sendiri tentang bagaimana basis data diperlukan dalam sebuah pegembangan aplikasi.

2. Apakah perbedaan antara seorang Database Administrator dengan Data Administrator?

Daftar Pustaka

1. Database system: A Practical approach to design, implementation and management  

(11)

MODUL PERKULIAHAN

Basis Data

Lingkungan Basis Data

Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh 

Ilmu Komputer  Teknik Informatika 

02

87033  Tim Dosen 

 

Abstract

Kompetensi

Modul ini berisi materi tentang lingkungan basis data tentang arsitektur ANSI-SPARC serta komponen dalam perangkat lunak dari DBMS berserta fungsinya

Mahasiswa mampu menjelaskan perbedaan konsep asitektur 3 level basis data dan mampu mengidentifikasi komponen perangkat lunak dalam DBMS

(12)

 Seluruh pengguna harus dapat mengakses data yang sama.

 Tampilan pengguna (user’s view) tidak dapat diubah.

 Pengguna tidak perlu mengetahui detail penyimpanan fisik database.

 DBA harus dapat mengubah struktur penyimpanan database tanpa mempengaruhi tampilan/view pengguna.

 Struktur internal database harus tidak terpengaruh oleh perubahan aspek fisik pada penyimpanan.

 DBA harus dapat merubah struktur konseptual database tanpa mempengaruhi seluruh pengguna.

Database System Architecture

ANSI-SPARC Three-Level Architecture

(13)

 Cara pandang User terhadap Database.

 Menerangkan bagaimana data yang ada direpresentasikan untuk user yang berbeda.

Ekternal level merupakan level individual user, dimana masing-masing user hanya akan berkepentingan dengan satu bagian saja. Cara pandang dari masing-masing user bersifat abstrak bila dibandingkan dengan bagaimana sebenarnya data tersebut disimpan. Masing-masing pandangan user tersebut disebut external view, yang berisi berbagai tipe eksternal record. Jadi level ini berkaitan erat dengan pemakai, dimana dari tiap pemakai hanya memerlukan sebagian dari data yang ada dalam database. Cara pandang secara eksternal hanya terbatas pada entitas, atribut, dan hubungan antar entitas yang diperlukan saja.

Conceptual Level

 Cara pandang keseluruhan database (Community view of the database).

 Menerangkan data apa saja yang tersimpan dan relasi antar data.

Conceptual view merupakan representasi informasi keseluruhan dari isi database, dimana semua pandangan masing-masing user digabungkan. Perwujudannya abstrak, bila dibandingkan dengan bagaimana data sesunggguhnya tersimpan secara fisik. Konseptual view berisi berbagai tipe dari konseptual record yang didefinisikan oleh konseptual skema, ditulis dalam data definition language (DDL). Pendefinisian skema konseptual dimaksudkan untuk menyertakan feature-feature tambahan, seperti security and integrity. Beberapa tujuan utama dari skema konseptual diantaranya ; menggambarkan enterprise secara lengkap, bagaimana data tersebut digunakan, bagaimana aliran data didalam enterprise, kegunaan data untuk setiap proses, proses kontrol atau audit yang diberikan pada setiap proses.

Internal Level

 Representasi secara fisik (Physical representation) dari database pada komputer.

 Menerangkan bagaimana data yang ada disimpan dalam database.

Internal view merupakan level terendah dalam representasi dari keseluruhan database. Internal view berisikan berbagai tipe internal record yang didefinisikan oleh skema internal.

(14)

(dengan ukuran penyimpanan untuk data elemen), pemampatan data, dan teknik encription (pengamanan data). Dengan kata lain level ini berkaitan dengan storage structure/stored database yang menerangkan tempat penyimpanan data pada internal view, dan storage structure definition pada skema internal yang menerangkan hubungannya dengan cara pengaksesan data yang disimpan.

(15)

*User Interface

Detail arsitektur sistem basis data

Data Independence

Logical Data Independence

 Menunjukkan kekebalan skema eksternal terhadap perubahan skema konseptual.

 Perubahan skema konseptual (contoh : penambahan/penghapusan entity).

External View A  External View B  *External  Schema A *External  Schema B   Host    Host  L   Host    Host    Host  Conceptual View  External/Conceptual

mapping A External/Conceptualmapping B

Conceptual/Internal mapping A   DBMS  Conceptual  Schema Stored Database (Internal View)  Storage  Structure  Definition  (Internal  Schema)  Schemas and  mapping built  and  maintained by  the Database  Administrator  (DBA) 

(16)

Physical Data Independence

 Menunjukkan kekebalan skema konseptual terhadap perubahan skema internal.

 Perubahan skema internal (contoh : Menggunakan organisasi file yang berbeda, perubahan struktur/peralatan penyimpanan)

 Tidak memerlukan perubahan skema konseptual maupun skema eksternal.

Data Independence and the ANSI-SPARC Three-Level Architecture

Database Languages

 Data Definition Language (DDL)

Bahasa yang memungkinkan DBA atau user untuk mendefinisikan, menerangkan dan memberi nama entitas-entitas, atribut, dan relationship yang dibutuhkan untuk aplikasi, termasuk batasan-batasan keamanan dan integritas-nya.

(17)

- Penyisipan data

- Modifikasi data

- Pemanggilan data

- Penghapusan data

 Procedural DML

Bahasa yang memungkinkan user (umumnya programmer) untuk memberi instruksi ke system mengenai data yang dibutuhkan dan cara pemanggilannya. Artinya, user harus menjelaskan operasi pengaksesan data yang akan digunakan dengan menggunakan prosedur yang ada untuk mendapatkan informasi yang dibutuhkan.

 Non-Procedural DML

Bahasa yang memungkinkan user untuk menentukan data yang dibutuhkan dengan menyebutkan spesifikasinya tanpa men-spesifikasikan bagaimana cara mendapatkannya.

 Fourth Generation Language (4GL)

User lebih menekankan pada pendefinisian apa yang akan dikerjakan, daripada bagaimana mengerjakannya. 4GL meliputi :

 Query Languages

 Forms Generators

Merupakan fasilitas interaktif untuk membuat form input data dan tampilannya. Mendefinisikan design tampilan, informasi apa yang akan disajikan, komponen warna pada layar dan karakteristik lainnya.

 Report Generators

Membuat laporan (reports) yang datanya diambil dari database. Memungkinkan user untuk mengambil data yang diperlukan untuk laporan. Lebih menekankan kepada rancangan output, yaitu bagaimana suatu laporan akan disajikan.

(18)

 Application Generators.

Fasilitas untuk menghasilkan program yang berhubungan dengan data, menentukan bagaimana menampilkan fungsi-fungsi.

Model Data

Kumpulan konsep-konsep yang terintegrasi untuk menggambarkan data, relationships antar data, dan batasan-batasan data dalam organisasi.

 Data Model terdiri dari :

 Bagian struktural, berisikan sekumpulan aturan berdasarkan database yang dapat dibuat;

 Bagian manipulasi, mendefinisikan tipe operasi yang boleh dilakukan;

 Aturan-aturan Integritas.

 Kegunaan untuk

 Merepresentasikan data kedalam bentuk yang lebih mudah untuk dipahami.

 untuk menetapkan konsistensi dalam memandang, mengorganisir, menginterpretasikan dan memperlakukan database.

 Jenis-jenis Model data :

 Object-Based Data Models

 Entity-Relationship

 Semantic

 Functional

 Object-Oriented.

 Record-Based Data Models

 Relational Data Model

(19)

 Physical Data Models

Menerangkan bagaimana data disimpan dalam komputer, merepresentasikan informasi seperti ; struktur record, permintaan record, dan jalur akses

 Conceptual Modelling

 Skema konseptual merupakan bagian utama dari system yang menampilkan view seluruh user.

 Merupakan representasi yang akurat dan lengkap dari kebutuhan data pada organisasi.

 Merupakan proses pembentukan suatu model informasi yang digunakan dalam organisasi yang terlepas dari detail implementasi.

 Hasilnya merupakan model data konseptual.

Fungsi-fungsi DBMS

 Penyimpanan, pengambilan dan perubahan Data.

 Katalog yang dapat diakses oleh pengguna.

 Dukungan Transaksi.

 Layanan kontrol konkurensi.

 Layanan recovery.

 Layanan kepemilikan (Authorization Services).

 Dukungan komunikasi data.

 Layanan integrasi.

 Layanan untuk peningkatan independensi data.

(20)

Query Processor, merupakan komponen utama dalam DBMS yang merubah query

kedalam bahasa instruksi tingkat rendah yang ditujukan untuk database manager.

Database Manager (DM), DM berhadapan dengan program aplikasi dan queri yang

diajukan oleh user. DM menerima query dan memeriksa skema eksternal dan

konseptual untuk menentukan record konseptual apa yang dapat memenuhi permintaan user.

File Manager, memanipulasi file-file dasar yang tersimpan dan mengatur alokasi tempat

penyimpanan.

DML Processor, modul ini mengkonversikan pernyataan DML dalam program aplikasi

(21)

pengawasannya disimpan pada file header data.

Catalog Manager, mengatur pengaksesan dan memelihara katalog system.

(22)

Authorization Control, modul ini memeriksa bahwa user memiliki otorisasi yang

dibutuhkan untuk melakukan transaksi.

Command Processor, ketika sistem telah memeriksa otorisasi user, maka hak

pengawasan dialihkan pada command processor.

Integrity Checker, untuk operasi yang menyebabkan perubahan database, integrity

checker memeriksa bahwa operasi yang diminta memenuhi batasan-batasan

integritas yang ada.

Query Optimizer, modul ini menentukan stategi yang paling optimal untuk eksekusi

query.

Transaction Manager, modul ini menampilkan proses yang diinginkan dari suatu

operasi

Scheduler, modul ini bertanggung jawab untuk memastikan bahwa operasi terhadap

database yang berurutan tidak mengalami konflik satu dengan lainnya.

Recovery Manager, modul ini memastikan database selalu berada pada kondisi

yang konsisten jika terjadi kesalahan.

Buffer Manager, modul ini bertanggung jawab untuk men-transfer data antara main

memory dan secondary storage.

Multi-User DBMS Architectures

Teleprocessing

 Arsitektur tradisional untuk multi-user system, dimana sebuah CPU terhubung dengan beberapa workstation.

(23)

 File-server dihubungkan dengan beberapa workstation melalui jaringan (network), Database diletakan pada file-server, DBMS dan aplikasi dijalankan pada masing-masing workstation.

 Kerugiannya :

 Kepadatan jaringan

 Diperlukan copy DBMS pada setiap workstation.

 Kontrol concurrency, recovery dan integrity yang lebih rumit.

 File-server architecture

Client-Server

 Server menangani database dan DBMS, Client mengatur user interface dan menjalankan aplikasi.

 Keuntungannya :

 Akses yang lebih luas terhadap database.

 Meningkatkan performa.

 Pengurangan biaya hardware.

 Pengurangan biaya komunikasi.

 Peningkatan konsistensi.

(24)
(25)

Client

 Mengatur user Interface

 Menerima & memeriksa syntax input dari user

 Membangun (Generates) permintaan DB dan mengirimkannya ke server

 Memberikan respon balik ke user

Server

 Menerima & memroses permintaan DB dari client

 Memeriksa autorisasi

 Menjamin batasan integritas

 Menampilkan queri/proses update dan mengirimkannya ke user  Memelihara System Catalog

 Menyediakan kontrol recovery

 Menyediakan akses DB yang akurat

Transaction Processing Monitors

 Program yang mengontrol transfer data antara client dan server untuk menyediakan environment yang konsisten, khususnya untuk Online Transaction Processing (OLTP).  Transaction Processing Monitor tingkat pertengahan dari ketiga tingkatan client-server

(26)

 Tempat penyimpanan informasi (metadata) menjelaskan data yang ada di database.

 Hal-hal yang disimpan, diantaranya :

 Nama-nama user yang diberi wewenang.

 Nama data item dalam database;

 Batasan untuk setiap data item;

 data item yang dapat diakses oleh user dan tipe aksesnya.

 Digunakan sebagai penguji kontrol autorisasi dan integritas.

Information Resource Dictionary System (IRDS)

 Respon terhadap usaha untuk standarisasi interface data dictionary.

 Standar IRDS mendefinisikan sejumlah aturan mengenai penyimpanan dan pengaksesan data sictionary, diantaranya :

 extensibility of data;

 integrity of data;

 controlled access to data.

(27)

1. Diskusikan konsep dari data independence dan jelaskan pentingnya konsep ini dalam lingkup basis data

2. Apa yang dimaksud dengan model data? Sebutkan dan jelaskan masing-masing dari model data

3. Apa yang dimaksud dengan ‘client–server architecture’ dan apa keuntungan dari pendekatan ini? Bandingkan arsitektur client-server dengan 2 arsitektur lainnya 4. Jelaskan fungsi dan pentingnya dari sebuah system katalog

Daftar Pustaka

1. Database system: A Practical approach to design, implementation and management

(28)

MODUL PERKULIAHAN

Basis Data

Model Relasional Basis Data

Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh 

Ilmu Komputer  Teknik Informatika 

03

87033  Tim Dosen 

 

Abstract

Kompetensi

Modul ini berisi materi tentang

model relasional dalam basis data Mahasiswa mampu menjelaskan struktur data relasional, mampu

menyebutkan dan menjelaskan

(29)

 Relasi direpresentasikan sebagai table yang terdiri dari baris dan kolom. Diaplikasikan hanya pada struktur logical bukan fisikal.

 Atribut adalah nama kolom pada table.

 Tuple adalah baris pada table (record).

 Domain adalah himpunan nilai dari satu atau lebih atribut.

 Degree adalah banyaknya atribut/kolom pada tabel.

 Cardinality adalah banyaknya tuple/baris pada tabel.

 Relational Database adalah kumpulan relasi ternormalisasi dengan nama relasi yang

jelas dan dapat dibedakan.

(30)

Terminologi Alternatif untuk Model Relasional

Dalam basis data terdapat beberapa terminology yang sebenarnya merujuk pada sebuah hal yang sama. Adanya perbedaan dikarenakan adanya perbedaan cara pandang dan perbedaan pengaplikasian. Untuk lebih jelasnya, perbedaan antara terminology alternative dalam model relasional dapat dilihat pada table 3.1.

Definisi matematis untuk relasi

 Misalkan terdapat himpunan D1 & D2, dimana D1 = {2, 4} dan D2 = {1, 3, 5}.

 Cartesian product, D1 X D2, adalah himpunan pasangan dimana elemen pertama

merupakan anggota dari D1 dan elemen ke dua, anggota dari D2.

(31)

R = {(2, 1), (4, 1)}

 Dapat pula dituliskan dalam pasangan dengan kondisi, contoh :

 elemen kedua = 1 :

R = {(x, y) | x X D1, y X D2, and y = 1}

 elemen pertama = 2 kali elemen kedua :

S = {(x, y) | x X D1, y X D2, and x = 2y}

 Jika terdapat 3 buah himpunan, D1, D2, D3 dengan Cartesian Product D1 X D2 X D3.

Contoh :

D1 = {1, 3} D2 = {2, 4} D3 = {5, 6}

D1 X D2 X D3 = {(1,2,5), (1,2,6), (1,4,5), (1,4,6), (3,2,5), (3,2,6), (3,4,5), (3,4,6)}

 Cartesian product dari himpunan n (D1, D2, . . ., Dn) adalah :

D1 X D2 X. . .XDn = {(d1, d2, . . . , dn) | d1 Є D1, d2 Є D2, . . . , dn Є Dn} atau dapat ditulis : n XDi i = 1

Relasi Database

Skema Relasi

Nama relasi yang didefinisikan oleh himpunan pasangan atribut dan nama domain. Misal : A1, A2, …, An adalah atribut dengan domain D1, D2, …, Dn, maka pasangan { a1:D1, A2:D2, …, An:Dn} adalah skema relasi.

Skema Database Relasional

Himpunan skema relasi, dengan nama yang berbeda.

Misal : Jika R1, R2, ..., Rn adalah himpunan skema relasi, maka dapat dituliskan skema database relasional dalam R, sehingga R = {R1, R2, ..., Rn}

Sifat-sifat Relasi

 Nama Relasi berbeda satu sama lain dalam skema relasional.

(32)

 Nilai suatu atribut berasal dari domain yang sama.

 Setiap tuple berbeda, dan tidak ada duplikasi tuple.

Kunci-kunci Relasional (Relational Keys)

Superkey

Sebuah atribut atau himpunan atribut yang mengidentifikasi secara unik tuple-tuple yang ada dalam relasi.

Candidate Key

 Superkey (K) dalam relasi

 Untuk setiap relasi R, nilai K akan mengidentifikasi secara unik tuplenya.

 Jika Candidate key terdiri dari beberapa atribut, disebut composite key.

Primary Key

Candidate key yang dipilih untuk identifikasi tuple secara unik dalam suatu relasi.

Alternate Keys

Candidate key yang tidak terpilih sebagai primary key.

Foreign Key

Atribut atau himpunan atribut dalam relasi yang disesuaikan (matching) dengan candidate key pada beberapa relasi.

Relational Integrity

Null

- Merepresentasikan nilai untuk atribut yang tidak diketahui/tidak digunakan/tidak tersedia untuk suatu tuple.

- Berkaitan dengan ketidaklengkapan/pengecualian data

- Representasi tidak adanya suatu nilai dan tidak sama nilainya dengan Nol atau Spasi.

Entity Integrity

Pada relasi dasar, tidak ada atribut ataupun primary key yang bernilai NULL.

(33)

nilai foreign key harus NULL seluruhnya.

Enterprise Constraints

Aturan tambahan yang dispesifikasikan oleh user atau DBA.

Views

Relasi Dasar (Base Relation)

Nama relasi mengacu kepada entitas dalam skema konseptual, dimana tuple-tuple disimpan dalam database secara fisik.

View

-

Hasil dinamik dari satu atau lebih operasi relasional yang dilakukan pada relasi

dasar untuk menghasilkan relasi yang lain.

-

Merupakan relasi virtual yang tidak harus ada dalam database, tetapi

dihasilkan pada saat dilakukan permintaan (request).

-

Isi dari view didefinisikan sebagai query dari satu atau lebih relasi dasar.

-

View bersifat dinamis, artinya perubahan yang dilakukan pada relasi dasar

yang mempengaruhi atribut pada view langsung terlihat.

Kegunaan View

 Menyediakan mekanisme keamanan yang fleksible dan baik dengan

menyembunyikan bagian database dari user tertentu.

 Mengijinkan user untuk meng-akses data dengan berbagai cara, sehingga data yang

sama dapat dilihat oleh user yang berbeda dengan cara yang berbeda pada saat yang sama.

(34)

seluruh view yang terkait dengan relasi dasar tersebut.

 Jika view di-update, perubahan harus terlihat pada relasi dasar yang digunakan.

 Terdapat beberapa batasan pada tipe modifikasi yang dilakukan terhadap view,

diantaranya:

- Update diperbolehkan jika query melibatkan relasi dasar tunggal dan berisikan candidate key dari relasi dasar.

- Update dilarang jika melibatkan banyak relasi dasar.

- Update tidak diperkenankan melibatkan penggabungan atau pengelompokan operasi.

Latihan

1. Jelaskan perbedaan antara sebuah relasi, skema relasi. Apakah yang dimaksud dengan skema basis data relasional?

2. Jelaskan dan berikan contoh tentang integrity constraint beserta contohnya

3. Apa yang dimaksud dengan view? Jelaskan perbedaa antara view dengan sebuah relasi fisik

Daftar Pustaka

1. Database system: A Practical approach to design, implementation and management

(35)

MODUL PERKULIAHAN

Basis Data

SQL: QUERI SINGLE TABLE

Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh 

Ilmu Komputer  Teknik Informatika 

04

87033  Tim Dosen 

 

Abstract

Kompetensi

Modul ini berisi materi tentang perintah dalam SQL DML untuk queri pada tabel tunggal

Mahasiswa mampu menuliskan

perintah SQL DML sederhana dan fungsi agregat

(36)

Tujuan dari SQL

Idealnya, database language dapat memungkinkan user untuk:

Membuat struktur relasi dan database;

Melakukan operasi penyisipan (insertion), perubahan (modification) dan penghapusan (deletion) data dari relasion;

Melakukan query sederhana dan rumit.

Database language harus melaksanakan operasi-operasi tersebut dengan usaha minimal yang dilakukan user dan sintaks/struktur instruksi harus mudah dipahami/dipelajari. Harus portable sehingga memungkinkan untuk pindah dari satu DBMS ke DBMS lainnya. SQL merupakan transform-oriented language dengan 2 komponen utama:

DDL untuk definisi struktur database.

DML untuk pengambilan (retrieving) dan perubahan (updating) data.

Sampai dengan SQL3, SQL tidak mengandung perintah alih kontrol. Hal ini diimplementasikan dengan menggunakan bahasa pemrograman atau perintah kontrol atau secara interaktif, sesuai dengan keputusan user.

SQL cukup mudah dipelajari , karena:

- Merupakan bahasa non-procedural – cukup menspesifikasikan informasi apa yang

dibutuhkan daripada bagaimana mendapatkannya.

- Pada dasarnya mempunyai format yang bebas.

SQL Terdiri dari bahasa Inggris standard, seperti :

1) CREATE TABLE Staff(staffNo VARCHAR(5), lName ARCHAR(15), salary DECIMAL(7,2));

2) INSERT INTO Staff VALUES (‘SG16’, ‘Brown’, 8300);

3) SELECT staffNo, lName, salary

(37)

SQL dapat digunakan oleh bermacam-macam user, termasuk DBA, manajemen, pembuat aplikasi dan user lainnya. Terdapat ISO standard untuk SQL, membuat bahasa formal dan

de facto untuk relasional database.

   

Sejarah SQL

 Tahun 1974, D. Chamberlin (IBM San Jose Laboratory) mendefinisikan bahasa yang disebut ‘Structured English Query Language’ (SEQUEL).

 Versi yang telah diperbaiki, SEQUEL/2, ditemukan tahun 1976 tetapi namanya diubah menjadi SQL untuk alasan hukum.

 Sampai saat ini masih banyak yang menyebut ‘see-quel’, walaupun ejaan sesungguhnya adalah ‘S-Q-L’.

 IBM secara berturut-turut memproduksi prototype DBMS yang disebut System R, berdasarkan pada SEQUEL/2.

 Akar dari SQL, adalah SQUARE (Specifying Queries as Relational Expressions), dimana mendahului proyek System R.

 Diakhir 70-an, ORACLE muncul dan mungkin merupakan RDBMS komersil pertama yang berbasis SQL.

 Pada tahun 1987, ANSI dan ISO mempublikasikan standar awal untuk SQL.

 Pada tahun 1989, ISO mempublikasikan tambahan yang mendefinisikan ‘Integrity Enhancement Feature’.

 Tahun 1992, revisi utama yang pertama dilakukan pada standar ISO, dikenal sebagai SQL2 atau SQL/92.

 Tahun 1999, SQL3 dikeluarkan dengan dukungan untuk manajemen data berorientasi objek (object-oriented data management).

Pentingnya SQL

 SQL telah menjadi bagian dari arsitektur aplikasi seperti arsitektur aplikasi sistem IBM.  Merupakan pilihan yang strategis untuk organisasi besar dan berpengaruh (co :

(38)

 SQL digunakan untuk standar lainnya dan mempengaruhi pembuatan standar lainnya sebagai definitional tool. Contoh :

Standar ISO Information Resource Directory System (IRDS).

Standar Remote Data Access (RDA).

Penulisan perintah SQL

 Statemen SQL terdiri dari reserved word dan user-defined word.

o Reserved word adalah bagian yang telah ditetapkan pada SQL dan penulisannya

harus sesuai dan tidak bisa dipisah-pisahkan.

o User-defined word dibuat oleh user dan merepresentasikan nama-nama berbagai

objek database seperti relasi, kolom dan view.

 Kebanyakan komponen dari perintah SQL bersifat case insensitive, kecuali untuk data

literal karakter.

 Mudah dibaca dengan pengaturan baris dan spasi :

o Setiap clause dimulai pada baris baru.

o Awal dari suatu clause harus berurut dengan clause lainnya.

o Jika clause mempunyai beberapa bagian, harus ditampilkan pada baris yang

berbeda dan diberi spasi pada awal clause.

 Menggunakan bentuk notasi Backus Naur Form (BNF) :

 Menggunakan huruf besar untuk merepresentasikan reserved word.  Menggunakan huruf kecil untuk merepresentasikan user-defined word.  Mengindikasikan pilihan (choice) diantara beberapa alternatif.

 Kurung kurawal mengindikasikan required element.  Kurung siku mengindikasikan optional element.

 … mengindikasikan pengulangan (optional repetition ,0 atau lebih).  Literal

o Literal merupakan konstanta yang digunakan dalam statemen SQL. o Semua literal non-numerik dituliskan diantara kutip tunggal (co : ‘London’). o Semua literal numerik literals tidak dituliskan diantara kutip (co : 650.00).

(39)

Dreamhome Database

Registration

ClentNo BranchNo StaffNo Date_joined

CR76 B005 SL41 2-Jan-01

CR56 B003 SG37 11-Apr-00

CR74 B003 SG37 16-Nov-99

CR62 B007 SA9 7-Mar-00

Viewing

ClientNo PropertyNo View_Date Comment

CR56 PA14 24-May-01 Too Small

CR76 PG4 20-Apr-01 Too Remote

CR56 PG4 26-May-01

CR62 PA14 14-May-01 No Dining Room

CR56 PG36 28-Apr-01

Client

ClientNo fName lName TelNo PrefType MaxRent

CR76 John Kay 0207-774-5632 Flat 425

CR56 Aline Stewart 0141-848-1825 Flat 350

CR74 Mike Ritchie 01475-392178 House 750

(40)

Private Owner

OwnerNo fName lName Address TelNo

CO46 Joe Keogh 2 Fergus Dr, Abeerdeen AB2 7SX 01224-861212

CO87 Carol Farrel 6 Achray St, Glasgow G32 9DX 0141-357-7419

CO40 Tina Murphy 63 Well St, Glasgow G42 0141-943-1728

CO93 Tony Shaw 12 Park Pl, Glasgow G4 0QR 0141-225-7025

PropertyForRent

PropertyNo Street City PostCode Type Rooms Rent OwnerNo StaffNo BranchNo

PA14 16 Holhead Aberdeen AB7 5SO House 6 650 CO46 SA9 B007

PL94 6 Argyll St London NW2 Flat 4 400 CO87 SL41 B005

PG4 6 Lawrence St Glasgow G11 9QX Flat 3 350 CO40 - B003

PG36 2 Manor Rd Glasgopw G32 4QX Flat 3 375 CO93 SG37 B003

PG21 18 Dale Rd Glasgow G12 House 5 600 CO87 SG37 B003

PG16 5 Novar Dr Glasgow G12 9AX Flat 4 450 CO93 SG14 B003

Branch

BranchNo Street City PostCode

B005 22 Deer Rd London SW1 4EH

B007 16 Argyll St Aberdeen AB2 3SU

B003 163 Main St Glasgow G11 9QX

B004 32 Manse Rd Bristol BS99 1NZ

(41)

Staff

StaffNo fName lName Position Sex DOB Salary BranchNo

SL21 John White Manager M 1-Oct-45 30000 B005

SG37 Ann Beech Assistant F 10-Nov-60 12000 B003

SG14 David Ford Supervisor M 24-Mar-58 18000 B003

SA9 Mary Howe Assistant F 19-Feb-70 9000 B007

SG5 Susan Brand Manager F 3-Jun-40 24000 B003

SL41 Julie Lee Assistant F 13-Jun-65 9000 B005

Perintah SELECT

Bentuk umum :

SELECT [DISTINCT | ALL]

{* | [columnExpression [AS newName]] [,...] } FROM TableName [alias] [, ...]

[WHERE condition]

[GROUP BY columnList] [HAVING condition]

[ORDER BY columnList]

Dimana :

FROM — Menspesifikasikan tabel-tabel yang digunakan.

WHERE — Baris filter (kondisi yang harus dipenuhi).

GROUP BY -- Bentuk pengelompokkan baris dengan nilai kolom yang sama. HAVING -- Menyeleksi subjek grup untuk beberapa kondisi.

SELECT -- Menspesifikasikan kolom mana yang akan ditampilkan. ORDER BY -- Menspesifikasikan order pada output.

(42)

Catatan :

o Perintah pada clause tidak dapat diubah.

o Perintah yang harus ada hanya SELECT dan FROM, lainnya bersifat optional.

Contoh: Semua Baris dan kolom

Tampilkan seluruh detail staff

SELECT staffNo, fName, lName, position, sex, DOB, salary, branchNo FROM Staff;

Dapat menggunakan * sebagai singkatan dari ‘semua kolom’:

SELECT *

(43)

Contoh : Seluruh baris, kolom tertentu.

 

Buatlah daftar gaji seluruh staff yang menampilkan nomor staff, nama awal dan akhir, dan gaji.

SELECT staffNo, fName, lName, salary

FROM Staff;

Penggunaan klausa DISTINCT

Contoh : Kegunaan DISTINCT

Tampilkan nomor properti dari seluruh properti yang pernah dilihat/dikunjungi.

SELECT propertyNo

(44)

Menggunakan DISTINCT untuk menghilangkan duplikasi :

SELECT DISTINCT propertyNo

FROM Viewing;

Contoh: Field yang dihasilkan

Tampilkan daftar gaji/bulan untuk seluruh staff, dengam menampilkan nomor staff, nama awal dan akhir dan detail gaji.

SELECT staffNo, fName, lName, salary/12 FROM Staff;

(45)

Memberi nama kolom, menggunakan clause AS :

SELECT staffNo, fName, lName, salary/12 AS monthlySalary FROM Staff;

Kondisi pencarian dengan perbandingan

Tampilkan seluruh staff yang mempunyai gaji lebih dari 10,000.

SELECT staffNo, fName, lName, position, salary FROM Staff

WHERE salary > 10000;

Kondisi pencarian dengan perbandingan gabungan

Tampilkan detail seluruh kantor cabang yang beralamat di London atau Glasgow.

SELECT *

FROM Branch

(46)

Kondisi pencarian dengan batas (range)

Tampilkan seluruh staff yang berpenghasilan antara 20,000 dan 30,000.

SELECT staffNo, fName, lName, position, salary FROM Staff

WHERE salary BETWEEN 20000 AND 30000;

 BETWEEN menyertakan angka terakhir dari range.

 Terdapat juga versi negasi NOT BETWEEN.

 BETWEEN bukan merupakan tambahan yang berarti, karena dapat dituliskan :

SELECT staffNo, fName, lName, position, salary FROM Staff

WHERE salary >=20000 AND salary <= 30000;

 Bermanfaat untuk nilai dengan range tertentu.

Himpunan Anggota (Set Membership)

(47)

SELECT staffNo, fName, lName, position FROM Staff

WHERE position IN (‘Manager’, ‘Supervisor’);

 Terdapat versi negasi (NOT IN).

 IN bukan merupakan tambahan berarti, karena dapat dituliskan :

SELECT staffNo, fName, lName, position FROM Staff

WHERE position=‘Manager’ OR position = ‘Supervisor’;

 IN lebih efisien jika himpunan (set) berisi beberapa nilai.

Penyesuaian bentuk (Pattern Matching)

Tampilkan detail seluruh pemilik dengan kata ‘Glasgow’ pada alamatnya. SELECT OwnerNo, fName, lName, address, telNo

FROM PrivateOwner

(48)

 SQL mempunyai dua simbol pattern matching :

o %: rangkaian dari nol atau lebih karakter. o _ (garis bawah): satu karakter tunggal.

o LIKE ‘%Glasgow%’ berarti rangkaian karakter yang mengandung kata ‘Glasgow’,

panjang string tidak ditentukan.

Kondisi pencarian NULL

Tampilkan detail seluruh all viewing pada properti PG4 dimana tidak terdapat komentar.

 Terdapat 2 viewing untuk properti PG4, satu terdapat komentar dan lainnya tidak.

 Dilakukan test nilai null secara tegas dengan keyword IS NULL:

SELECT clientNo, viewDate

FROM Viewing

WHERE propertyNo = ‘PG4’ AND comment IS NULL;

 Versi negasi (IS NOT NULL) dapat menguji nilai non-null.

Contoh : Ordering kolom tunggal

Tampilkan daftar gaji seluruh staf, disusun secara descending berdasarkan salary. SELECT staffNo, fName, lName, salary

FROM Staff

(49)

Ordering multiple kolom

Tampilkan daftar ringkasan properti berdasarkan tipe properti.

SELECT propertyNo, type, rooms, rent FROM PropertyForRent

(50)

o Dari contoh diatas terdapat empat field. Untuk menyusun properti berdasarkan rent

maka harus dispesifikasikan minor order sbb :

SELECT propertyNo, type, rooms, rent FROM PropertyForRent

ORDER BY type, rent DESC;

Perintah SELECT –

Aggregate

 

o Standar ISO mendefinisikan lima fungsi aggregate :

 COUNT Mengembalikan angka dari nilai dalam kolom tertentu  SUM Mengembalikan jumlah dari nilai yang terdapat dalam kolom  AVG Mengembalikan rata-rata dari nilai yang ada dalam kolom

 MIN Mengembalikan nilai terkecil dari nilai yang terdapat dalam kolom  MAX Mengembalikan nilai terbesar dari nilai yang terdapat dalam kolom

o Setiap fungsi beroperasi pada satu kolom dan mengembalikan satu nilai tunggal.

o COUNT, MIN, dan MAX digunakan untuk field numerik dan non-numerik, sedangkan

(51)

o Bagian dari COUNT(*), pertama setiap fungsi mengeliminasi null dan mengoperasikan

nilai non-null.

o COUNT(*) menghitung seluruh baris dalam tabel, walaupun terdapat null atau duplikasi. o Menggunakan DISTINCT sebelum nama kolom untuk menghilangkan duplikasi.

o DISTINCT tidak berpengaruh terhadap operasi MIN/MAX, tetapi berpengaruh pada

SUM/AVG.

o Fungsi Aggregate dapat digunakan dalam daftar SELECT dan clause HAVING clause. o Jika daftar SELECT menyertakan fungsi aggregate dan tidak terdapat clause GROUP

BY, daftar SELECT tidak dapat mengacu ke kolom dengan fungsi aggregate. o Contoh berikut adalah salah :

SELECT staffNo, COUNT(salary)

FROM Staff;

Kegunaan COUNT(*)

Tampilkan banyaknya properti yang mempunyai biaya sewa lebih dari £350 per bulan

SELECT COUNT(*) AS count

FROM PropertyForRent

(52)

Kegunaan COUNT(DISTINCT)

Tampilkan banyaknya properti yang berbeda telah dilihat selama May ‘01? SELECT COUNT(DISTINCT propertyNo) AS count

FROM Viewing

WHERE viewDate BETWEEN ‘1-May-01’ AND ‘31-May-01’;

Kegunaan COUNT dan SUM

Tampilkan jumlah manager dan jumlah gaji mereka.

SELECT COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff

(53)

Kegunaan MIN, MAX, AVG

Carilah minimum, maximum, dan average gaji staff

SELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg FROM Staff;

Perintah SELECT –

Grouping

 

o Menggunakan clause GROUP BY untuk mendapatkan sub-total.

o SELECT dan GROUP BY terintegrasi :setiap item dalam SELECT harus berupa

single-valued per group, dan clause SELECT hanya dapat mengandung :

Nama kolom

Fungsi aggregate

Konstanta

Ekspresi terdiri dari kombinasi tersebut diatas.

o Semua nama kolom dalam SELECT harus ditampilkan dalam clause GROUP BY kecuali

jika dinamakan dalam fungsi aggregate.

o Jika WHERE digunakan bersama GROUP BY, WHERE dimunculkan lebih dulu,

kemudian groups ditampilkan dari sisa baris untuk memenuhi predikat.

o Standar ISO mempertimbangkan dua null bernilai sama untuk kegunaan dari clause

(54)

Kegunaan GROUP BY

Tampilkan jumlah staff pada setiap cabang dan total gaji staf pada masing-masing cabang

SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum

FROM Staff

GROUP BY branchNo

ORDER BY branchNo;

Pengelompokkan terbatas – HAVING clause

 Clause HAVING didesain untuk digunakan bersama GROUP BY untuk membatasi pengelompokkan yang ditampilkan pada tabel hasil akhir.

 Hampir sama dengan WHERE, dimana WHERE menyeleksi baris secara individual, sedangkan HAVING secara kelompok.

 Nama kolom dalam clause HAVING juga akan ditampilkan dalam daftar GROUP BY

atau dimasukan dalam fungsi aggregate. Contoh : Kegunaan HAVING

Tampilkan jumlah staff dan jumlah gaji mereka untuk cabang dengan jumlah staff lebih dari 1

(55)

SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo

HAVING COUNT(staffNo) > 1 ORDER BY branchNo;

Latihan

Perhatikan skema Hotel berikut:

  Hotel    (hotelNo, hotelName, city)    Room    (roomNo, hotelNo, type, price)    Booking   (hotelNo, guestNo, dateFrom, dateTo, roomNo)    Guest    (guestNo, guestName, guestAddress)    1. Buatlah SQL DML untuk:

a. Menampilkan semua nama hotel yang ada di kota Bandung

b. Menampilkan semua hotel dengan harga terendah dan harga tertinggi dan harga rata-ratanya

(56)

d. menampilkan nama tamu yang berasal dari Depok

e. tampilkan nama tamu dan berapa lama mereka menginap

f. tampilkan ada berapa jumlah tamu yang berasal dari kota Bandung g. tampilkan nama kota yang terdapat hotel

Daftar Pustaka

1. Database system: A Practical approach to design, implementation and management

(57)

MODUL PERKULIAHAN

Basis Data

SQL: QUERI MULTI TABLE

Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh  Ilmu Komputer  Teknik Informatika 

05

87031  Tim Dosen 

 

Abstract

Kompetensi

Modul ini berisi materi tentang perintah dalam SQL DML untuk queri pada tabel lebih dari 1

Mahasiswa mampu menuliskan perintah SQL DML multi queri

(58)

Dalam aplikasinya basis data digunakan untuk menyimpan banyak tabel yang secara logical saling berhubungan satu dengan yang lain. Pada bab sebelumnya, kita telah membahas tentang queri pada tabel tunggal dimana informasi yang dibutuhkan memang hanya berasal dari satu tabel saja. Selanjutnya apa yang harus dilakukan jika informasi yang dibutuhkan dari basis data membutuhkan gabungan informasi dari lebih 1 tabel. Dalam sql, ini biasa disebut sebagai queri multi table.

Queri multi table dilakukan dengan 2 pendekatan. Pendekatan yang pertama disebut sebagai nested queri. Nested queri adalah sebuah queri yang mememiliki queri yang tersebunyi didalamnya, queri yang tersembunyi tersebut dinamakan sebagai subqueri. Subqueri biasanya muncul dengan klausa WHERE, FROM atau HAVING.

Selain nested queri, pendekatan lainnya adalah dengan menggunakan join. Jenis join ini beragam. Operasi Join yang mengacu pada SQL:1999 adalah sebagai berikut:

1. INNER JOIN (SIMPLE JOIN): yaitu bentuk kondisi join dimana di antara 2 atau lebih tabel yang ingin di join memiliki hubungan sehingga semua isi tabel yang di pilih bisa di tampilkan.

Sintak:

select * from namatabel1 inner join namatabel2

where namatabel1.kondisisama = namatabel1. kondisisama

2. NON-EQUIJOIN: adalah kondisi join yang tidak mengandung opertor sama dengan (=)

Sintak:

select * from namatabel1 inner join namatabel2

where namatabel1.kondisisama and namatabel1. kondisisama

3. OUTER JOIN : yaitu bentuk nilai join yang memenuhi daari kedua tabel, Outer join terdiri dari 2 yaitu,

LEFT OUTER JOIN: Menampilkan semua data yang ada di tabel kiri dan hanya data yang bersesuaian di tabel kanan, jika tabel kiri tidak mempunyai lawan di tabel kanan maka tabel kanan akan diisi dengan null.

(59)

select tabel1.kolom, tabel2.kolom

from tabel1, tabel2

where tabel1.kolom (+) = tabel2.kolom

atau

select tabel1.kolom, tabel2.kolom

from tabel1 left outer join tabel2

on tabel1.kolom = tabel2.kolom

RIGHT OUTER JOIN : Sama dengan left outer join namun peletakan data atau nilai dari tabel lain berada pada sebelah kanan tabel asal.

Contoh sintak

select tabel1.kolom, tabel2.kolom

from tabel1, tabel2

where tabel1.kolom = tabel2.kolom(+)

atau

select tabel1.kolom, tabel2.kolom

from tabel1 right outer join tabel2

on tabel1.kolom = tabel2.kolom

4. SELF JOIN: adalah suatu bentuk kondisi join tau penggabungan yang terjadi pada dua tabel yang sama kondisinya dari kedua tabel tersebut dan menambahkan suatu kata dengan kondisi yang sama antara kedua tabel.

Sintak:

Select tabel1.namakolom ||’ works for’ || tabel2.namakolom

(60)

Contoh:Subquerydenganpersamaan

Tampilkan detail staff yang bekerja di cabang yang berada di ‘163 Main St’.

SELECT staffNo, fName, lName, position FROM Staff

WHERE branchNo =

(SELECT branchNo FROM Branch

WHERE street = ‘163 Main St’);

 SELECT yang didalam mencari no cabang dari cabang yang beralamat di ‘163 Main St’ (‘B003’).

 SELECT yang diluar memanggil detail dari seluruh staff yang bekerja dicabang ini.

 Kemudian SELECT luar menjadi :

SELECT staffNo, fName, lName, position FROM Staff

(61)

Tampilkan detail staff yang gaji-nya lebih besar dari gaji rata-rata dan tampilkan selisihnya

SELECT staffNo, fName, lName, position, salary – (SELECT AVG(salary) FROM Staff) As SalDiff FROM Staff

WHERE salary >

(SELECT AVG(salary) FROM Staff);

Contoh:SubquerydenganAggregate

 Tidak dapat dituliskan ‘WHERE salary > AVG(salary)’

 Lebih baik digunakan subquery untuk mencari gaji rata-rata (17000), kemudian menggunakan SELECT luar untuk mencari staff dengan gaji lebih besar dari 17000.

SELECT staffNo, fName, lName, position, salary – 17000 As salDiff

FROM Staff

WHERE salary > 17000;

Aturan-aturan Subquery

 Clause ORDER BY dapat tidak digunakan dalam subquery (walaupun dapat digunakan dalam SELECT terluar).

(62)

 Berdasarkan default, nama kolom mengacu ke nama tabel pada clause FROM dari subquery. Dapat mengacu ke table dalam FROM menggunakan alias.

 Ketika subquery merupakan sebuah operand dalam suatu perbandingan, maka harus dituliskan disebelah kanan.

 Subquery tidak dapat digunakan sebagai operand dalam suatu ekspresi.

Contoh:Queribersarang:kegunaan IN

Tampilkan properti yang ditangani oleh staff di ‘163 Main St’.

SELECT propertyNo, street, city, postcode, type, rooms, rent

FROM PropertyForRent

WHERE staffNo IN

(SELECT staffNo FROM Staff

WHERE branchNo = (SELECT branchNo FROM Branch

(63)

 ANY dan ALL dapat digunakan dengan subqueries yang menghasilkan satu kolom tunggal.

 Dengan ALL, kondisi akan bernilai benar jika terpenuhi oleh semua nilai yang dihasilkan oleh subquery.

 Dengan ANY, kondisi akan bernilai benar jika ada nilai yang dihasilkan subquery memenuhi ketentuan.

 Jika subquery bernilai kosong (empty), ALL mengembalikan nilai benar (true), dan ANY mengembalikan nilai salah (false).

 SOME dapat digunakan sebagai pengganti ANY.

Contoh:KegunaanANY/SOME

Tampilkan staff yang mempunyai gaji lebih besar dari gaji 1 staff dicabang B003.

SELECT staffNo, fName, lName, position, salary FROM Staff

WHERE salary > SOME

(SELECT salary FROM Staff

WHERE branchNo = ‘B003’);

 Inner query menghasilkan himpunan {12000, 18000, 24000} dan outer query mengambil staff yang gaji-nya lebih besar dari semua nilai yang ada di himpunan tersebut.

(64)

Contoh:KegunaanALL

Tampilkan staff yang gaji-nya lebih besar dari gaji setiap anggota staff cabang B003.

SELECT staffNo, fName, lName, position, salary FROM Staff

WHERE salary > ALL

(SELECT salary FROM Staff

WHERE branchNo = ‘B003’);

 

Operasi Join Queri

Contoh penggunaan inner join

Tampilkan nama dan komentar dari semua klien yang sudah melihat properti.

Select c.clientno, c.fname, c.lname, propertyno, comment from client c inner join viewing v

on c.clientno = v.clientno;

(65)

Select b.branchno, b.bname, s.fname, s.lname, city From branch b

Join on staff on s.city <> Paris;

Contoh penggunaan left outer join

Tampilkan status laporan dari property yang sudah dilihat oleh client

Select p.propertyno, p.street, p. City, v.clientno, v.viewdate, v.comment From property p

Left outer join viewing v on p.clientno = v.clientno;

Contoh peggunaan self join

Contoh penggunaan sintaks ini dapat dilihat pada skema HR pada oracle dengan tujuan untuk melihat nama manajer berserta bawahannya.

Select e.lastname emp, m.lastname mgr From employees e join employees m On (e.manager_id = m.employee_id)

(66)

Buka skema HR pada latihan oracle anda. Buatlah queri-queri dengan menggunakan perintah join.

Daftar Pustaka

1. Database system: A Practical approach to design, implementation and management 2. Sistem Manajemen Basis Data

3. Oracle database 10g: SQL Fundamentals I

(67)

  2014

1

Basis Data Pusat Bahan Ajar dan eLearning

  Tim Dosen http://www.mercubuana.ac.id

MODUL PERKULIAHAN

Basis Data

SQL:

DATA DEFINITION LANGUAGE

Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh 

Ilmu Komputer  Teknik Informatika 

06

87031  Tim Dosen   

Abstract

Kompetensi

Modul ini berisi materi tentang perintah dalam SQL untuk membangun dan mendefiniskan basis data beserta strukturnya

Mahasiswa mampu menuliskan perintah SQL untuk membuat sebuah struktur tabel, mampu mendefinisikan integrity constraint dalam DDL.

(68)

  2014

2

Basis Data Pusat Bahan Ajar dan eLearning

Sasaran Dalam DDL

 Tipe data yang didukung oleh SQL standard.

 Kegunaan dari integrity enhancement feature pada SQL.

 Bagaimana menetapkanbatasan integritas menggunakan SQL.

 Bagaimana menggunakan integrity enhancement feature dalam perintah

CREATE dan ALTER TABLE.

Integrity Enhancement Feature

 Data yang dibutuhkan (Required data)

 Batasan domain (Domain constraints)

 Integritas entitas (Entity integrity)

 Integritas referensial (Referential integrity)

 Batasan enterprise (Enterprise constraints)

IEF-Required Data

 Beberapa kolom field harus memiliki nilai yang pasti (tidak diperkenankan bernilai NULL).

 NULL digunakan untuk merepresentasikan data yang tidak ada/ tidak tersedia, hilang atau tidak disertakan.

 Standar ISO menetapkan keyword NOT NULL untuk mengatasi hal tersebut.

 Contoh format deklarasi :

(69)

  2014

3

Basis Data Pusat Bahan Ajar dan eLearning

  Tim Dosen http://www.mercubuana.ac.id

IEF-Domain Constraints

 Setiap kolom mempunyai domain, atau dengan kata lain himpunan dari nilai-nilai yang benar.

 Misalkan dalam tabel Staff terdapat kolom Sex yang berisi nilai karakter tunggal ‘M’ atau ‘F’, maka dapat dideklarasikan CHECK (Search Condition);

 sehingga :

sex CHAR NOT NULL

CHECK (sex IN (‘M’, ‘F’));

 atau dieklarasikan secara eksplisit :

CREATE DOMAIN DomainName [AS] dataType [DEFAULT defaultOption]

[CHECK (searchCondition)]

 Sehingga :

CREATE DOMAIN SexType AS CHAR

CHECK (VALUE IN (‘M’, ‘F’));

sex SexType NOT NULL

searchCondition dapat mengandung table lookup, misalkan membuat domain

Branchnumber untuk memastikan nilai yang akan dimasukan sesuai dengan branch

number yang sudah ada pada tabel Branch :

CREATE DOMAIN BranchNo AS CHAR(4)

CHECK (VALUE IN (SELECT branchNo

(70)

  2014

4

Basis Data Pusat Bahan Ajar dan eLearning

 Domain dapat dihapuskan dengan menggunakan perintah DROP DOMAIN, jika ditetapkan RESTRICT kemudian domain digunakan dalam tabel, view dan definisi penegasan (assertion definition), maka penghapusan domain akan ditolak. Jika ditetapkan CASCADE, maka kolom tabel yang menggunakan domain tersebut secara otomatis diganti dengan nilai default yang ada.

DROP DOMAIN DomainName [RESTRICT | CASCADE]

IEF - Entity Integrity

 Primary key dari suatu tabel harus berisi nilai yang unik, dan non-null untuk setiap barisnya.

 Standard ISO menyediakan clause FOREIGN KEY pada perintah CREATE dan ALTER TABLE :

PRIMARY KEY(staffNo)

PRIMARY KEY(clientNo, propertyNo)

->(Jika primary Key terdeiri dari beberapa kolom)

 Hanya dapat mempunyai 1 clause PRIMARY KEY untuk setiap table, tetapi masih dapat memastikan pemasukkan nilai yang unik untuk beberapa alternate key

dengan menggunakan keyword UNIQUE: UNIQUE(telNo)

IEF - Referential Integrity

 Foreign Key adalah kolom atau himpunan kolom yang menghubungkan setiap baris dalam child table yang berisi Foreign Key dengan baris dari parent table yang berisi

Primary Key yang sesuai/match.

 Integritas referential berarti, jika FK berisi suatu nilai, maka nilai tersebut harus mengacu kesuatu baris dalam parent table.

(71)

  2014

5

Basis Data Pusat Bahan Ajar dan eLearning

  Tim Dosen http://www.mercubuana.ac.id

 Standard ISO menyediakan pendefinisian untuk FK dengan clause FOREIGN KEY dalam CREATE dan ALTER TABLE:

FOREIGN KEY(branchNo) REFERENCES Branch

 Operasi INSERT/UPDATE yang berusaha untuk membuat nilai FK dalam child table

tanpa nilai candidate key yang sesuai dalam parent table.

 Aksi yang dilakukan yang berusaha untuk merubah / menghapus (update/delete) nilai candidate key dalam parent table yang memiliki baris yang sesuai dalam child

table tergantung pada referential action yang ditetapkan dengan subclause ON

UPDATE dan ON DELETE. Terdapat 4 pilihan aksi, yaitu :

o CASCADE, menghapus baris dari parent table dan secara otomatis

menghapus baris yang sesuai dalam child table, jika baris yang dihapus tadi

merupakan candidate key yang digunakan sebagai foreign key pada tabel

lainnya, maka aturan foreign key untuk tabel ini dihilangkan.

o SET NULL, menghapus baris pada parent table dan menetapkan nilai foreign key dalam child table menjadi NULL. Berlaku jika kolom foreign key

mempunyai qualifier NOT NULL.

o SET DEFAULT, menghapus baris dari parent table dan menetapkan setiap

komponen foreign key dari child table menjadi defaultyang telah ditetapkan.

Berlaku jika kolom foreign key memliki nilai DEFAULT.

o NO ACTION, menolak operasi penghapusan dari parent table. Merupakan

default jika aturan ON DELETE dihilangkan

Contoh 1 :

Pada tabel PropertyForRent, StaffNo merupakan foreign key yang mengacu ke tabel Staff. Untuk menetapkan aturan penghapusan, jika record staff dihapus dari tabel Staff, maka nilai StaffNo yang ada pada PropertyForRent akan diganti menjadi NULL. Sehingga dapat dituliskan :

FOREIGN KEY (staffNo) REFERENCES Staff ON DELETE SET NULL

(72)

  2014

6

Basis Data Pusat Bahan Ajar dan eLearning

OwnerNo dalam tabel PropertyForRent merupakan foreign key yang mengacu ke tabel PrivateOwner. Untuk mendefinisikan aturan peng-update-an, jika OwnerNo dalam PrivateOwner di-update, maka kolom yang terkait dalam tabel PropertyForRent akan diganti dengan nilai baru, sehingga dapat dituliskan :

FOREIGN KEY (ownerNo) REFERENCES Owner ON UPDATE CASCADE

IEF - Enterprise Constraints

 Standard ISO memungkinkan untuk menetapkan pendefinisian enterprise constraint dengan menggunakan clause CHECK/UNIQUE dalam CREATE dan ALTER TABLE juga CREATE ASSERTION.

 Format pendeklarasian :

CREATE ASSERTION AssertionName

CHECK (searchCondition)

 Contoh : Untuk mendefinisikan enterprise constraint yang menegaskan agar anggota staff tidak mengatur lebih dari 100 property pada waktu yang sama :

CREATE ASSERTION StaffNotHandlingTooMuch

CHECK (NOTEXISTS (SELECT staffNo

FROM PropertyForRent GROUP BY staffNo

(73)

Data Definition

 SQL DDL memungkinkan objek database seperti schema, domain, table, view, dan index untuk dibuat dan dihapuskan.

 Perintah-perintah SQL DDL yang utama adalah :

o CREATE SCHEMA o DROP SCHEMA o CREATE/ALTER DOMAIN o DROP DOMAIN o CREATE/ALTER TABLE o DROP TABLE o CREATE VIEW o DROP VIEW

 Beberapa DBMS juga menyediakan :

o CREATE INDEX o DROP INDEX

 Relasi-relasi dan objek lain dari suatu database berada dalam sebuah environment.

 Setiap environment mengandung saru atau lebih catalog, dan setiap catalog terdiri dari

sekumpulan/himpunan skema.

 Skema adalah suatu himpunan bernama yang terdiri dari oobjek-objek database yang saling berhubungan.

 Objek dalam sebuah skema dapat berupa table, view, domain, assertion, collation, translation, dan himpunan karakter. Seluruhnya memiliki owner yang sama.

Membuat Skema (CREATE SCHEMA)

 Perintah untuk mendefinisikan skema : CREATE SCHEMA [Name |

AUTHORIZATION CreatorId ]

 Perintah untuk menghapus skema :

DROP SCHEMA Name [RESTRICT | CASCADE ]

 Jika ditetapkan RESTRICT (default), maka skema harus kosong atau operasi akan digagalkan. Jika ditetapkan CASCADE, maka operasi berjalan berurut menghapus

Gambar

Diagram ER Relationship Branch Has Staff

Referensi

Dokumen terkait