Basis Data - FASILKOM Mercubuana

advertisement
 MODUL PERKULIAHAN
Basis Data
Pengenalan Basis Data
Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Teknik Informatika 87033 Tim Dosen 01
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
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.
File‐BasedProcessing
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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:
–
2014
Database dan Database Management System (DBMS).
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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).
o
2014
Fasilitas pengadaan umum (dengan query language) mengenai data.
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
mengganggu batasan keamanan dan integritas data yang telah didefinisikan.
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
keputusan stategis dan kebijakan mengenai data yang ada
2014
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
membuat
-
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
-

Second generation
-

Hierarchical and Network
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 )

Kebutuhan User Yang Kompleks Dapat Teratasi (Balanced conflicting requirements)
2014
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

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.
2014
9
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
2014
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
Lingkungan Basis Data
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 02
Kode MK Disusun Oleh 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
Tujuan dari Three-Level Architecture

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
2013
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
External Level

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. Masingmasing 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.
2013
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Selain itu juga menjelaskan mengenai alokasi ruang penyimpanan data dan index,
bagaimana perwujudan field-field yang disimpan, deskripsi record untuk penyimpanan
(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.
Differences between Three Levels of ANSI-SPARC Architecture
2013
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
User A1 User A2 User B1 User B2 User B3 Host Host Host Host Host L
*External *External External View A Schema A
Schemas and mapping built and maintained by the Database Administrator (DBA) External View B Schema B
External/Conceptual
mapping A
Conceptual External/Conceptual
mapping B
Conceptual View DBMS Schema
Conceptual/Internal
mapping A
Storage Structure Definition (Internal Schema) Stored Database (Internal View) *User Interface
Detail arsitektur sistem basis data
Data Independence
Logical Data Independence
2013

Menunjukkan kekebalan skema eksternal terhadap perubahan skema konseptual.

Perubahan skema konseptual (contoh : penambahan/penghapusan entity).
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Tidak memerlukan perubahan skema eksternal atau penulisan ulang program
aplikasi.
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.

2013
Data Manipulation Language (DML)
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Menyediakan operasi dasar manipulasi data pada data yang ada dalam Database, yaitu:

-
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.

2013
Graphics Generators
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Digunakan untuk mengambil data dari database, dan menampilkannya dalm bentuk
grafik, seperti ; bar chart, pie chart, line chart dan lainnya.

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
menginterpretasikan dan memperlakukan database.

Jenis-jenis Model data :


2013
Object-Based Data Models

Entity-Relationship

Semantic

Functional

Object-Oriented.
Record-Based Data Models

Relational Data Model

Network Data Model
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
memandang,
mengorganisir,


Hierarchical Data Model.
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.

Layanan utilitas.
2013
9
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Komponen software utama DBMS

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
kebentuk standar dari bahasa host.
2013
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

DDL Compiler, mengkonversikan pernyataan DDL kedalam sekumpulan tabel-tabel
yang berisikan meta-data. Tabel-tabel ini tersimpan di katalog sistem dan informasi
pengawasannya disimpan pada file header data.

Catalog Manager, mengatur pengaksesan dan memelihara katalog system.
Komponen Database Manager (DM)
2013
11
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Komponen software utama dalam DM :

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.

2013
Teleprocessing Topology
12
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
File-Server

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.


2013
Keuntungannya
:

Akses yang lebih luas terhadap database.

Meningkatkan performa.

Pengurangan biaya hardware.

Pengurangan biaya komunikasi.

Peningkatan konsistensi.
Client-Server Architecture
13
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

2013
Alternative Client-Server Topologies
14
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Summary Client – Server
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
architecture
2013
15
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
System Catalog

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
pengaksesan data sictionary, diantaranya

2013

extensibility of data;

integrity of data;

controlled access to data.
aturan
:
IRDS services interface
16
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
mengenai
penyimpanan
dan
Latihan
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
2013
17
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
Model Relasional Basis Data
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 03
Kode MK Disusun Oleh 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
kunci relasional
Relational Model Terminology

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.
Instances of Branch and Staff (part) Relations
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh Domain Atribut
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.
D1 X D2 = {(2, 1), (2, 3), (2, 5), (4, 1), (4, 3), (4, 5)}
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Himpunan bagian dari Cartesian product merupakan relasi, contoh
:
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.

Setiap sel (baris, kolom) dari relasi berisi satu nilai atomik.
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Setiap atribut memiliki nama yang berbeda.

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.

2014
Referential Integrity
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Jika terdapat foreign key dalam suatu relasi, maka nilai foreign key tersebut harus
sesuai (match) dengan nilai candidate key dari beberapa tuple pada database atau
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.

2014
Menyederhanakan operasi yang rumit pada relasi dasar.
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Merubah view (Updating View)

Seluruh update yang dilakukan pada relasi dasar harus secepatnya terlihat dalam
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
2014
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
SQL: QUERI SINGLE TABLE
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 04
Kode MK Disusun Oleh 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
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
DECIMAL(7,2));
2014
2)
INSERT INTO Staff VALUES (‘SG16’, ‘Brown’, 8300);
3)
SELECT staffNo, lName, salary
4)
FROM Staff WHERE salary > 10000;
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
ARCHAR(15),
salary
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 :
X/OPEN).
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
 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).
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
CR56
PG36
28-Apr-01
No Dining Room
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
CR62
Mary
Tregear
01224-196720
Flat
600
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
B002
56 Clover Dr
London
NW10 6EU
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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.
2014
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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 *
FROM Staff;
2014
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
FROM Viewing;
2014
9
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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;
2014
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
WHERE city = “London” OR city = “Glasgow”;
2014
11
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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)
Tampilkan seluruh manager dan supervisor.
2014
12
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
:
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
WHERE address LIKE ‘%Glasgow%’;
2014
13
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

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
ORDER BY salary DESC;
2014
14
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Ordering multiple kolom
Tampilkan daftar ringkasan properti berdasarkan tipe properti.
SELECT propertyNo, type, rooms, rent
FROM PropertyForRent
ORDER BY type;
2014
15
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Dari contoh diatas terdapat empat field. Untuk menyusun properti berdasarkan rent
o
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
SUM dan AVG hanya dapat digunakan pada field numerik.
2014
16
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Bagian dari COUNT(*), pertama setiap fungsi mengeliminasi null dan mengoperasikan
o
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.
Contoh berikut adalah salah
o
:
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
WHERE rent > 350;
2014
17
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
WHERE position = ‘Manager’;
2014
18
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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 singlevalued per group, dan clause SELECT hanya dapat mengandung
o
–
Nama kolom
–
Fungsi aggregate
–
Konstanta
–
Ekspresi terdiri dari kombinasi tersebut diatas.
:
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
GROUP BY.
2014
19
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
2014
20
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
c. menampilkan nama hotel yang harga sewanya diatas Rp. 1.000.000
2014
21
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
2014
22
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
SQL: QUERI MULTI TABLE
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 05
Kode MK Disusun Oleh 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
QUERY MULTI TABLE
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.
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh sintak
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
from namatabel1, namatabel2
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Nested queri
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
WHERE branchNo = ‘B003’;
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh:SubquerydenganAggregate
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).
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
 Subquery SELECT harus terdiri dari nama kolom tunggal atau ekspresi, kecuali untuk
subqueries yang menggunakan EXISTS.
 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:kegunaanIN
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
WHERE street = ‘163 Main St’));
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
ANY dan ALL
 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.
2014
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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;
2014
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh penggunaan non inner join
Tampilkan nama cabang dan stafnya yang tinggal diluar Paris
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)
2014
9
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Latihan
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
2014
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
SQL:
DATA DEFINITION LANGUAGE
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 06
Kode MK Disusun Oleh 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.
2014
1
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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 :
position
VARCHAR(10)
NOT
NULL
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
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
FROM Branch));
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

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.
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
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 :
CASCADE, menghapus baris dari parent table dan secara otomatis
o
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.
SET NULL, menghapus baris pada parent table dan menetapkan nilai foreign
o
key dalam child table menjadi NULL. Berlaku jika kolom foreign key
mempunyai qualifier NOT NULL.
SET DEFAULT, menghapus baris dari parent table dan menetapkan setiap
o
komponen foreign key dari child table menjadi defaultyang telah ditetapkan.
Berlaku jika kolom foreign key memliki nilai DEFAULT.
NO ACTION, menolak operasi penghapusan dari parent table. Merupakan
o
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
Contoh 2 :
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
FROM PropertyForRent
GROUP BY staffNo
HAVING COUNT(*) > 100))
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
staffNo
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
2014
7
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
seluruh objek yang terkait dengan skema yang telah didefinisikan sebelumnya. Jika
terjadi kegagalan operasi, maka DROP SCHEMA akan gagal juga.
Membuat table (CREATE TABLE)

Membuat tabel dasar digunakan format sbb :
CREATE TABLE TableName
{(colName dataType [NOT NULL] [UNIQUE]
[DEFAULT defaultOption]
[CHECK searchCondition] [,...]}
[PRIMARY KEY (listOfColumns),]
{[UNIQUE (listOfColumns),] […,]}
{[FOREIGN KEY (listOfFKColumns)
REFERENCES ParentTableName [(listOfCKColumns)],
[MATCH {PARTIAL|FULL}]
[ON UPDATE referentialAction]
[ON DELETE referentialAction ]] [,…]}
{[CHECK (searchCondition)] [,…] })

Membuat tabel dengan satu atau lebih kolom dengan tipe data tertentu.

Dengan NOT NULL, sistem akan menolak setia[ usaha untuk memasukan nilai NULL
kedalam kolom.

Dapat menspesifikasikan nilai DEFAULT untuk kolom.

Primary key harus selalu ditetapkan NOT NULL.

Clause FOREIGN KEY menetapkan FK bersama dengan aksi referensial.
Contoh - CREATE TABLE
CREATE DOMAIN OwnerNumber AS VARCHAR(5)
2014
8
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
CHECK (VALUE IN (SELECT ownerNo FROM PrivateOwner));
CREATE DOMAIN StaffNumber AS VARCHAR(5)
CHECK (VALUE IN (SELECT staffNo FROM Staff));
CREATE DOMAIN BranchNumber AS VARCHAR(5)
CHECK (VALUE IN (SELECT branchNo FROM Branch));
CREATE DOMAIN PropertyNumber AS VARCHAR(5);
CREATE DOMAIN Street AS VARCHAR(25);
CREATE DOMAIN City AS VARCHAR(15);
CREATE DOMAIN PostCode AS VARCHAR(8);
CREATE DOMAIN PropertyType AS VARCHAR(1);
CHECK (VALUE IN (‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ’M’, ‘S’));
CREATE DOMAIN PropertyRooms AS SMALLINT;
CHECK(VALUE BETWEEN 1 AND 15);
CREATE DOMAIN PRent AS DECIMAL(6,2)
2014
9
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
CHECK(VALUE BETWEEN 0 AND 9999.99);
CREATE TABLE PropertyForRent (
propertyNo
PropertyNumber
NOT NULL,
street
Street
NOT NULL,
city
City
NOT NULL,
postcode
PostCode
type
PropertyType
NOT NULL
DEFAULT 4,
rooms
PropertyRooms
NOT NULL
DEFAULT 4,
rent
PropertyRent
NOT NULL,
DEFAULT 600,
ownerNo
OwnerNumber
NOT NULL,
staffNo
StaffNumber
Constraint StaffNotHandlingTooMuch
CHECK (NOT EXIST( SELECT staffNo FROM PropertyForRent
GROUP BY staffNo
HAVING COUNT(*) > 100)),
branchNo
BranchNumber
NOT NULL,
PRIMARY KEY (propertyNo),
FOREIGN KEY (staffNo) REFERENCES Staff
ON DELETE SET NULL ON UPDATE CASCADE,
FOREIGN KEY (ownerNo) REFERENCES PrivateOwner
2014
10
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
ON DELETE NO ACTION ON UPDATE CASCADE,
FOREIGN KEY (branchNo) REFERENCES Branch
ON DELETE NO ACTION ON UPDATE CASCADE);
Nilai default ‘F’ untuk ‘Flat’ ditetapkan untuk tipe property kolom Type. Batasan untuk
kolom nomor staff ditetapkan untuk memastikan staff tidak menangani property lebih dari
100 unit. Primary key yang digunakan adalah PropertyNo.
StaffNo merupakan FK yang mengacu kepada tabel Staff, aturan penghapusan telah
ditetapkan yaitu jika record dari tabel Staff dihapus, maka nilai yang terkait dengan kolom
staff pada tabel PropertyForRent akan diisi dengan NULL. Untuk aturan peng-update-an,
jika staffNo dalam tabel staff diupdate, maka nilai yang terkait dalam kolom staffNo pada
tabel PropertyForRent akan di-update menjadi nilai yang baru.
OwnerNo merupakan FK yang mengacu pada tabel PrivateOwner. Aturan
penghapusan
NO
ACTION
berfungsi
untuk
mencegah
penghapusan
pada
tabel
PrivateOwner jika terdapat nilai OwnerNo yang sesuai dalam tabel PropertyForent. Untuk
aturan peng-update-an, jika OwnerNo di-update, maka nilai yang terkait dalam kolom
OwnerNo pada tabel PropertyForRent akan di-update menjadi nilai yang baru.
Merubah Table (ALTER TABLE)
2014

Menambahkan kolom pada tabel

Menghapus kolom dari tabel

Menambahkan batasan kolom

Menghapus batasan tabel

Menetapkan default untuk kolom

Menghapus default dari kolom
11
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh - ALTER TABLE
Ubah tabel Staff dengan menghapus default ‘Assistant’ untuk kolom position dan tetapkan
default untuk kolom sex menjadi (‘F’).
ALTER TABLE Staff
ALTER position DROP DEFAULT;
ALTER TABLE Staff
ALTER sex SET DEFAULT ‘F’;
Contoh - ALTER TABLE
Hapus batasan/constraint dari tabel PropertyForRent yang menetapkan bahwa tidak
diperbolehkan menangani lebih dari 100 unit properti pada saat yang sama. Tambahkan
kolom baru untuk tabel Client.
ALTER TABLE PropertyForRent
DROP CONSTRAINT StaffNotHandlingTooMuch;
ALTER TABLE Client
ADD prefNoRooms PRooms;
Menghapus Tabel (DROP TABLE)

Format penulisan :
DROP TABLE
DROP TABLE TableName [RESTRICT | CASCADE]
2014
12
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Jika ditetapkan RESTRICT, maka operasi penghapusan akan ditolak jika terdapat objek
lain yang terkait dengan objek yang akan dihapus. Sedangkan CASCADE, operasi
penghapusan akan dilaksanakan dan seluruh objek terkait akan dihapus juga.

Contoh :
Hapus sebuah tabel dan seluruh baris didalamnya
DROP TABLE PropertyForRent;
Latihan
1.
MEMBUAT TABEL Buatlah table dengan struktur sebagai berikut di dalam database TB_STAFF Field Name Data type Field Size Keterangan IDSTAFF Varchar2 5 Primary Key SNAMA Varchar2 30 SGAJI Numeric 9,2 TB_DIVISI Field Name Data Type Field Size Keterangan IDDIVISI Numeric 2 Primary Key DNAMA Varchar2 10 2014
13
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
2.
MENAMPILKAN STRUKTUR TABEL YANG SUDAH ADA Gunakan perintah DESCRIBE 3.
MENGINSERT DATA TB_STAFF IDSTAFF SNAMA SGAJI 00011 YOLANDA TANTYA 5540000
00013 ARIEF RAHMAN 870000 00015 TUBAGUS ALDI 2540000
00017 ZIDAN 4540000
00019 HAFIRA AINI 1970000
00021 HALIZA 780000 00031 FAISAL RAFIF 5400000
00012 AQILA RASIYAH 7500000
TB_DIVISI IDDIVISI
DNAMA 10 PRODUKSI 20 KEUANGAN 30 PERSONALIA 40 HUMAS 50 PENJUALAN 60 IT 00023 ALFATH MUBINAN 2300000
00014 SYARIFAH IZNA 1600000
4. MEMODIFIKASI STRUKTUR DATA Tambahkan field berikut sesuai dengan table yang sudah ditentukan dan definisikan constraintnya. 2014
14
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
TB_STAFF Field Name Data Type Field Size Keterangan SDIVISI Numeric 5 Foreign key (IDDIVISI) JENKEL Varchar2 9 TMPLHR Varchar2 25 TGLLHR Date TB_DIVISI Field Name Data Type Field Size Keterangan IDMANAGER Numeric Foreign key (IDSTAFF) 5 5.
Masukkan data baru untuk field baru TB_STAFF IDSTAFF SGAJI JENKEL TMPLHR TGLLHR SDIVISI 00011 YOLANDA TANTYA 5540000 PEREMPUAN JAKARTA 12‐12‐1978 50 00013 ARIEF RAHMAN 870000 MEDAN 23‐04‐1965 20 00015 TUBAGUS ALDI 2540000 LAKI‐LAKI JAKARTA 03‐09‐1977 40 00017 ZIDAN 4540000 LAKI‐LAKI BANDUNG 09‐10‐1989 70 00019 HAFIRA AINI 1970000 PEREMPUAN SURABAYA 22‐10‐1987 40 00021 HALIZA 780000 BOGOR 08‐08‐1988 20 00031 FAISAL RAFIF 5400000 LAKI‐LAKI SEMARANG 21‐01‐1981 60 2014
SNAMA 15
Basis Data
Devi Fitrianah
LAKI‐LAKI PEREMPUAN Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
00012 AQILA RASIYAH 00023 00014 7500000 PEREMPUAN TANGERANG 24‐06‐1980 10 ALFATH MUBINAN 2300000 LAKI‐LAKI JAKARTA 30‐07‐1984 30 SYARIFAH IZNA JAKARTA 26‐12‐1976 30 1600000 PEREMPUAN TB_DIVISI IDDIVISI DNAMA IDMANAGER 10 PRODUKSI 00012 20 KEUANGAN 00013 30 PERSONALIA 00023 40 HUMAS 00019 50 PENJUALAN 00011 60 IT 00031 6.
Tampilkan hasil masing‐masing tabel dengan data setelah disisipkan data baru 7.
Buatlah perintah‐perintah SQL untuk kebutuhan berikut dan tampilkan hasilnya. a. Tampilkan nama dan gaji dari pegawai‐pegawai divisi tertentu. b. Tampilkan nama dan gaji dari para manajer divisi. c. Tampilkan jumlah pegawai di masing‐masing divisi. d. Tampilkan rata‐rata gaji para pegawai di masing‐masing divisi. e. Tampilkan gaji terendah, gaji tertinggi, dan gaji rata‐rata seluruh pegawai f. Tampilkan nama pegawai beserta usianya diatas 30 tahun g. Tampilkan gaji setahun dari divisi produksi 2014
16
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
2014
17
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
SQL:
DATA DEFINITION LANGUAGE
VIEW DAN KONTROL AKSES
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 07
Kode MK Disusun Oleh 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.
Views

View merupakan hasil dinamik dari satu atau lebih operasi relasional yang
dioperasikan pada relasi dasar untuk menghasilkan relasi lain.

View merupakan relasi virtual yang tidak perlu ada dalam database tetapi dihasilkan
dari permintaan – permintaan khusus para user pada saat itu.

Isi dari view didefinisikan sebagai query pada satu atau lebih relasi dasar.

Dengan view resolution (pemecahan), operasi apapun pada view secara otomatis di
terjemahkan kedalam operasi pada relasi mana view tersebut dihasilkan.

Dengan view materialization (perwujudan), view disimpan sebagai tabel sementara,
yang diatur sebagai tabel dasar utama yang telah diubah.
SQL – Membuat view (CREATE VIEW)

Format penulisan CREATE VIEW
:
CREATE VIEW ViewName [ (newColumnName [,...]) ]
AS subselect [WITH [CASCADED | LOCAL] CHECK OPTION]

Dapat menetapkan nama untuk setiap kolomnya.

Jika nama kolom didefinisikan, akan memiliki jumlah item yang sama dengan jumlah
kolom yang dihasilkan oleh subselect.

Jika nama kolom tidak didefinisikan, maka setiap kolom akan memiliki nama sesuai
dengan kolom dalam subselect.

Nama tabel harus ditentukan jika terdapat nama kolom yang sama (ambiguity).

Subselect dikenal juga sebagai defining query. Penggunaan WITH CHECK OPTION
memastikan jika tidak ada baris yang memenuhi kondisi clause WHERE pada defining
query, maka tidak akan ditambahkan pada tabel dasar yang ditetapkan.
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Memerlukan hak SELECT pada semua tabel yang ditunjuk dalam subselect dan hak
USAGE pada domain yang digunakan dalam kolom yang ditunjuk
Contoh – Membuat view horisontal (Create Horizontal View)
Buatlah view, sehingga manager dikantor cabang B003 hanya dapat melihat detail staff
yang bekerja di kantor cabang tersebut.
CREATE VIEW Manager3Staff
AS
SELECT *
FROM Staff
WHERE branchNo = ‘B003’;
Contoh – Membuat view vertikal (Create Vertical View)
Buatlah view detail staff dikantor cabang B003 tidak termasuk gaji.
CREATE VIEW Staff3
AS SELECT staffNo, fName, lName, position, sex
FROM Staff
WHERE branchNo = ‘B003’;
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh – View gabungan dan dikelompokan (Grouped and Joined Views)
Buatlah view dari staff yang mengatur properti untuk disewakan, termasuk nomor kantor
cabang tempat mereka bekerja, nomor staff dan jumlah properti yang ditangani.
CREATE VIEW StaffPropCnt (branchNo, staffNo, cnt)
AS SELECT s.branchNo, s.staffNo, COUNT(*)
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo;
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
SQL – Menghapus View (DROP VIEW)

Format penulisan DROP VIEW :
DROP VIEW ViewName [RESTRICT | CASCADE]

Akan menyebabkan terhapusnya pendefinisian view dari database.

Contoh :
DROP VIEW Manager3Staff;

Jika CASCADE didefinisikan, maka semua objek yang terkait/terhubung akan dihapus.
Misalkan, view yang didefinisikan dari view yang dihapus.

Jika RESTRICT (Default) didefinisikan, maka jika terdapat objek lain yang bergantung
pada view yang akan dihapus, perintah penghapusan view akan ditolak.
View Resolution
Carilah jumlah properti yang ditangani oleh setiap anggota staff dari kantor cabang B003.
SELECT staffNo, cnt
FROM StaffPropCnt
WHERE branchNo = ‘B003’
ORDER BY staffNo;
View resolution menggabungkan query diatas dengan defining query dari view StaffPropCnt
sbb
:
(a)
Nama kolom view dalam daftar SELECT diterjemahkan kedalam nama kolom yang
dimaksud dalam defining query:
SELECT s.staffNo As staffNo, COUNT(*) As cnt
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
(b)
Nama view dalam FROM digantikan dengan daftar FROM yang ditunjukan dalam
defining query:
FROM Staff s, PropertyForRent p
(c)
WHERE dari query user dikombinasikan dengan WHERE dari defining query
menggunakan AND:
WHERE s.staffNo = p.staffNo AND branchNo = ‘B003’
(d)
Clause GROUP BY dan HAVING disalin dari defining query:
GROUP BY s.branchNo, s.staffNo
(e)
ORDER BY disalin dari query dengan nama kolom view diterjemahkan kedalam nama
kolom defining query :
ORDER BY s.staffNo
(f)
Hasil akhir penggabungan query, dieksekusi untuk menampilkan hasil
SELECT s.staffNo, COUNT(*)
FROM staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo AND branchNo = ‘B003’
GROUP BY s.branchNo, s.staffNo
ORDER BY s.staffNo;
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
:
Pembatasan pada View (Restrictions on Views)
SQL menentukan beberapa batasan pada pembuatan dan penggunaan view
(a)
:
Jika kolom dalam view berdasarkan pada fungsi aggregate, maka :
 Kolom hanya boleh muncul dalam clause SELECT dan ORDER BY dari query
yang mengakses view.
 Kolom tidak dapat digunakan dalam WHERE maupun argumen untuk fungsi
aggregate dalam query yang berasal dari view.
 Contoh, query berikut adalah salah
:
SELECT COUNT(cnt)
FROM StaffPropCnt;
Dan
SELECT *
FROM StaffPropCnt
WHERE cnt > 2;
(b)
View yang dikelompokkan tidak akan pernah digabungkan dengan tabel dasar atau
view.

Contoh
:
view StaffPropCnt merupakan view yang dikelompokkan, oleh
sebab itu usaha untuk menggabungkan view ini atau tabel lainnya akan gagal.
View Updatability

Seluruh update yang dilakukan pada tabel dasar akan terlihat dalam semua view yang
mengandung tabel dasar tersebut.

Maka
dapat
dikatakan,
jika
view
di-update/diubah
menggambarkan /menampilkan perubahannya.
2014
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
maka
tabel
dasar
akan

Perhatikan view StaffPropCnt, jika akan dimasukan record pada kantor cabang B003,
SG5 mengatur 2 properti, dapat dituliskan :
INSERT INTO StaffPropCnt
VALUES (‘B003’, ‘SG5’, 2);

Maka harus memasukan 2 record ke tabel PropertyForRent, yang menampilkan properti
mana yang diatur oleh SG5, tetapi tidak diketahui properti mana, yaitu tidak diketahui
primary key dari property yang dimaksud.

Jika merubah pendefinisian view dan mengganti count dengan jumlah properti yang
sebenarnya, sbb :
CREATE VIEW StaffPropList (branchNo, staffNo, propertyNo)
AS SELECT s.branchNo, s.staffNo, p.propertyNo
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo;

Lalu masukan record
:
INSERT INTO StaffPropList
VALUES (‘B003’, ‘SG5’, ‘PG19’);

Maka masih akan tetap bermasalah, karena dalam tabel PropertyForRent, seluruh kolom
kecuali postcode dan staffNo tidak memperbolehkan NULL, dan tidak dapat memasukan
nilai pada kolom-kolom NON NULL.

ISO menetapkan, suatu view harus dapat di-update dalam sistem yang sesuai dengan
standar.

Sebuah view dapat di-update jika dan hanya jika
:
o
DISTINCT tidak ditetapkan/digunakan.
o
Setiap elemen dalam daftar SELECT dari defining query merupakan nama
kolom dan tidak ada kolom yang muncul lebih dari satu kali
2014
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
o
Clause FORM ditetapkan hanya 1 tabel, tidak termasuk view yang berasal
dari join, union, intersection atau difference.
o
Tidak terdapat nested SELECT yang mengacu ke outer tabel.
o
Tidak terdapat clause GROUP BY atau HAVING.
o
Setiap baris yang ditambahkan melalui view harus tidak melanggar batasan
integritas dari tabel dasar.
Updatable View
Untuk view yang dapat diubah, DBMS harus berkemampuan untuk menelusuri kebelakang
setiap baris atau kolom pada baris atau kolom dalam tabel asal/sumber.
WITH CHECK OPTION

Suatu baris muncul dalam view karena memenuhi kondisi dalam clause WHERE dari
defining query.

Jika baris berubah dan tidak lagi memenuhi kondisi, maka akan dihilangkan dari view.

Baris baru akan muncul dalam view jika insert/update pada view memenuhi kondisi
WHERE.

Baris yang masuk atau keluar dari view disebut baris migrasi (migrating rows).

WITH CHECK OPTION menghalangi baris migrasi keluar dari view. Terdapat qualifier
optional LOCAL/CASCADED.

Jika ditetapkan WITH LOCAL CHECK OPTION, maka setiap baris yang diinsert/update pada view ini dan setiap view yang didefinisikan secara langsung
maupun tidak langsung pada view ini harus tidak menyebabkan baris hilang dari view
kecuali baris dihilangkan dari derived view/table.

JIKA ditetapkan WITH CASCADED CHECK OPTION (Default), maka setiap baris
yang di-insert/update pada view ini dan pada setiap view yang didefinisikan secara
langsung ataupun tidak langsung pada view ini harus tidak menyebabkan baris hilang
dari view.
Contoh - WITH CHECK OPTION

2014
Perhatikan statemen dibawah ini
9
Basis Data
Tim Dosen
:
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
CREATE VIEW Manager3Staff
AS SELECT *
FROM Staff
WHERE branchNo = ‘B003’
WITH CHECK OPTION;

Misalkan salah satu baris akan di-update nomor cabangnya dari B003 menjadi B005,
sbb
:
UPDATE Manager3Staff
SET branchNo = ‘B005’
WHERE staffNo = ‘SG37’;

Penulisan WITH CHECK OPTION pada definisi view akan menggagalkan perintah
diatas, karena dapat menyebabkan baris bermigrasi.

Juga tidak dapat memasukan baris kedalam view jika nomor cabang tidak sama
dengan B003, contoh
:
INSERT INTO Manager3Staff
VALUES (‘SL15’, ‘Mary’, ‘Black’ ‘Assistant’, ‘F’, DATE’1967-06-21’, 8000, ‘B002’);

Penulisan WITH CHECK OPTION pada definisi view akan mencegah pemasukkan
data ke tabel Staff .

Jika Manager3Staff didefinisikan tidak pada tabel Staff langsung tetapi pada view lain
dari tabel Staff :
CREATE VIEW LowSalary
AS SELECT * FROM Staff WHERE salary > 9000;
2014
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
CREATE VIEW HighSalary
AS SELECT * FROM LowSalary
WHERE salary > 10000
WITH LOCAL CHECK OPTION;
CREATE VIEW Manager3Staff
AS
SELECT * FROM HighSalary
WHERE branchNo = ‘B003’;

Jika akan dilaksanakan update sbb :
UPDATE Manager3Staff
SET salary = 9500
WHERE staffNo = ‘SG37’;

Maka perintah diatas akan gagal, walaupun update akan menyebabkan baris hilang
dari HighSalary, tetapi tidak akan hilang dari LowSalary.

Jika update mencoba untuk menetapkan salary = 8000, update akan dilaksanakan dan
baris tersebut tidak lagi menjadi bagian dari LowSalary.

Jika HighSalary ditetapkan WITH CASCADED CHECK OPTION, penetapan salary
menjadi 9500 atau 8000 akan ditolak karena menyebabkan baris dihilangkan dari
HighSalary.

Untuk mengatasi penyimpangan seperti ini, setiap view harus dibuat menggunakan
WITH CASCADED CHECK OPTION.
Keuntungan dari Views

Kemandirian data (Data independence)

Ketepatan (Currency)

Meningkatkan keamanan (Improved security)
2014
11
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Mengurangi kerumitan (Reduced complexity)

Kenyamanan (Convenience)

Customization

Integritas data (Data integrity)
Disadvantages of Views

Pembatasan update (Update restriction)

Pembatasan struktur (Structure restriction)

Performance
View Materialization

View Materialization, yaitu menyimpan sebuah view sebagai tabel sementara
(temporary) dalam database pada saat view di-query-kan pertama kali.

Query yang berdasarkan materialized view akan lebih cepat dihasilkan daripada
membuat ulang view setiap saat.

Materialized view bermanfaat dalam aplikasi baru seperti data warehousing,
replication server, data visualization, dan mobile system.

Pemeriksaan batasan integritas dan optimisasi query juga merupakan manfaat dari
materialized view.

Kesulitan dari pendekatan ini adalah pemeliharaan ketepatan view ketika tabel dasar
diubah.

Proses perubahan (updating) suatu materialized view sebagai respon terhadap
perubahan data sumber disebut View maintenance .

Tujuan utama dari view maintenance adalah menampilkan hal-hal yang berubah agar
ketepatan view selalu terjaga.

Perhatikan view berikut :
CREATE VIEW StaffPropRent(staffNo)
AS SELECT DISTINCT staffNo
FROM PropertyForRent
2014
12
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
WHERE branchNo = ‘B003’ AND
rent > 400;

Hasil dari perintah diatas:
staffNo
SG37
SG14

Jika akan dimasukan record baru ke tabel PropertyForRent dimana rent <= 400 maka
view tidak akan berubah.

Jika akan dimasukan data (‘PG24’, … , 550, ‘CO40’, ‘SG19’, ‘B003’) ke tabel
PropertyForRent, maka baris baru akan muncul pada materialized view.

Tetapi jika data yang akan dimasukan adalah (‘PG54’, …, 450, ‘CO89’, ‘SG37’, ‘B003’)
maka tidak akan terjadi penambahan baris karena ‘SG37’ sudah ada dalam
materialized view.
Access Control - Authorization Identifiers and Ownership

Authorization identifier merupakan identifier yang digunakan untuk membuat
identifikasi dari user. Biasanya memiliki password.

Digunakan untuk menetapkan objek apa yang boleh digunakan user dan operasi apa
yang boleh dilakukan pada objek tersebut.

Setiap object yang dibuat didalam SQL memiliki Owner, seperti yang ditetapkan dalam
clause AUTHORIZATION dari skema objek yang dituju.

Owner adalah orang yang mengetahui tentang keberadaan objek dan operasi apa saja
yang dapat dilakukan.
2014
13
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Privileges (Hak)

Aksi yang dapat dilakukan oleh user terhadap tabel dasar atau view
o
SELECT
Mengambil (Retrieve) data dari tabel
o
INSERT
Memasukan (Insert) baris baru kedalam tabel
o
UPDATE Merubah (Modify) baris dari data dalam tabel
o
DELETE
o
REFERENCES
:
Menghapus baris data dari tabel
Kolom
referensi
(Reference
columns)
dari
tabel
yang
disebutkan dalam integrity constraint.
o
USAGE
Menggunakan
domain,
collation,
character
set,
dan
translation.

Dapat membatasi INSERT/UPDATE/REFERENCES untuk kolom yang ditentukan.

Pemilik tabel harus memberikan wewenang kepada user lain hak-hak yang dianggap
perlu dengan menggunakan perintah GRANT.

Untuk membuat view, user harus mempunyai hak SELECT pada seluruh tabel yang
digunakan untuk membuat view dan hak REFERENCE pada kolom tertentu.
GRANT

Format penulisan GRANT
GRANT
:
{PrivilegeList | ALL
PRIVILEGES}
ON
ObjectName
TO
{AuthorizationIdList | PUBLIC}
[WITH GRANT OPTION]

PrivilegeList berisi satu atau lebih hak (privilege) yang dipisahkan dengan koma.

ALL PRIVILEGES memberikan seluruh hak (privilege) kepada user.

PUBLIC memungkinkan akses diberikan ke user saat ini dan selanjutnya.
2014
14
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

ObjectName dapat berupa tabel dasar, view, domain, character set, collation
(pemeriksaan) atau translation (penerjemahan).

WITH GRANT OPTION memungkinkan privilege diberikan oleh seorang user ke user
lainnya.
Contoh - GRANT

Berikan hak penuh kepada manager untuk menggunakan tabel Staff
:
GRANT ALL PRIVILEGES
ON Staff
TO Manager WITH GRANT OPTION;

Berikan user Personnel dan Director hak SELECT dan UPDATE pada kolom salary
dari tabel Staff :
GRANT SELECT, UPDATE (salary)
ON Staff
TO Personnel, Director;
Contoh- GRANT Specific Privileges to PUBLIC

Berikan seluruh user hak SELECT pada tabel Branch.
GRANT SELECT
ON Branch
TO PUBLIC;
2014
15
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
REVOKE

REVOKE, mengambil kembali hak yang diberikan oleh statemen GRANT, format
penulisan REVOKE sbb
:
REVOKE [GRANT OPTION FOR]
{PrivilegeList | ALL PRIVILEGES}
ON ObjectName
FROM {AuthorizationIdList| PUBLIC}
[RESTRICT | CASCADE]

ALL PRIVILEGES, seluruh hak yang diberikan untuk user.

GRANT OPTION FOR memungkinkan hak (privilege) yang diberikan via WITH
GRANT OPTION dari GRANT akan diambil terpisah.

REVOKE akan gagal, jika hasil dalam objek yang diabaikan, seperti view, kecuali
digunakan keyword CASCADE.

Hak yang diberikan kepada user oleh user lainnya tidak berpengaruh
2014
16
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh - REVOKE Specific Privileges

Ambil hak SELECT pada tabel Branch dari seluruh user
REVOKE SELECT
ON Branch
FROM PUBLIC;

Ambil seluruh hak yang telah diberikan pada Director untuk tabel Staff.
REVOKE ALL PRIVILEGES
ON Staff
FROM Director;
2014
17
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Latihan
Buka kembali latihan anda pada skema HOTEL. Pada latihan kali ini anda diminta untuk membangun database untuk skema hotel secara baik dan benar. 1. Perhatikan constraint yang diminta: a. Tipe harus salah satu dari: Single, Double, atau Family. b. Harga harus antara £ 10 dan £ 100. c. roomNo harus antara 1 dan 100. d. dateFrom dan dateTo harus lebih besar dari tanggal hari ini. e. Kamar tidak available jika sudah di pesan f. tamu yang sama tidak dapat memesan lebih dari 1 pemesanan (booking) 2. Buat view/tampilan yang berisi nama hotel dan nama‐nama tamu yang sedang menginap di hotel 3. Buat view/tampilan yang berisi item guest beserta harga yang dibayarkan ketika check out dari Hotel Fragrance hari ini (beri nama view = TamuKeluarHariIni) 4. Beri wewenang kepada manajer dan front office untuk mengakses 2 tampilan ini dengan priviledge memberikan wewenang yang sama pada user lain. 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
2014
18
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
Pemodelan Entitas-Relasi
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 08
Kode MK Disusun Oleh 87031 Tim Dosen Abstract
Kompetensi
Modul ini berisi materi tentang
model entitas dan hubungannya
beserta atribut yang terdapat dalam
entitas
Mahasiswa mampu menjelaskan
tentang
model
entitas
dan
komponen-komponen
pemodelannya
Tujuan Pemodelan

Bagaimana menggunakan model Entity-Relationship (ER) dalam desain database.

Konsep dasar dikaitkan dengan model ER.

Teknik pendiagraman untuk menampilkan model ER dengan menggunakan Unified
Modelling Language (UML).

Bagaimana mengidentifikasi dan memecahkan masalah dengan model ER yang dikenal
dengan connection trap.

Bagaimana membuat sebuah model ER dari spesifikasi persyaratan.
ER Diagram of Branch View of DreamHome
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Konsep Model ER
Entity types
Konsep dasar dari Model ER adalah Entity Types, yaitu kumpulan dari objek-objek
dengan sifat (property) yang sama, yang di identifikasi oleh enterprise mempunyai
eksistensi yang independen. Keberadaannya dapat berupa fisik maupun abstrak.
Entity occurrence, yaitu pengidentifikasian object yang unik dari sebuah type entity.
Setiap entitas di identifikasikan dan disertakan property-nya.
Contoh dari type entity
Diagram ER dari type entity Staff dan Branch
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Relationship types
Kumpulan keterhubungan yang mempunyai arti (meaningful associations) antara
type entitas yang ada.
Relationship occurrence, yaitu keterhubungan yang diidentifikasi secara unik yang
meliputi keberadaan tiap type entitas yang berpartisipasi.
Contoh :
Diagram ER Relationship Branch Has Staff
Derajat Relationship
Yaitu jumlah entitas yang berpartisipasi dalam suatu relationship. Derajat relationship
terdiri dari

:
Binary relationship, keterhubungan antar dua type entitas. Contoh binary relationship
antara PrivateOwner dengan PropertyForRent yang disebut POwns.
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Ternary relationship, keterhubungan antar tiga type entitas. Contoh Ternary
Relationship yang dinamakan Registers. . Relasi ini melibatkan tiga tipe entity yaitu
Staff, Branch dan Client. Relationship ini menggambarkan staff mendaftarkan client
pada branch.

Quaternary relationship, keterhubungan antar empat type entitas. Contoh Quaternary
Relationship yang dinamakan Arranges. Relasi ini melibatkan 4 entity yaitu Buyer,
Solicitor, Financial Intstuttion dan Bid. Relasi ini menggambarkan buyer, diberi
masukan oleh Solicitor, dan didukung oleh Financial Institution, melakukan
penawaran (bid).

Unary relationship, keterhubungan antar satu type entitas, dimana type entitas
tersebut berpartisipasi lebih dari satu kali dengan peran yang berbeda. Kadang
disebut juga recursive relationship. Relationship dapat diberikan role names untuk
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
meng-identifikasikan keterkaitan type entitas dalam relationship. Contoh entitas Staff
yang berperan menjadi supervisor dan staff yang di-supervisor-i.
Attributes
Merupakan sifat-sifat (property) dari sebuah entity atau type relationship. Contohnya:
sebuah entity Staff digambarkan oleh attribute staffNo, name, position dan salary.
Attribute Domain adalah himpunan nilai yang diperbolehkan untuk satu atau lebih
atribut. Macam-macam atribut

:
Simple Attribute, yaitu atribut yang terdiri dari satu komponen tunggal dengan
keberadaan yang independen dan tidak dapat dibagi menjadi bagian yang lebih kecil
lagi. Dikenal juga dengan nama Atomic Attribute.
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Composite Attribute, yaitu atribut yang terdiri dari beberapa komponen, dimana
masing-masing komponen memiliki keberadaan yang independen. Misalkan atribut
Address dapat terdiri dari Street, City, PostCode.

Single-valued Attribute, yaitu atribut yang mempunyai nilai tunggal untuk setiap
kejadian. Misalnya entitas Branch memiliki satu nilai untuk atribut branchNo pada
setiap kejadian.

Multi-valued Attribute, yaitu atribut yang mempunyai beberapa nilai untuk setiap
kejadian. Misal entitas Branch memiliki beberapa nilai untuk atribut telpNo pada
setiap kejadian.

Derived Attribute, yaitu atribut yang memiliki nilai yang dihasilkan dari satu atau
beberapa atribut lainnya, dan tidak harus berasal dari satu entitas.
Keys

Candidate Key, yaitu jumlah minimal atribut-atribut yang dapat meng-identifikasikan
setiap kejadian/record secara unik.

Primary Key, yaitu Candidate key yang dipilih untuk meng-identifikasikan etiap
kejadian/record dari suatu entitas secara unik.

Composite Key, yaitu Candidate key yang terdiri dari dua atau lebih atribut.
ER Diagram of Staff and Branch Entities and their Attributes
2014
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Strong dan Weak Entity Types
Strong Entity Type, yaitu entitas yang keberadaannya tidak bergantung pada entitas
lain sedangkan Weak Entity Type, adalah entitas yang keberadaannya bergantung pada
entitas lain. Strong Entity Type terkadang disebut dengan parent, owner dominant dan Weak
Entity Type disebut child, dependent, subordinate.
Atribut pada Relationship
Relationship Advertises dengan atribut-atributnya
2014
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Structural Constraints
Batasan utama pada relationship disebut multiplicity, yaitu jumlah (atau range) dari
kejadian yang mungkin terjadi pada suatu entitas yang terhubung ke satu kejadian dari
entitas lain yang berhubungan melalui suatu relationship.
Relationship yang paling umum adalah binary relationship. Macam-macam binary
relationship yaitu:

one-to-one (1:1)
Relationship Staff Manages Branch
Multiplicity dari relationship Staff Manages Branch (1:1)
2014
9
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

one-to-many (1 : *)
Relationship dari Staff Oversees PropertyForRent
Multiplicity dari relationship Staff Oversees PropertyForRent (1:*)
2014
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

many-to-many (* : *)
Relationship Newspaper Advertises PropertyForRent
Multiplicity dari relationship Newspaper Advertises PropertyForRent (*:*)
2014
11
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Multiplicity for Complex Relationships
Yaitu jumlah (atau range) dari kejadian yang mungkin dari suatu entitas dalam n-ary
relationship ketika nilai entitas yang lain (n-1) diketahui.
Ternary relationship Registers dengan nilai untuk entitas Staff dan Branch diketahui
Multiplicity dari Ternary relationship Registers
Ringkasan batasan Multiplicity
2014
12
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Multiplicity dibentuk dari 2 macam batasan pada relationship : cardinality dan participation.

Cardinality, menjelaskan jumlah maksimum dari kejadian relationship yang mungkin
untuk entitas yang berpartisipasi didalam relationship tersebut.

Participation, menetapkan apakan seluruh atau sebagian entitas yang berpartisipasi
dalam suatu relationship.
Multiplicity sebagai batasan Cardinality dan Participation
2014
13
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Latihan
1. Dari skema Dreamhome, tentukan mana saja relasi entitas yang termasuk kedalam a. Unary b. Binary c. Ternary d. Quarterary 2. Masih dari skema Dreamhome, tentukan mana saja atribut yang termasuk kedalam a. Simple b. Composite c. Single valued d. Multi valued e. Derived 3. Jelaskan bagaimana multiplicity dapat merepresentasikan kardinalitas dan partisipasi 4. Berikan sebuah contoh dari relasi yang dapat memiliki atribut 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
2014
14
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
ERD & CLASS DIAGRAM
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 09
Kode MK Disusun Oleh 87031 Tim Dosen Abstract
Kompetensi
Modul ini berisi materi tentang
pembuatan diagram ERD dan
Class Diagram
Mahasiswa
mampu
menggambarkan ERD dan Class
Diagram dari sebuah studi kasus
yang diberikan
Diagram Entitas Relasi
Dari yang sudah kita bahas pada modul sebelumnya mengenai pemodelan entitas dan
relasi, selanjutnya kita akan membahas bagaimana membangun sebuah diagram
keterhubungan antara entitas dan relasi. Diagram ini merupakan representasi dari
pemodelan data pada basis data yang dibangun. Diagram ini merupakan salah satu tools
atau alat yang biasa digunakan oleh Database administrator dan programmer sebagai
media untuk mendeskripsikan model basis data yang digunakan dalam sistem.
Dalam perancangan basis data terdapat dua pendekatan yang dapat digunakan.
Pendekatan statis dan dinamis. Pendekatan statis seringkali digunakan ERD sebagai
pemodelannya, sementara untuk pemodelan yang dinamis digunakan Class Diagram. Tetapi
keduanya sama-sama memodelkan struktur data didalam sistem. Class diagram
merepresentasikan aspek dinamis dari sebuah sistem, baik dari sisi struktur maupun
behavior, sementara ERD hanya memperlihatkan struktur statis dari sistem.
Seperti yang telah kita ketahui bahwa ERD memiliki elemen-elemen diagram, yaitu entitas,
relasi, atribut. Dari sebuah deskripsi sistem, yang pertama harus dilakukan adalah
mengidentifikasi entitas, relasi antar entitas dan atribut dari masing-masing entitas.
Langkah-langkah membangun sebuah ERD adalah:
1. Identifikasi entitas
2. Tentukan relasi
3. Gambar ERD awal
4. Tentukan kardinalitas
5. Tentukan kunci primer
6. Tentukan key based ERD
7. Tentukan atribut
8. Gambar ERD secara menyeluruh
Class Diagram
Pada class diagram kita terlebih dahulu harus mengetahui elemen-elemen dari class
diagram:
1. Class, merupakan konsep yang umum yang biasanya digambarkan dengan kotak.
Sebuah class menggambarkan atribut struktural dan karakterisitik tingkah laku dari
konsep didalamnya.
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh sebuah class
2. Asosiasi, merupakan hubungan berarti antara class, direpresentasikan dengan garis.
Contoh sebuah asosiasi
Asosiasi terdapat dua jenis ada yang binary asosiasi dan ada pula yang n-ary asosiasi
dimana menghubungkan dengan lebih dari dua class.
Contoh asosiasi n-ary
Terdapat agregasi, yang merupakan relasi ”has-a”
Komposisi, merupakan relasi ”is-composed-of”
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Generalisasi, merupakan relasi ”is-a-kind-of”
Dependensi, class sumber bergantung pada class target
Realisasi, class mendukung semua operasi dari class target tetapi tidak semua atribut
maupun asosiasi
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Asosiasi class
3. Atribut merupakan elemen berikut dari class diagram setelah class dan asosiasi.
Atribut merupakan deskripsi dari class dengan karakteristik data serupa.
4. Operasi merupakan apa yang dapat dilakukan oeh objek ini dan aksi yang dilakukan
adalah yang relevan terhadap analisis. Operasi biasa juga disebut sebagai method.
Setelah mengetahui elemen dari class diagram, selanjutnya adalah membangun class
diagram dari sebuah deskripsi sistem. Langkah-langkah dari membangun sebuah class
diagram adalah:
1. Identifikasi class
2. Tentukan asosiasi
3. Gambar class diagram awal
4. Tentukan multiplicity
5. Tentukan atribut
6. Tentukan tingkah laku atau method dari class
7. Periksa kembali class diagram
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Latihan
Universitas Maju Jaya adalah sebuah universitas yang memiliki beberapa fakultas. Setiap
fakultas dipimpin oleh seorang dekan dan minimal memiliki satu program studi yang
dikepalai oleh seorang kaprodi. Sebuah prodi minimal memiliki seorang dosen tetap dan
dosen tidak tetap. Setiap dosen tetap ditugaskan pada 1 fakultas, tetapi ada pula yang
ditugaskan pada 2 atau lebih fakultas. Setiap dosen tetap mengajar matakuliahnya, atau ada
juga dosen tetap yang tidak mengajar, melainkan hanya melakukan penelitian. Setiap
matakuliah diajar oleh lebih dari 1 pengajar. Dari dokumen didapatkan informasi tentang
nama fakultas, nama dosen, id dosen, nama matakuliah, jadwal kuliah, semester
penyelenggaraan kuliah tersebut, fakultas dan program studi dari dosen yang mengajar,
fakultas dan program studi dari kuliah yang diselenggarakan.
Dari deskripsi diatas anda diminta untuk membuat sebuah rancangan pemodelan data
dengan ERD dan class diagram
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
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
Normalisasi
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 10
Kode MK Disusun Oleh 87031 Tim Dosen Abstract
Kompetensi
Modul ini berisi materi tentang data
redundansi, konsep anomaly dan
ketergantungan fungsionalitas
Mahasiswa mampu menjelaskan
konsep tentang data yang tidak
mengandung
redundansi
serta
dapat mengidentifikasi anomaly dari
data
dan
memahami
konsep
ketergantungan fungsionalitas
Normalisasi

Tujuan utama dalam pengembangan model data logical pada sistem database relasional
adalah untuk menciptakan representasi akurat suatu data, keterhubungannya dan
batasan-batasannya.

Untuk mencapai tujuan ini, maka harus ditetapkan/diidentifikasi sekumpulan relasi.

Empat bentuk normal yang biasa digunakan yaitu, first normal form (1NF), second
normal form (2NF) dan third normal form (3NF), dan Boyce–Codd normal form (BCNF).

Berdasarkan pada functional dependencies antar atribut dalam relasi

Sebuah relasi dapat dinormalisasi kedalam bentuk tertentu untuk mengatasi
kemungkinan terjadinya pengulangan dari update yang tidak baik.

Normalisasi adalah suatu teknik untuk menghasilkan sekumpulan relasi dengan sifatsifat (properties) yang diinginkan, memenuhi kebutuhan data pada enterprise.
Data Redundancy

Tujuan utama dari desain database relasional adalah untuk mengelompokkan atributatribut kedalam relasi-relasi sehingga meminimalisasi redundansi data dan mengurangi
penggunaan tempat penyimpanan yang dibutuhkan oleh sebuah relasi dasar.

Masalah-masalah
yang
terkait
dengan
redundansi
dapat
membandingkan relasi Staff dan Branch dengan relasi StaffBranch.
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
dijelaskan
dengan

Relasi StaffBranch memiliki data redundan, yaitu detail dari branch dituliskan berulangulang untuk setiap staff.

Sebaliknya, informasi mengenai branch muncul hanya satu kali pada relasi Branch dan
hanya branchNo saja yang diulang dalam relasi Staff, untuk merepresentasikan dimana
setiap staff tersebut bekerja.
Update Anomalies

Relasi yang mengandung informasi yang redundan dapat diakibatkan oleh
update
anomalies.

Beberapa tipe dari update anomalies, diantaranya
o
:
Insertion: anomaly yang terjadi apabila terdapat penyisipan baris baru pada table,
(adanya PK yang kosong)
o
Deletion: anomaly yang terjadi apabila terdapat penghapusan baris dari table,
(ada informasi yang semestinya tidak hilang menjadi hilang bersamaan
dihapusnya sebuah baris dalam tabel)
o
Modification: anomaly yang terjadi apabila terdapat perubahan pada sebuah
baris saja, tanpa merubah sisa baris dengan definisi yang sama.
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Pada contoh dari table staffBranch dapat dilihat anomaly-anomaly sebagai berikut:
o
Anomaly insertion, apabila disisipkan sebuah baris staff baru, maka atribut
yang akan disisipkan hanya staffno, sname, posisition dan salary. Padahal
pada table tersebut PK adalah staffno dan Branchno. Maka disini terdapat
anomaly bahwa terdapat PK yang kosong.
o
Anomaly deletion, apabila terdapat staff yang mengundurkan diri, yaitu Mary
Howe. Ketika menghapus informasi tentang Mary Howe, maka satu baris
akan ikut terhapus, demikian pula informasi tentang cabang yang ada di
Glasgow. Sehingga informasi cabang tidak lagi menyimpan informasi tentang
cabang Glasgow.
o
Anomali update, apabila kita hendak mengganti informasi pada satu field.
Tetapi karena terdapat redundansi maka ketika diupdate hanya terjadi pada 1
baris saja, sedangkan baris-baris yang lain tidak ikut diupdate sehingga
menimbulkan inkonsistensi.

Untuk mengatasi anomalies ini dapat dilakukan decomposotion pada relasi dasar.
Terdapat dua sifat Decomposition yaitu :
 Lossless-join
Memungkinkan kita menemukan suatu instance relasi dasar dari instance koresponden
dalam relasi yang lebih kecil.
 Dependency Preservation Properties
Memungkinkan kita untuk mengadakan batasan pada relasi dasar dengan
menyediakan beberapa batasan pada relasi yang lebih kecil.
Functional Dependency

Merupakan konsep inti yang terkait dengan normalisasi.

Functional Dependency, menjelaskan relationship antar atribut-atribut dalam relasi.
Misalkan, jika A dan B adalah atribut dari suatu relasi R, B dikatakan Functionally
Dependent pada A (dinotasikan A --> B), jika setiap nilai A dihubungkan dengan tepat
satu nilai B. ( A dan B masing-masing dapat terdiri atas satu atau lebih atribut)
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Functional Dependency merupakan sifat dari arti semantik suatu atribut dalam sebuah
relasi.

Direpresentasikan dalam diagram

Determinant dari functional dependency mengacu kepada atribut atau himpunan atribut
disebelah kiri anak panah.
Example - Functional Dependency
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Karakteristik utama dari functional dependency yang digunakan dalam normalisasi :
 Mempunyai relationship 1:1 antar atribut di sebelah kiri dan kanan dependency.
 Saling terkait (Hold for all time)
Misal :
staffNo  sName dan sName  staffNo
 Nontrivial.

Kumpulan lengkap dari sebuah functional dependency untuk suatu relasi bisa sangat
besar.

Penting
untuk
menemukan
pola
pendekatan
yang
dapat
mengurangi
himpunan/kumpulan tersebut untuk mendapatkan ukuran yang lebih mudah diatur.

Perlu untuk mengidentifikasi himpunan functional dependency (direpresentasikan oleh
X) untuk relasi yang lebih kecil daripada himpunan lengkap functional dependency
(direpresentasikan oleh Y) untuk relasi tersebut dan memiliki sifat disetiap functional
dependency pada Y dipenuhi dengan functional dependencies pada X.

Himpunan dari seluruh functional dependency yang dipenuhi dengan himpunan yang
diberikan dari functional dependencies X disebut closure X (dituliskan, X+).

Himpunan inference rules, disebut Armstrong’s axioms, menetapkan bagaimana
functional dependency yang baru dapat disimpulkan dari functional dependency yang
sudah ada.

Misalkan A, B, dan C merupakan subset dari atribut suatu relasi R. Maka Armstrong’s
axiom-nya adalah :
o
Reflexivity, jika B merupakan subset dari A, then A  B
o
Augmentation, jika A  B, maka A,C  B, C
o
Transitivity, jika A  B dan B  C, maka A  C
Ketergantungan Fungsional Penuh
Ketergantungan fungsional penuh berarti bahwa jika ada atribut B yang tergantung secara
fungsinal terhadap A dan tidak kepada sebagian atau turunan dari atribut A. Dinotasikan
sebagai A  B
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Artinya bahwa atribut B bergantung penuh pada atribut A, dimana A adalah sebagai
determinannya. Jika A adalah primary key atribut yang komposit (lebih dari 1), maka atribut
yang dinyatakan sebagai tergantung penuh, harus tergantung kepada atribut primary key
komposit tersebut (lebih dari 1).
Contoh :
No_pesanan
No_pem
No_bar
Jml
P00101122013
AM234
K934
25
P00201122013
AM124
K934
10
P00301122013
AJ546
K931
120
P03203092013
AF122
K931
125
P01204052013
AF122
K934
13
Dari tabel diatas dapat diketahui bahwa Primary key nya adalah No-pesanan dan No-pem.
Primary
key ini adalah composite primary key yang berarti perimary key lebih dari 1. Berarti semua
atribut yang non primary key harus bergantung penuh kepada keduanya.
No-pesanan, No-pem  No_bar
No-pesanan, No-pem  jumlah
Dari penjelasan diatas dapat dikatehui bahwa nomor pemesanan dan no pemesan,
keduanya menentukan nomor barang yang dipesan dan keduanya juga menentukan berapa
jumlah pesanan. Sehingga atribut yang bukan primary key semuanya bergantung pada
primary key-nya.
2014
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Ketergantungan Fungsional Parsial (sebagian)
Ketergantungan fungsional parsial artinya bahwa dalam sebuah tabel ada atribut atau
sebagian atribut yang tidak bergantung sepenuhnya kepada primary key di tabel tersebut.
Hal ini biasa terjadi jika pada sebuah tabel terdiri dari lebih 1 primary key (composite primary
key). Misalkan jika terdapat A, B  C, D. Dan A  E. Sehingga terdapat atribut E yang
hanya bergantung kepada sebagian atribut primary key yaitu atribut A saja. Lihat gambar
dibawah:
No_pesanan
No_pem Na_pem
No_bar
Na_bar
Jml
P00101122013
AM234
Anggita
K934
Mouse Optik
25
P00201122013
AM124
Ronny
K934
Mouse Optik
10
P00301122013
AJ546
Jasmine
K931
Monitor LCD
120
P03203092013
AF122
Alfina
K931
Monitor LCD
125
P01204052013
AF122
Alfina
K934
Mouse Optik
13
Jika tabel seperti diatas, maka dapat dirtentukan sebagai primary key bahwa nomor
pesanan dan nomor pemesan menentukan semua atribut yang ada pada tabel tersebut.
Tetapi kenyataannya bahwa ada atribut Na_pem yang hanya tergantung pada No_pem dan
tidak tergantung pada No_pesanan. Sehingga terjadi ketergantungan parsial antara Na_pem
kepada No_pem.
Ketergantungan Fungsional Transitif
Ketergantungan fungsional transitif artinya jika pada sebuah tabel terdapat atribut yang tidak
hanya tergantung kepada primary keynya, tetapi kepada atribut lain yang bukann kunci.
Sehingga keadaan tersebut dapat diidentifikasikan dengan notasi:
A  B, B  C
2014
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Perhatikan tabel contoh dibawah. Terdapat atribut nama barang yang tergantung pada
kedua atribut kunci primer. Tetapi pada kenyataannya atribut nama barang ini bergantung
kepada no_barang, sehingga terdapat ketergantungan transitif terhadap no_barang yang
juga tergantung kepada atribut kunci primer yaitu No_pemesanan dan No_pemesan.
No_pesanan
No_pem
P00101122013
AM234
P00201122013
No_bar
Na_bar
Jml
K934
Mouse Optik
25
AM124
K934
Mouse Optik
10
P00301122013
AJ546
K931
Monitor LCD
120
P03203092013
AF122
K931
Monitor LCD
125
P01204052013
AF122
K934
Mouse Optik
13
No_pesanan, No_pem  No_bar
No_bar  Na_bar
Sehingga ada ketergantungan transitif dari No_pesanan, No_pem  No_bar  Na_bar
2014
9
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Latihan
Perhatikan tabel dibawah ini
1. Dari tabel ini tentukan anomali yang terjadi (insert, update, delete)
2. Dari tabel ini tentukan primary key-nya
3. Tentukan ketergantungan fungsionalnya
4. Tentukan juga apakah ada ketergantungan parsial dan ketergantungan transitif
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
2014
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
Proses Normalisasi
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 11
Kode MK Disusun Oleh 87031 Tim Dosen Abstract
Kompetensi
Modul ini berisi materi tentang
proses dan langkah-langkah dari
teknik normalisasi
Mahasiswa mampu menggunakan
teknik normalisasi untuk model
data tabel dari sebuah studi kasus
2014
1
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Proses Normalisasi
 Suatu teknik formal untuk menganalisa relasi berdasarkan primary key atau
candidate key-nya dan functional dependency antar atribut.
 Dilakukan dalam beberapa langkah. Setiap langkah mengacu ke bentuk normal
tertentu, sesuai dengan sifat yang dimilikinya.
 Setelah normalisasi diproses, relasi secara bertahap menjadi lebih terbatas/kuat
bentuk formatnya dan juga mengurangi tindakan update yang anomali.
Relationship Between Normal Forms
Unnormalized Form (UNF)

Merupakan suatu table yang berisikan satu atau lebih group/data yang berulang.

Membuat tabel unnormalized yaitu dengan memindahkan data dari sumber
informasi (Contoh : Form) kedalam format tabel dengan baris dan kolom.
First Normal Form (1NF)

Merupakan sebuah relasi dimana setiap irisan antara baris dan kolom berisikan satu
dan hanya satu nilai.

UNF ke 1NF
 Tunjuk
satu
atau
sekumpulan
atribut
sebagai
kunci
untuk
tabel
unnormalized.
 Identifikasikan groups yang berulang dalam tabel unnormalized yang
berulang untuk kunci atribut.
 Hapus group yang berulang dengan cara
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
:
1. Masukkan data yang semestinya kedalam kolom yang kosong pada baris
yang berisikan data yang berulang (flattening the table), atau dengan
cara
2. Menggantikan data yang ada dengan copy dari kunci atribut yang
sesungguhnya kedalam relasi terpisah.

Contoh:
Contoh sederhana DreamHome lease. Seorang klien bernama John Kay
menyewa properti di Glasgow yang dimiliki oleh Tina Murphy. Dalam kasus ini
diasumsikan seorang klien dapat menyewa sebuah properti hanya satu kali dan
tidak dapat menyewa lebih dari satu pada saat yang bersamaan.
Sample data yang digunakan diambil dari 2 kontrak dari 2 klien yang berbeda yaitu
John Kay dan Aline Stewart yang diubah kedalam bentuk tabel sbb, disebut dengan
unnormalized table :
ClientRental
client
No
CR76
cName
John Kay
prope
rtyNo
PG4
PG16
CR56
Aline
Stewart
PG4
PG36
PG16
pAddress
6 Lawrence
Glasgow
5 Novar
Glasgow
6 Lawrence
Glasgow
2 Manor
Glasgow
5 Novar
Glasgow
rentStart
rentFinish
St,
1-Jul-00
31-Aug-01
350
owner
No
CO40
Dr,
1-Sep-01
1-sep-02
450
CO39
St,
1-Sep-99
10-Jun-00
350
CO40
Rd,
10-Oct-00
1-Dec-01
375
CO93
Dr,
1-Nov-02
10_Aug-03
450
CO93
ClentRental (Unnormalized table)
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
rent
oName
Tina
Murphy
Tony
Shaw
Tina
Murphy
Tony
Shaw
Tony
Shaw
Tentukan atribut kunci untuk tabel unnormalized ClientRental , yaitu clientNo.
Tentukan group/kelompok yang berulang untuk setiap clientNo, yaitu :
Group berulang = (properyNo, pAddress, rentStart, rentFinish, rent,
ownerNo, oName)
Untuk mengubah tabel unnormalized menjadi 1NF, maka harus ditetapkan terdapat
1 nilai untuk setiap kolom dan baris. Dapat dicapai dengan memindahkan group
yang berulang. Sehingga menghasilkan 1NF sbb
:
ClientRental
client
No
CR76
cName
John Kay
prope
rtyNo
PG4
CR76
John Kay
PG16
CR56
Aline
Stewart
Aline
Stewart
Aline
Stewart
PG4
CR56
CR56
PG36
PG16
pAddress
6 Lawrence
Glasgow
5 Novar
Glasgow
6 Lawrence
Glasgow
2 Manor
Glasgow
5 Novar
Glasgow
rentStart
rentFinish
rent
St,
1-Jul-00
31-Aug-01
350
owner
No
CO40
Dr,
1-Sep-01
1-sep-02
450
CO39
St,
1-Sep-99
10-Jun-00
350
CO40
Rd,
10-Oct-00
1-Dec-01
375
CO93
Dr,
1-Nov-02
10_Aug-03
450
CO93
oName
Tina
Murphy
Tony
Shaw
Tina
Murphy
Tony
Shaw
Tony
Shaw
1NF ClientRental Relation
Kemudian tentukan candidate key untuk relasi ClientRental dalam bentuk
Composite Key yaitu (clienNo, propertyNo), (clientNo, rentStart), dan (propertyNo,
rentFinish). Ketiga kombinasi tadi dibandingkan dan dipilih (clientNo, propertyNo)
sebagai primary key. Untuk lebih jelas primary key diletakan disebelah kiri, sbb
:
ClientRental
client
No
CR76
propertyN
o
PG4
cName
John Kay
CR76
PG16
John Kay
CR56
PG4
CR56
PG36
CR56
PG16
Aline
Stewart
Aline
Stewart
Aline
Stewart
pAddress
6 Lawrence
Glasgow
5 Novar
Glasgow
6 Lawrence
Glasgow
2 Manor
Glasgow
5 Novar
Glasgow
rentStart
rentFinish
St,
1-Jul-00
31-Aug-01
350
owner
No
CO40
Dr,
1-Sep-01
1-sep-02
450
CO39
St,
1-Sep-99
10-Jun-00
350
CO40
Rd,
10-Oct-00
1-Dec-01
375
CO93
Dr,
1-Nov-02
10_Aug-03
450
CO93
Sehingga relasi ClientRental didefinisikan :
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
rent
oName
Tina
Murphy
Tony
Shaw
Tina
Murphy
Tony
Shaw
Tony
Shaw
ClientRental (clientNo, propertyNo, cName, pAddress, rentStart, rentFinish, rent,
ownerNo, oName)
Second Normal Form (2NF)

Berdasarkan pada konsep full functional dependency, mengindikasikan bahwa, jika
A dan B merupakan atribut dari sebuah relasi, B dikatakan fully dependent terhadap
A jika B functionally dependent pada A tetapi tidak pada proper subset dari A.

2NF – merupakan sebuah relasi dalam 1NF dan setiap atribut non-primary-key
bersifat fully functionally dependent pada primary key.

1NF ke 2 NF
 Identifikasikan primary key untuk relasi 1NF.
 Identifikasikan functional dependency dalam relasi.
 Jika terdapat partial
dependency terhadap primary key, maka hapus
dengan menempatkannya dalam relasi yang baru bersama dengan
salinan determinan-nya.

Contoh
Direpresentasikan functional dependency (fd1 – fd6) untuk relasi
ClientRental
dengan (clientNo, propertyNo) sebagai primary key. Walaupun ClientRental memiliki
3 candidate key, tetapi yang diperhatikan hanya keterkaitan terhadap primaty key
saja, karena menggunakan definisi dari 2 NF yang berhubungan hanya dengan
primary key dari relasi yang bersangkutan. Sedangkan candidate key yang lain akan
dipergunakan pada saat definisi umum untuk 2NF.
Pada saat identifikasi functional dependency yang ada, dimulai dengan
memeriksa apakah terdapat partial dependency terhadap primary key. Atribut (cName)
partially dependent
pada primary key, yaitu hanya atribut clientNo (fd2), atribut
(pAddress, rent, ownerNo, oName) partially dependent pada primary key, yaitu hanya
atribut propertyNo (fd3), atribut (rentStart dan rentFinish) fully dependent pada seluruh
primary key, yaitu clientNo dan propertyNo (fd1).
Identifikasi partial dependency pada relasi ClientRental mengindikasikan bahwa
relasi tersebut tidak termasuk dalam 2NF. Untuk mengubah relasi ClientRental kedalam
2NF diperlukan pembuatan relasi baru dimana seluruh atribut non-primary-key
dihapus/digantikan dengan atribut yang fully dependen. Sehingga bentuk 2NF menjadi
:
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Client
clientN
clientN
property
o
No
cName
o
rentStart
rentFinis
h
CR76
PG4
1-Jul-00
31-Aug-01
CR76
John Kay
CR76
PG16
1-Sep-01
1-sep-02
CR56
Aline Stewart
CR56
PG4
1-Sep-99
10-Jun-00
CR56
PG36
10-Oct-00
1-Dec-01
CR56
PG16
1-Nov-02
10_Aug03
Rental
propertyOwner
property
pAddress
rent
No
owner
oName
No
PG4
6 Lawrence St, Glasgow
350
CO40
Tina
Murphy
PG16
5 Novar Dr, Glasgow
450
CO39
Tony Shaw
PG36
2 Manor Rd, Glasgow
375
CO93
Tony Shaw
2NF relations derived from the ClentRental relation
Karena setiap atribut non-primary-key bersifat fully dependent pada primary key dalam
relasi, maka relasi-relasi diatas mempunyai bentuk :
Client
(clientNo, cName)
Rental
(clientNo, propertyNo, rentStart, rentFinish)
PropertyOwner
(propertyNo, pAddress, rent, ownerNo, oName)
Third Normal Form (3NF)

Berdasarkan pada konsep transitive dependency, yaitu suatu kondisi dimana A, B
dan C merupakan atribut dari sebuah relasi, maka jika A à B dan B à C, maka C
transitively dependent pada A melalui B. (menegaskan bahwa A tidak functionally
dependent pada B atau C).

3NF – Adalah sebuah relasi dalam 1NF dan 2NF dan dimana tidak terdapat atribut
non-primary-key attribute yang bersifat transitively dependent pada primary key.
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

2NF ke 3NF :
o
Identifikasikan primary key dalam relasi 2NF.
o
Identifikasikan functional dependency dalam relasi.
o
Jika terdapat transitive dependency terhadap primary key, hapus dengan
menempatkannya dalam relasi yang baru bersama dengan salinan
determinan-nya.

Contoh
Functional dependency yang ada dalam relasi Client, Rental dan PropertyOwner,
yang dihasilkan dari contoh sebelumnya, sbb
:
Client
fd2
clentNo  cName
(Partial Dependency)
Rental
fd1
clienNo, propertyNo  rentStart, rentFinish
(Primary Key)
fd5’
clientNo, rentStart  propertyNo, rentFinish
(Candidate Key)
fd6’
properyNo, rentStart  clientNo, rentFinish
(Candidate Key)
PropertyOwner
fd3
propertyNo  pAddress, rent, ownerNo, oName(Partial Dependency)
fd4
ownerNo  oName
(Transitive Dependency)
Seluruh atribut non-primary key yang terdapat pada relasi client dan Rental bersifat
functionally dependent pada masing-masing primary key-nya dan tidak memiliki
transitive dependency yang dibutuhkan dalam 3NF. fd yang diberi label tanda kutip (fd5’
dan
fd6’)
menandakan
bahwa
dependency
yang
terdapat
didalamnya
telah
dibandingkan sebelumnya (bandingkan dgn fd1).
Seluruh non-primary-key pada relasi PropertyOwner bersifat functionally
dependen pada primary key-nya, terkecuali oName yang juga dependent pada
ownerNo. Transitive dependency adalah jika suatu atribut dependent pada satu atau
lebih non-primary-key.
Untuk
merubah
menghilangkan
relasi
PropertyOwner
kedalam
7
Basis Data
Tim Dosen
3NF,
harus
transitive dependencies dengan membuat 2 relasi baru yaitu
2014
bentuk
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
PropertyForRent dan Owner. Sehingga relasi yang baru tersebut mempunyai bentuk
sbb
:
PropertyForRent
(propertyNo, pAddress, rent, ownerNo)
Owner
(ownerNo, oName)
Rental
clientNo
propertyNo
rentStart
rentFinish
CR76
PG4
1-Jul-00
31-Aug-01
CR76
PG16
1-Sep-01
1-sep-02
CR56
PG4
1-Sep-99
10-Jun-00
CR56
PG36
10-Oct-00
1-Dec-01
CR56
PG16
1-Nov-02
10_Aug-03
PropertyForRent
propertyNo
pAddress
rent
350
ownerNo
PG4
6 Lawrence St, Glasgow
CO40
PG16
5 Novar Dr, Glasgow
450
CO39
PG36
2 Manor Rd, Glasgow
375
CO93
Client
clientNo
cName
CR76
John Kay
CR56
Aline Stewart
Owner
ownerNo
oName
CO40
Tina Murphy
CO39
Tony Shaw
3NF relations derived from the ClientRental Relation
2014
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Definisi umum 2NF dan 3NF
 Second normal form (2NF)
Suatu relasi yang ada dalam 1NF dan setiap atribut non-primary-key bersifat fully
functionally dependent pada candidate key.
 Third normal form (3NF)
Suatu relasi yang ada dalam 1NF dan 2NF dan dimana tidak terdapat atribut nonprimary-key attribute yang bersifat transitively dependent pada candidate key.
Langkah-langkah Normalisasi
Unnormalized
Menghilangkan group berulang sehingga setiap irisan baris dan kolom hanya
berisi satu dan hanya satu nilai
Bentuk 1 NF
Menghilangkan partial dependency terhadap primary key, sehingga didapat
atribut non primary key yang fully functional dependent terhadap primary
key-nya
Bentuk 2 NF
Menghilangkan transitive dependency
Bentuk 3 NF
Jika dan hanya jika setiap determinan merupakan candidate key
Bentuk BCNF
2014
9
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Latihan
Perhatikan kartu pengobatan pasien dibawah ini: Dari kartu pengobatan diatas, anda diminta untuk mengkonversinya menjadi tabel‐tabel yang terbentuk dengan teknik normalisasi. 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
2014
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
ALJABAR RELASIONAL
KALKULUS RELASIONAL
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 12
Kode MK Disusun Oleh 87031 Tim Dosen Abstract
Kompetensi
Modul ini berisi materi tentang
bahasa
procedural
aljabar
relasional dan kalkulus relasional
Mahasiswa
mampu
memahami
konsep aljabar relasional dan
mampu menjawab pertanyaan queri
dalam bentuk aljabar relasional dan
kalkulus relasional
2014
1
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Relational Algebra
Pendahuluan
o
Aljabar relasional dan kalkulus relasional merupakan bahasa formal yang berhubungan
dengan model relasional.
o
Secara informal, aljabar relasional adalah bahasa prosedural (high-level) dan kalkulus
relasional adalah bahasa non-procedural.
o
Tetapi, secara formal keduanya ekuivalen satu dengan lainnya.
o
Sebuah bahasa yang memproduksi relasi yang dihasilkan dengan menggunakan
kalkulus relasional disebut relationally complete.
Aljabar Relasional
Aljabar relasional adalah kumpulan operasi terhadap relasi. Setiap operasi
menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru.
o
Operasi aljabar relasional yang dilakukan pada satu atau lebih relasi untuk
mendefinisikan relasi lainnya tanpa mengubah relasi yang asli.
o
Operand dan hasilnya merupakan relasi, sehingga output suatu operasi dapat menjadi
input bagi operasi yang lain.
o
Memungkinkan suatu operasi bertingkat (nested) (seperti aritmatika), hal ini disebut
closure.
o
terdapat 5 operasi dasar pada aljabar relasional: Selection, Projection, Cartesian
product, Union, dan Set Difference. Menampilkan seluruh operasi pemanggilan data
yang dibutuhkan.
o
Operasi lainnya : Join, Intersection, dan Division operations, yang juga dapat
diekspresikan dengan menggunakan operasi dasar.
o
Operasi aljabar Relasional
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Operasi dasar dalam Aljabar Relasional
Operasi Kompleks dalam Aljabar Relasional
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh Kasus: Dreamhome Database
Registration
ClentNo
BranchNo
StaffNo
Data_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
Comment
Viewing
ClientNo
PropertyNo
View_Date
CR56
PA14
24-May-01
Too Small
CR76
PG4
20-Apr-01
Too Remote
CR56
PG4
26-May-01
CR62
PA14
14-May-01
CR56
PG36
28-Apr-01
No Dining Room
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
CR62
Mary
Tregear
01224-196720
Flat
600
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
Proper
Street
City
PostCode
Type
Rooms
Rent
tyNo
Branch
No
No
No
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
2014
Staff
PA14
Owner
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
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
B002
56 Clover Dr
London
NW10 6EU
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
Selection(orRestriction)

predicate (R)
Operasi pada relasi tunggal, dan menghasilkan relasi yang berisikan baris
-
(tuple) yang sesuai dengan syarat yang telah ditentukan (predicate).

Contoh :
Buatlah daftar staf dengan gaji > £10,000.
salary > 10000 (Staff)
Projection

col1, . . . , coln(R)
-
Operasi pada relasi tunggal R dan menghasilkan relasi yang berisikan subset
vertical (kolom) dari R, Menampilkan isi atribut dan menghilangkan duplikasi.

Contoh :
Buatlah daftar gaji seluruh staff, yang terdiri dari staffNo, fName, lName, dan salary.
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
staffNo, fName, lName, salary(Staff)
Union

RS
-
Penggabungan (Union) dua relasi, R dan S, menghasilkan relasi yang
berisikan
semua
tuple
dari
R,
dan/atau
S,
dan
duplikasi
akan
dieliminasi/dihilangkan.

Atribut ( R ) = Atribut ( S ) .
Jika R dan S memiliki sejumlah tuple I dan J , maka hasil tupel dari union keduanya
max (I + J).

Contoh :
Tampilkan seluruh kota dimana terdapat kantor cabang dan property untuk
disewakan
city(Branch)  city(PropertyForRent)
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
SetDifference

R–S
Menghasilkan relasi yang terdiri dari tuple pada relasi R,yang tidak ada pada
-
relasi S.
Atribut ( R ) = Atribut ( S ).

Contoh
:
Tampilkan seluruh kota dimana terdapat kantor cabang tetapi tidak terdapat property
untuk disewakan.
city(Branch) – city(PropertyForRent)
Intersection

RS
-
Menghasilkan relasi yang terdiri dari kumpulan seluruh tuple yang ada pada
relasi R maupun S.

Atribut ( R ) = Atribut ( S )
Dapat dihasilkan dengan menggunakan operasi dasar
:
R  S = R – (R – S)

Contoh :
Tampilkan seluruh kota yang mempunyai kantor cabang dan sedikitnya 1 property
untuk disewakan.
city(Branch)  city(PropertyForRent)
2014
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Cartesianproduct

RXS
-
Menghasilkan relasi yang merupakan urutan (concatenation) dari setiap tuple
pada relasi R dengan setiap tuple pada relasi S.

Contoh :
Tampilkan nama dan komentar seluruh klien yang telah melihat property yang
disewakan.
(clientNo, fName, lName(Client)) X (clientNo, propertyNo, comment (Viewing))

Contoh Cartesian Product dan Selection:
Gunakan operasi selection untuk menampilkan tuple klien dimana, Client.clientNo =
Viewing.clientNo.
Client.clientNo = Viewing.clientNo((clientNo, fName, lName(Client))  (clientNo, propertyNo,
comment(Viewing)))
2014
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Cartesian product dan Selection dapat diganti dengan operasi tunggal, Join.
Join Operation

Join merupakan turunan dari operasi Cartesian product.

Equivalen dengan fungsi Selection, menggunakan predikat join sebagai fungsi
selection pada Cartesian product dari dua buah relasi.

Merupakan operasi tersulit untuk diimplementasikan secara efisien pada RDBMS
dan merupakan salah satu alasan mengapa RDBMS memiliki masalah-masalah.

Jenis-jenis operasi join.
 Theta join
 Equijoin (a particular type of Theta join)
 Natural join
 Outer join
 Semijoin
Thetajoin(‐join)

R

Mendefinisikan relasi yang terdiri dari tuple-tuple yang memenuhi syarat predikat F
FS
dari Cartesian product relasi R dan S.

Predikat F yaitu bentuk dari R.ai  S.bi dimana  dapat berupa operator pembanding
(<, , >, , =, ).

Theta join dapat dituliskan dengan menggunakan operasi dasar Selection dan
operasi Cartesian product.
R
FS
= F(R  S)
2014
9
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Contoh - Equijoin
Tampilkan nama dan komentar semua klien yang telah melihat property untuk
disewakan.
(clientNo,fName,lName(Client))
Client.clientNo=Viewing.clientNo(clientNo,propertyNo,
comment(Viewing))
Naturaljoin

R

Equijoin dari dua relasi R dan S untuk seluruh atribut x. Perulangan akan dieliminasi
S
dari hasil akhir.

Contoh - Natural join
Tampilkan nama dan komentar seluruh klien yang telah melihat property untuk
disewakan.
(clientNo, fName, lName(Client))
(clientNo, propertyNo, comment(Viewing))
2014
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Outerjoin
 Untuk menampilkan baris pada relasi yang dihasilkan, dimana baris tersebut tidak
memiliki nilai yang cocok (matching values) dengan kolom yang di-join.

R

(Left) outer join adalah join, dimana tuple dari R yang tidak memiliki nilai yang cocok
S
(matching values) pada kolom dari S, yang ditampilkan dalam relasi yang dihasilkan.

Contoh - Left Outer join
Buatlah laporan status dari property viewings.
 propertyNo, street, city(PropertyForRent)
Viewing
Semijoin

R

Mendefinisikan relasi yang berisikan tuple-tuple dari relasi R yang ada pada join R
FS
dengan S.

Semijoin dapat dituliskan dengan menggunakan Projection dan join
R

FS
= A(R
:
F S)
Contoh - Semijoin
Tampilkan detail lengkap semua staff yang bekerja pada kantor cabang di Glasgow.
Staff
Staff.branchNo = Branch.branchNo and Branch.city = ‘Glasgow’
2014
11
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Branch
Division
 RS

Mendefinisikan relasi antara atribut-atribut C yang terdiri dari himpunan tuple R yang
merupakan kombinasi yang cocok/sesuai (match) dengan setiap tuple S.

Ekpresi dengan menggunakan operasi dasar
:
T1  C(R)
T2  C((S X T1) – R)
T  T1 – T2

Contoh - Division
Identifikasi seluruh klien yang telah melihat seluruh properti dengan 3 buah
ruang/kamar.
(clientNo, propertyNo(Viewing))  (propertyNo(rooms = 3 (PropertyForRent)))
2014
12
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Relational Calculus
Query
kalkulus
relasional
lebih
menspesifikasikan
apa
yang
harus
ditampilkan/diambil daripada bagaimana menampilkan/ mengambilnya. Pada kalkulus
relasional tidak ada deskripsi bagaimana meng-evaluasi suatu query.
Relational calculus merupakan Non-Procedural Language. Pengguna hanya
memberikan deskripsi formalnya saja, tanpa menentukan bagaimana urutan-urutan proses
untuk mendapatkan informasi tersebut dari sebuah basis data. Relational calculus termasuk
tipe manipulasi data yang tidak menyediakan suatu set operator dan memberikan
fleksibilitas yang sangat baik dalam relasi-relasi.
Relational calculus terbagi menjadi dua, yaitu:
1. Tuple Oriented Relational calculus
2. Domain Oriented Relational calculus
Nama kalkulus relasional diambil dari predicate calculus. Ketika diaplikasikan untuk
database, kalkulus relasional berbentuk : tuple relational calculus dan domain relational
calculus.
Dalam first-order logic (atau predicate calculus), predicate merupakan fungsi
berargumen yang bernilai benar. Ketika suatu nilai disubtitusikan untuk argumen tersebut,
fungsi menghasilkan ekspresi, yang disebut proposition, yang dapat bernilai benar atau
salah.
Contoh : terdapat kalimat “john white is a member of staff “ dan “ john white earns
more than ann beech “, kedua kalimat tersebut adalah proposisi. Kalimat pertama
mempunyai fungsi “is a member of staff “ dengan argumen john white, begitupun kalimat
kedua.
Jika predikat berisi sebuah variable (mis, ‘x adalah jumlah staff’), maka harus ada
range untuk x. Ketika disubtitusikan beberapa nilai dari range x ini, proposisi mungkin
bernilai benar untuk suatu nilai, dan bernilai salah untuk lainnya.

Maka jika P adalah predikat, maka himpunan x untuk P dapat dituliskan sbb :
{ x | P (x) }

predikat dapat digabungkan dengan Λ (AND), V (OR), dan ~ (NOT)
2014
13
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Tuple Relational Calculus
Variable-variabel di tuple relational calculus merepresentasikan value(nilai) tupletuplenya. Query di sebuah tuple calculus direpresentasikan sebagai berikut:
{ t | P (t) }.
Sejumlah tuple dari seluruh tuple t dengan predicate P adalah TRUE untuk tuple t
tersebut. Simbol lainnya adalah sebagai berikut:
t [ A ] : value tuple t di atribut A
t _ r : tuple t berada di relasi r

Ditujukan untuk menampilkan tuple untuk predikat yang bernilai benar dengan
menggunakan variabel tuple (tuple variables).

Variable Tuple adalah variable yang meliputi (ranges over) relasi bernama, contoh :
variable yang hanya diperbolehkan yang merupakan tuple-tuple dari suatu relasi.

menetapkan range dari variable tuple S sebagai relasi Staff sbb
:
Staff(S)

Untuk mengetahui himpunan dari semua tuple S dimana P(S) adalah benar
:
{S | P(S)}

Contoh
:
mencari detail dari semua staff yang berpenghasilan lebih dari £10,000 :

{S | Staff(S)  S.salary > 10000}
S.salary berarti nilai dari atribut salary diberikan untuk variabel tuple S.
Untuk menampilkan atribut tertentu seperti salary, dapat ditulis

{S.salary | Staff(S)  S.salary >
10000}
2014
14
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
:

Dapat menggunakan dua buah quantifier untuk mengetahui berapa banyak instances
yang diperoleh dari suatu predikat, yaitu:
Existential quantifier  (‘there exists’), akan bernilai benar jika sedikitnya terdapat 1

buah instance yang memenuhi syarat. Contoh
:
Staff(S)  (B)(Branch(B)  (B.branchNo= S.branchNo)  B.city = ‘London’)
Berarti, terdapat tuple branch dengan branchNo yang sama dengan branchNo dari
tuple Staff , S, dan berlokasi di London’.
Universal quantifier  (‘for all’) , akan bernilai benar jika setiap instance memenuhi

syarat. Contoh
:
(B) (B.city  ‘Paris’)
Berarti, untuk semua tuple Branch, yang tidak beralamat di paris
atau dapat ditulis
:
~(B) (B.city = ‘Paris’),
yang berarti ‘tidak ada branch dengan alamat paris’
2014
15
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Variabel tuple yang sesuai dengan  atau  disebut variable terbatas (bound ), lainnya
variable bebas(free ).
Penerapan hokum De Morgan:
(X) (F(X))  ~ (X) (~(F(X)))
(X) (F(X))  ~ (X) (~(F(X)))
(X) (F1(X)  F2(X))  ~ (X) (~(F1(X)) V ~(F2(X)))
(X) (F1(X)  F2(X))  ~ (X) (~(F1(X)) V ~(F2(X)))

Formula/rumus yang ditulis harus tidak ambigu dan dapat dimengerti.

Ekspresi dalam kalkulus tuple relasional mempunyai bentuk umum sbb
:
{ S1.a1, S2.a2,…,Sn.an | F (S1,S2,…Sm ) m >= n
keterangan:
 R(Si ), dimana Si adalah variable tuple dan R adalah relasi
 Si.a1  Sj.a2 ,dimana Si. dan Sj. merupakan variable tuple. a1 adalah atribut
dari relasi pada range Si., a2 adalah atribut dari relasi pada range Sj. dan 
operator pembanding.
 Si.a1  c dimana Si. adalah variable tuple. a1 adalah atribut dari relasi pada
range Si., c adalah konstanta dari domain atribut a1 dan  operator pembanding.

Ekspresi dapat dibuat dengan beberapa ketentuan
:
 ekspresi tersebut tersebut bersifat atomic
 jika F1 dan F2 adalah suatu ekspresi, maka conjunction F1F2; disjunction
F1VF2; dan negasi, ~F1 juga ekspresi.
 jika F adalah ekspresi dengan variable bebas X, maka (X)(F) dan (X)(F) juga
merupakan ekspresi.
2014
16
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Contoh :
1. Tampilkan nama seluruh manager yang memiliki penghasilan lebih dari £25,000.
{S.fName, S.lName | Staff(S)  S.position = ‘Manager’  S.salary > 25000}
2. Tampilkan staff yang mengatur property untuk disewakan dikota Glasgow.
{S | Staff(S)  (P) (PropertyForRent(P)  (P.staffNo = S.staffNo)  P.city =
‘Glasgow’)}
3. Tampilkan nama staff yang tidak mengatur property apapun
{S.fName, S.lName | Staff(S)  (~(P) (PropertyForRent(P)(S.staffNo = P.staffNo)))}
Atau
{S.fName, S.lName | Staff(S)  ((P) (~PropertyForRent(P)  ~(S.staffNo = P.staffNo)))}
4. Tampilkan nama klien yang telah melihat property di Glasgow.
{C.fName, C.lName | Client(C)  ((V)( P) (Viewing(V)  PropertyForRent(P) 
(C.clientNo = V.clientNo)  (V.propertyNo=P.propertyNo)  P.city =‘Glasgow’))}
2014
17
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Suatu ekspresi dapat menghasilkan himpunan tak hingga, contoh
{S | ~Staff(S)}

Untuk mengatasi hal tersebut, tambahkan batasan bahwa semua nilai yang dihasilkan
harus merupakan nilai dalam domain ekspresi.
Domain Relational Calculus
Variable-variabel
di
Domain
Relational
Calculus
merepsentasikan
domain
domainnya, sedangkan operasi-operasinya mirip dengan Tuple Relasional Calculus.

Menggunakan variable yang diambil dari domain pada suatu relasi.

Bentuk umum ekspresi domain relational calculus
:
{d1, d2, . . . , dn | F(d1, d2, . . . , dn)}
dimana F(d1, d2, . . . , dn) merupakan formula yang disusun dari atom-atom dan d1, d2, . .
. , dn merepresentasikan domain variables.
Contoh :
1.
Tampilkan nama seluruh manager dengan penghasilan lebih dari £25,000.
{fN, lN | (sN, posn, sex, DOB, sal, bN) (Staff (sN, fN, lN, posn, sex, DOB, sal, bN) 
posn = ‘Manager’  sal > 25000)}
2. Tampilkan staff yang mengatur property untuk disewakan di Glasgow
2014
18
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
{sN,fN,lN,posn,sex,DOB, sal, bN |sN1,cty)(Staff(sN,fN,lN,posn,sex,DOB,sal,bN) 
PropertyForRent(pN, st, cty, pc, typ, rms, rnt, oN, sN1, bN1) (sN=sN1) cty=‘Glasgow’)}
3. Tampilkan nama staff yang tidak mengatur property apapun
{fN, lN | (sN)(Staff(sN,fN,lN,posn,sex,DOB,sal,bN)  (~(sN1)(PropertyForRent(pN, st,
cty, pc, typ, rms, rnt, oN, sN1, bN1)  (sN=sN1))))}
4. Tampilkan nama klien yang telah melihat property di Glasgow.
{fN, lN | ( cN, cN1, pN, pN1, cty)(Client(cN, fN, lN,tel, pT, mR)  Viewing(cN1, pN1, dt,
cmt)  PropertyForRent(pN, st, cty, pc, typ, rms, rnt,oN, sN, bN)  (cN = cN1)  (pN =
pN1) cty = ‘Glasgow’)}

Ketika dibatasi untuk menyimpan ekspresi, domain relational calculus ekuivalen dengan
tuple relational calculus terbatas untuk menyimpan ekspresi, dimana ekuivalen dengan
relational algebra.

Yang berarti, setiap ekspresi aljabar relasional terdapat ekuivalensinya dalam ekspresi
kalkulus relasional, dan sebaliknya.
Bahasa lainnya

Transform-oriented language merupakan bahasa non-procedural yang menggunakan
relasi untuk merubah data input menjadi output yang dibutuhkan. (Co/ SQL).

Graphical language menyediakan gambar dari struktur relasi. User memberi masukan
berupa contoh hal yang dibutuhkan dan system akan memberikan data yang dimaksud
dengan format tersebut. (Co/ QBE).

4GL dapat membuat complete customized application menggunakan perintah-perintah
yang terbatas yang user-friendly, biasanya menu-driven environment.

Beberapa sistem menerima bentuk natural language, disebut 5GL, walaupun masih
dalam tahap awal. 2014
19
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Latihan
Masih dari skema Hotel yang pernah kita bahas, jawablah pertanyaan berikut dengan menggunakan bahasa prosedura Aljabar Relasional dan Kalkulus Relasional. 1.
2.
3.
4.
5.
6.
7.
8.
Tampilkan nama hotel yang beralamat dikota Bandung Tampilkan nomor kamar yang harga sewanya diatas Rp. 350.000,‐ Tampilkan nama hotel yang memiliki kamar bertipe deluxe Tampilkan nama hotel yang sedang dibooking oleh tamu Tampilkan nama tamu yang berasal dari Jakarta Tampilkan nama tamu yang menginap di kamar R002 Tampilkan nama tamu yang menginap di hotel Mawar Tampilkan nama tamu yang menginap dari tanggal 12 Agustus 2009 sampai 15 Agustus 2009 disemua hotel 9. Tampilkan nama tamu yang menginap di kamar bertipe single 10. Tampilkan nomor kamar dan hotelnya yang sedang kosong atau sedang tidak disewa tamu 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
2014
20
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
Keamanan Basis Data
Fakultas Program Studi Ilmu Komputer Teknik Informatika 2014
1
Tatap Muka 13
Kode MK Disusun Oleh 87031 Tim Dosen Abstract
Kompetensi
Modul ini berisi materi tentang
lingkup kemanan basis data, tipe
ancaman terhadap system basis
data dan fitur keamanan dari
DBMS yang ada
Mahasiswa mampu memahami
konsep
lingkup
keamanan
basisdata beserta ancaman yang
dapat terjadi pada system basis
data, serta mampu menjelaskan
fitur keamanan yang ada ada
DBMS (Ms. SQL Server, Oracle
dan MySQL)
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Keamanan Basis Data
 Data merupakan sumber daya bernilai yang harus di atur dan diawasi secara ketat
bersama dengan sumber daya corporate lainnya.
 Sebagian atau keseluruhan data corporate mempunyai kepentingan strategis dan
karena itu harus dijaga agar tetap aman dan rahasia.
 Database
Security
merupakan
mekanisme
yang
menjaga
database
dari
serangan/ancaman yang disengaja maupun tidak sengaja.
 Pertimbangan keamanan tidak hanya diaplikasikan pada data yang ada dalam
database. Pelanggaran terhadap keamanan dapat mempengaruhi bagian lain dari
sistem, yang akan memberi akibat balik terhadap database.
 Keamanan database terkait dengan keadaan berikut

Pencurian dan penipuan (theft and fraud)

Kehilangan kerahasiaan (Loss of confidentiality)

Kehilangan keleluasaan pribadi (Loss of privacy)

Kehilangan integritas (Loss of integrity)

Kehilangan ketersediaan (Loss of availability)
:
 Ancaman (threat) adalah segala situasi atau kejadian, baik disengaja maupun tidak
disengaja yang dapat menimbulkan efek merugikan terhadap system dan berikutnya
organisasi .
Ringkasan ancaman-ancaman terhadap sistem komputer
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Typical Multi-User Computer Environment
Tindakan terhadap ancaman (Countermeasures – Computer-Based
Controls)
Berbagai tindakan balasan untuk ancaman yang terjadi dikaitkan dengan kontrol fisik
sampai dengan prosedur administratif yang meliputi:
 Authorisasi (Authorization)
 View
 Back-up dan Recovery
 Integrity
 Encryption
 RAID Technology
Authorization(Otorisasi)
Pemberian hak atau wewenang, yang menyebabkan subjek memiliki legitimasi
untuk mengakses system atau objek-objek dalam system.
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Authentication(Pembuktiankeaslian)
Suatu mekanisme yang menentukan apakah user yang mengakses benar-benar
user yang dimaksud.
View
Merupakan hasil dinamis dari satu atau lebih operasi relasional yang dioperasikan
pada relasi/table dasar untuk menghasilkan relasi/table lainnya. View merupakan
relasi/table virtual yang tidak benar-benar ada dalam database, tetapi dihasilkan
berdasarkan permintaan oleh user tertentu pada saat tertentu.
BackUp
Suatu proses yang secara periodik mengambil salinan database dan log file (dapat
juga berupa program) untuk disimpan pada media penyimpanan offline.
Journaling
Suatu proses pemeliharaan dan penyimpanan log file (jurnal) dari semua
perubahan yang dilakukan terhadap database untuk kemudahan recovery bila
terjadi kerusakan (failure).
Integrity
Mencegah data dari ketidaksesuaian (invalid) dan mengakibatkan pemberian hasil
yang salah.
Encryption
Penyandian (encoding) data dengan menggunakan algoritma khusus yang
membuat data tidak dapat dibaca oleh program tanpa kunci decryption.
RAID(RedundantArrayofIndependentDisks)Technology
 Hardware dimana DBMS berjalan dengan fault-tolerant, yang berarti bahwa
DBMS harus tetap melanjutkan operasi walaupun terdapat satu komponen
hardware yang rusak (fail).
 Memberikan
kesan
memiliki
komponen
redundant
(lebih)
yang
dapat
diintegrasikan kedalam sistem kerja walaupun terdapat satu atau lebih
kerusakan komponen.
 Komponen hardware utama yang harus memiliki fault-tolerant
meliputi disk
drives, disk controllers, CPU, Power supplies, cooling fans.
 Disk drives merupakan komponen yang paling mudah diserang dengan jarak
yang dekat antar kerusakan dibandingkan dengan komponen hardware lainnya.
 Salah
satu
solusinya
dengan
menggunakan
RAID
technology,
yaitu
menyediakan serangkaian besar disk, yang terdiri dari susunan beberapa disk
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
independen diatur untuk memperbaiki ketahanan (reliability) dan meningkatkan
performa (performance).
 Performa
(performance)
meningkat
melalui
data
striping,
yaitu
data
disegmentasi (dibagi) menjadi beberapa bagian dengan ukuran yang sama
(striping units), yang secara jelas didistribusikan melewati beberapa disk.
 Ketahanan
(reliability)
diperbaiki
melalui
penyimpanan
informasi
ganda(redundant) melewati disk dengan menggunakan skema parity atau
skema error-correcting.
Kemanan pada Microsoft Access DBMS
Menyediakan dua metode untuk pengamanan database, yaitu
:
 Penetapan password untuk membuka database (keamanan sistem)
 Keamanan tingkat user, yang dapat digunakan untuk membatasi bagian dari
database yang dapat dibaca/di-update oleh user (keamanan data)
Pengamanan DreamHome Database menggunakan password
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
User and Group Accounts Dialog Box for the DreamHome Database
User and Group Permissions Dialog Box
2014
6
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Creation of a New User with Password Authentication Set
Log on Dialog Box
2014
7
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Setting the Permissions
DBMS dan Keamanan Web
 Komunikasi internet dipercayakan pada TCP/IP sebagai protocol utama.
 Bagaimanapun TCP/IP dan HTTP tidak didesain dengan pemikiran keamanan. Tanpa
software khusus, semua jalur internet berjalan secara terbuka dan siapapun yang
melihat jalur tersebut dapat membacanya.
 Yang harus dipastikan pada saat pengiriman informasi melalui internet yaitu :

Tidak dapat diakses oleh siapapun kecuali pengirim dan penerimanya (privacy).

Tidak diubah selama pengiriman (integrity).

Penerima merasa yakin bahwa data tersebut berasal dari pengirim yang dimaksud
(authenticity).
2014
8
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Pengirim merasa yakin bahwa penerima adalah penerima yang sebenarnya (non
fabrication).

Pengirim tidak dapat menyangkal bahwa dirinya yang mengirim data (non
repudiation)
 Harus dapat menjaga informasi ketika sudah mencapai web server.
 Download
dapat
mengandung
Executable
Content,
yang
dapat
menampilkan/melaksanakan toperasi yang tidak sesuai (malicious action), seperti :

Data rusak atau Execution state dari program

Format ulang disk lengkap

Melaksanakan pe-nonaktif-an sistem secara total

Mengumpulkan dan mengambil data rahasia

Merebut identitas dan menirukan (impersonate) user

Lock up resources, menyebabkan tidak dapat digunakan untuk user dan program

Berakibat tidak fatal tetapi memberikan hasil yang tidak diinginkan, terutama pada
output device
Latihan
Dalam kelompok diskusi, jelaskan dengan lengkap, pendekatan apa saja yang dibutuhkan
untuk mengamankan DBMS dalam sebuah aplikasi web. Jelaskan jawaban kelompok anda
dalam sebuah mini presentation.
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
2014
9
Basis Data
Devi Fitrianah
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
MODUL PERKULIAHAN
Basis Data
Pengenalan Objek DBMS
Fakultas Program Studi Ilmu Komputer Teknik Informatika Tatap Muka 14
Kode MK Disusun Oleh 87031 Tim Dosen Abstract
Kompetensi
Modul ini berisi materi tentang
konsep yang terkait dengan OODB
atau Object Oriented Data Base.
Abstraksi,
penyembunyian
informasi, identitas objek, objek
dan atribut, method dan message,
class,
subclass,
superclass,
inheritance,
overloading,
polymorphism
dan
dynamic
binding.
Mahasiswa mampu memahami dan
mempresentasikan kembali semua
komponen didalam OODB
Object Oriented Data Base
Objek database mulai populer pada pertengahan tahun 1990 an. Bermula dari Objek
Oriented Programming (OOP) yang kemudian dikembangkan menjadi Objek Oriented
Database (OOD) dan pada akhirnya menjadi Objek Oriented Analysis (OOA). Didalam
konsep objek oriented database kita dapat melakukan pemodelan data dari semua
phenomena dan dapat dinyatakan dalam bahasa umum (natural). Objek Oriented Database
pada dasarnya merupakan kosep dari pemrograman berorientasi objek secara umum
ditambah dengan database sebagai media penyimpanan datanya yang berbentuk classclass, sehingga dalam hal ini masih berhubungan erat dengan E-R Model. Objek Oriented
Database muncul karena kekomplekan dari penyimpanan objek-objek yang akan disimpan
didalam database sehingga konsep dari Relational Database Manejemen Sistem (RDBMS)
masih tetap digunakan. Mekanisme penyimpanan objek-objek didalam Relational Database
Menejemen Sistem ini sering dikenal dengan istilah ORDBMS (Objek Relational Database
Managemen System).
Object oriented database adalah sebuah model basisdata dimana informasi disimpan
daam bentuk object. Object yang dimaksud tersebut digunakan dalam OOP (object oriented
progamming). Ketika kemampuan basisdata bergabung dengan kemampuan OOP, hasilnya
berupa object database management sistem (ODBMS). ODBMS ideal untuk pada
pemrogaman object oriented karena mereka ketika malakukan proses developer, controller
ddan model mamiliki persamaan yaitu sama – sama mengguanakn object. ODBMS
mendukung data yang compleks seperti vidio, suara, gambar, dll secara native. Berbeda
dengan Relational Databse Mangement Sistem (RDBMS) yang tidak native mendukung data
compleks karena harus membagi menjasi dua bagian yaitu : model basis data dan model
aplikasi. Bagi yang telah mengenal RDBMS, object pada ODBMS bertindak sama dengan
tabel RDBMS. ODBMS dibuat untuk menggantikan RDBMS jika bahasa pemrograman yang
digunakan adalah OOP.
Kelebihan OODB antara lain:
1. Proses penyimpanan dan pengambilan data lebih sederhana;
2. Program mengakses data dengan objecknya secara langsung sehingga kinerja
program akan lebih tinggi.
2014
2
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Kekurangan OODB antara lain :
1. Kekuranagn dukungan platform, kebanyakan OODB hanya mendukung bahasa
pemrograman C++, C# dan Java saja;
2. Kebutuhan keterampilan, dikarenakan OODB masih tergolong baru dan masih
relatif jarang penggunanya;
3. Sulit berimigrasi, dibutuhkan komitmen yang kuat dalam memilih DBMS yang
akan digunakan, sekali berimigrasi ke OODB, akan sulit untuk kembali ke
RDBMS
PERKEMBANGAN APLIKASI BASIS DATA
1. Computer-Aided Design (CAD)
Database CAD menyimpan data yang berhubungan dengan rancangan mekanik dan
elektrik, sebagai contoh : gedung, pesawat, dan chips IC.
2. Computer-Aided Manufacturing (CAM)
Database CAM menyimpan data yang jenisnya sama dengan sistem CAD, ditambah data
yang berhubungan dengan produksi yang mempunyai ciri-ciri tersendiri (seperti mobil pada
saat perakitan) dan produksi yang continue (seperti sintesa kimia).
3. Computer-Aided Software Engineering (CASE)
Database CASE menyimpan data yang berhubungan dengan langkah-langkah dari siklus
pengembangan software yaitu : planning, requirements collection analysis, design,
implementation, test, maintenance and documentation.
4. Computer-Aided Publishing (CAP)
Database CAP menyimpan dokumen yang kompleks. Sama seperti otomatisasi kantor,
aplikasi CAP telah diperluas untuk menangani dokumen-dokumen multimedia yang
berisikan teks, audio, gambar, video data, dan animasi.
2014
3
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
5. Office Automation (OA)
Database OA menyimpan data yang berhubungan dengan pengontrolan informasi computer
dalam bidang bisnis, termasuk e-mail, dokumen-dokumen, invoice, dsb.
Agar menyediakan dukungan yang lebih baik untuk area ini, dibutuhkan penanganan yang
lebih luas terhadap jenis data daripada nama, alamat, tanggal dan uang.
Sekarang ini sistem yang modern dapat menangani text yang berjenis bebas, foto, diagram,
audio dan video. Sebagai contoh: dokumen multimedia yang mengangani teks, foto,
spreadsheets dan suara.
KONSEP OBJECT ORIENTED
Dalam Object Oriented baik Programming maupun database terdapat beberapa konsep
mengenai object oriented yang perlu diketahui. Berikut adalah penjelasannya.
Beberapa konsep Object Oriented Database :
2014
4
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id

Kenyataan dalam dunia ini direpresentasikan sebagai object

Setiap object memiliki state dan behavior

State merupakan nilai dari properties dan atribut dari object

Behavior merupakan method yang dijalankan oleh state

Object yang memiliki kesamaan state dan behavior dikelompokkan dalam satu class
yang sama

Setiap object hanya dapat diturunkan (instace) kedalam satu class saja

Class-class dikeompokkan dalam sebuah hierarki. Subclass memiliki turunan (inherits)
dari superclass-nya.

Dimungkinkan juga terjadi overriding dimana sebuah class men-substitute domain dari
propertiesnya dengan method lain dalam implementasi yang berbeda.
A.
·
Abstraksi dan Enkapsulasi
Abstraksi
adalah proses identifikasi aspek-aspek yang perlu dari entitas dan mengabaikan
property yang tidak penting.
·
Enkapsulasi (information hiding)
adalah memisahkan aspek-aspek eksternal sebuah objek dari rincian internalnya
(internal details), yang tidak terlihat dari dunia luar. Dengan cara ini, internal detail sebuah
objek dapat dirubah tanpa mempengaruhi aplikasi yang menggunakan objek tersebut, begitu
juga dengan external detail. Dengan kata lain, encapsulation menyediakan data
independence.
Contoh : Objek Roti, objek ini mempunyai method Pembuatan Roti. Jika kita ingin memakan
roti, tentu kita tidak perlu tahu bagaimana cara membuatnya. Dengan demikian pembuatan
Roti menjadi sesuatu yang menjadi dasar bagi konsep information hiding.
2014
5
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
B.
Objek dan Atribut
·
Objek
adalah sebuah entitas yang dapat diidentifikasikan secara unik, berisikan atributatribut yang menerangkan keadaan atau kondisi (state) objek dunia nyata (real world object)
dan aksi-aksi yang berhubungan dengan sebuah objek dunia nyata. Definisi objek serupa
dengan definisi entitas. Perbedaannya : objek menunjukkan keadaan (state) dan tingkah
laku (behaviour), sedangkan entitas menunjukkan models state.
·
Atribut
adalah nama-nama property dari sebuah kelas yang menjelaskan batasan nilainya
dari property yang dimiliki oleh sebuah kelas tersebut. Atribut dari sebuah kelas
mempresentasikan property-property yang dimiliki oleh kelas tersebut. Atribut mempunyai
tipe yang menjelaskan tipe instanisasinya. Hanya sebuah instanisasi dari kelas (objek) yang
dapat mengubah nilai dari atributnya.
Keadaan (state) dari sebuah objek dijelaskan dengan nilai dari atribut-atribut yang
dimilikinya (selain keberadaan hubungan dengan objek lainnya). Dalam sebuah kelas atribut
hanya dinyatakan keberadaan dan batasan nilainya saja, sedangkan dalam sebuah objek
atributnya sudah dinyatakan nilai dan menjelaskan kedudukan / keadaan dari objek tersebut.
C.
Identitas Objek (Object Identity)
Pada saat objek dibuat, object identifier (OID) langsung ditentukan. OID tersebut unik
dan berbeda. OID membedakan objek yang satu dengan objek lainnya di dalam sistem.
Sekali objek dibuat, OID tersebut tidak dapat digunakan kembali untuk objek-objek lainnya,
walaupun objek tersebut telah dihapus.
2014
6
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
D.
Metode dan Pesan
·
Metode (Methods)
Dalam teknologi objek, function biasanya disebut methods. Methods mendefinisikan
tingkah laku dari sebuah objek. Methods dapat digunakan untuk merubah kondisi objek
dengan memodifikasi nilai atribut-atributnya, atau meng-query nilai atribut yang diseleksi.
·
Pesan (Message)
Message mempunyai arti komunikasi antara objek. Sebuah message merupakan
permintaan sederhana dari suatu objek (pengirim) ke objek lain (penerima) dan menanyakan
objek tsb untuk mengeksekusi salah satu method-nya. Pengirim dan penerima bisa pada
objek yang sama. Notasi ‘dot’ biasanya digunakan untuk mengakses sebuah method.
E.
CLASS
Class merupakan pendefinisian himpunan objek yang sejenis. Objek yang
mempunyai atribut yang sama dan meresponse message yang sama dapat dikelompokkan
bersama membentuk sebuah class. Atribut dan method yang berhubungan cukup sekali saja
didefinisikan untuk class, daripada didefinisikan terpisah untuk setiap objek.
Contoh :
seluruh objek cabang dideskripsikan oleh sebuah class cabang (branch). Objek-objek pada
sebuah class disebut instance dari class. Setiap instance mempunyai nilainya sendiri untuk
setiap atribut, tetapi nama atribut dan method-nya sama seperti instance lainnya dari sebuah
class.
2014
7
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
F.
SUBCLASS, SUPERCLASS, dan INHERITANCE
Inheritance mengizinkan satu class objek didefinisikan sebagai kasus spesial (special case)
dari sebuah class pada umumnya. Special case ini dikenal dengan subclass, dan kasus
umum lainnya dikenal sebagai superclass. Proses pembentukan superclass sama seperti
generalization, sedangkan subclass seperti specialization. Konsep dari superclass,
subclass, dan inheritance sama seperti EER, kecuali dalam paradigm object-oriented,
inheritance meliputi state dan behaviour.
Ada beberapa bentuk inheritance :
1.
Single inheritance
Subclass merupakan turunan dari satu superclass.
Contoh : subclass Manager dan Sales_Staff merupakan turunan property dari superclass
Staff.
2.
Multiple inheritance
Subclass Sales_Manager merupakan turunan dari superclass Manager dan
Sales_Staff.
2014
8
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
3.
Repeated inheritance
Kasus spesial dari multiple inheritance, dimana sebuah superclass merupakan
turunan dari sebuah superclass biasa. Melanjutkan contoh multiple inheritance, class
Manager dan Sales_staff bisa saja merupakan turunan dari superclass biasa yaitu
superclass Staff. Dalam kasus ini, mekanisme inheritance harus meyakinkan bahwa class
Sales_manager tidak diturunkan sebanyak dua kali dari superclass Staff.
4.
Selective inheritance
Mengizinkan subclass menurunkan sejumlah property dari superclass. Keistimewaan
ini secara fungsional sama seperti mekanisme view, dengan membatasi akses ke beberapa
detail tapi tidak seluruhnya.
Object Oriented Database (OOD) merupakan salah satu jenis database dimana data
direpresentasikan dalam bentuk object. Pendekatan ini sangat dipengaruhi oleh bahasa
pemrograman object-oriented dan dapat dipahami sebagai usaha untuk menambah
fungsionalitas DBMS pada lingkup bahasa pemrograman.
2014
9
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
Daftar Pustaka
1. Kroenke, David M. Database Processing Jilid 1. Edisi 9. 2005. Penerbit Erlangga,
Jakarta.
2. Waide,
Catherine.
Object-oriented
database.
2003
[online]
http://www.faculty.rsu.edu/users/c/clayton/www/waide/paper.htm#_Toc38521767
2014
10
Basis Data
Tim Dosen
Pusat Bahan Ajar dan eLearning
http://www.mercubuana.ac.id
diakses
Download