Bukudb 11
Bukudb 11
KONTRAK PERKULIAHAN
MATA KULIAH : Sistem Basis Data
SKS / SEM : 3 / IV
HARI / JAM :
I. MANFAAT
Dapat digunakan untuk mendesain suatu basis data yang terintegrasi baik di bidang
pendidikan maupun perusahaan.
Gambaran tentang Pendahuluan; Arsitektur dan konsep dari DBMS; Data modeling
menggunakan model entity relationship; Data modeling menggunakan model relational;
Format query language relational lgebra; Orelational Calculus; SQL, QUEL dan QBE; Data
model Hierarchical; Data Model Network; Functional dependecies dan normalisasi untuk
basis data relational; Algoritma dan Proses design basis data relational; Pemrosesan dan
optimasi query; Transaksi; Concurrency control; Recovery, security; Sekilas tentang basis
data terdistribusi.
Diharapkan dapat mendesain suatu basis data yang terintegrasi baik di bidang
pendidikan maupun perusahaan.
1
TIU
Integrity
Security
Quaery
Normalisasi ER-Model
V. STRATEGI PERKULIAHAN
- Ceramah
- Belajar Mandiri melalui Praktikum
- Case Study
Kepustakaan wajib :
- Elmasri, Rames, Fundamentals of Database System, Benyamin, Tokyo, 1994
- Korth, Henry F., Database System Concepts, McGraw-Hill International, USA,
1991
VII. TUGAS
- Membaca
- Quis diadakan 2 kali dalam 1 semester, Sebelum UTS dan Sebelum UAS.
- UTS dan UAS berdasar kalender akademik
2
RATA-RATA > 60 RATA-RATA < 60
NILAI RANGE NILAI RANGE
A > 79 A > X + 1.5 SD
B 70 - 79 B > X + 0.5 SD s/d X + 1.5 SD
C 56 - 69 C > X + 0.5 SD s/d X - 0.5
SD
D 45 - 55 D > X - 1.5 SD s/d X - 0.5 SD
E < 45 E < X - 1.5 SD
Bobot Nilai Akhir :
Tugas : 5%
Quis : 5%
Praktikum : 20 %
UTS : 30 %
Online (UAS) : 40 %
100 %
Syarat Lulus : - Kehadiran Kuliah 70 % dan Lulus Praktikum
BAB II
3
PENGERTIAN DATABASE
Sifat-sifat database :
Internal : Kesatuan (integritas) dari file-file yang terlibat.
Terbagi/share : Elemen-elemen database dapat dibagikan pada para user baik secara
sendiri-sendiri maupun secara serentak dan pada waktu yang sama (Concurrent sharing).
Elemen-elemen database :
A. Tipe :
1. Enterprise = Suatu jenis organisasi, misalnya Bank, Hotel, Universitas dan lain-
lain.
2. Entity = File = Obyek pada enterprise berdasarkan data yang disimpan
3. Atribute = Field = Data item = Beberapa hal yang ingin diketahui dari suatu
file
4. Record = Satu set field yang merupakan ciri khas dari suatu file
Istilah entity dan atribute biasanya digunakan pada tingkat konsepsual dan logikal,
sedangkan file, record dan field pada tingkat internal/fisikal.
Hubungan : Enterprise terdiri dari beberapa entity, entity terdiri dari beberapa record
dan record terdiri dari beberapa field.
B. Isi / Nilai :
1. Data File : Seluruh isi data pada file
2. Data Record : Satu set isi data pada suatu susunan field dari suatu file
3. Data Value : Isi data masing-masing data elemen.
Sumber-sumber daya suatu organisasi / enterprise :
Ada 5 M Sumber Daya, yaitu :
4
Man : Manajemen Personalia (Manusia)
Machine : Manajemen peralatan (Mesin)
Material : Manajemen industri (Bahan Baku)
Money : Manajemen Keuangan (Uang)
Message : Manajemen Informasi.
DATA Merupakan sumber daya yang paling penting dalam perusahaan, data perlu disimpan
dan dimanajemen (rencana, desain, operasi, kontrol dan evaluasi). Proses manajemen
dilaksanakan dalam siklus hidup (Life Cycle).
Manajemen data dapat dilakukan secara administrasi manual atau dengan memakai
komputer, secara umum Sistem Database adalah sistem penyimpanan data memakai
komputer.
Vendor
Database DBA Management
5
Hardware +
Software Staff
Data
Processing Aplication User
System + operation Development Community
Staff Staff
6
normalisasi
Contoh : - INGRES oleh UN of CA & Relational Tech., 1973
- System-R oleh IBM Research, 1975
- ORACLE oleh Relational Software Inc. , 1979
- DBASE II oleh Ashton-Tate, 1981
Pendekatan tradisional, berorientasi pada program aplikasi dan tiap-tiap aplikasi berdiri
sendiri-sendiri. contoh : aplikasi produk, aplikasi inventory dsb.
Sehingga terdapat masalah-masalah :
Data redundancy : Duplikasi data yang sama pada beberapa file.
Redundansi dapat direduksi/dikurangi tetapi tidak dapat dihilangkan sama sekali
sehingga akan menyebabkan inconsistency (data tidak konsisten), incosistency dapat
dihilangkan dengan cara Propagating Update yaitu melakukan update secara serentak
pada field-field yang redundansi.
Contoh : Jika pelanggan pindah alamat dan nomer telponnya maka seharusnya ketiga file
yang memuat data tersebut harus diubah/update (contoh File Anggota, File transaksi
peminjaman, file Pengembalian), bila salah satu saja dari file yang mengandung data
tersebut terlewat diupdate maka terjadilah tidak konsisten tadi. Untuk itu perlu adanya
propagating update ketiga file tersebut.
Data Isolation : Datanya terisolasi bagi user dan untuk melihatnya harus membuka
program terlebih dahulu.
Ketidakmampuannya dalam menjawab kebutuhan/pertanyaan sewaktu-waktu.
Ketidakmampuan dalan sharing data yaitu elemen-elemen database dapat dibagikan
pada para user baik secara sendiri-sendiri maupun serentak dan pada waktu yang sama.
Biaya pengembangan yang tinggi sehingga tidak responsif terhadap kebutuhan
perubahan.
Gambar :
Pendekatan Database, berarti data bebas dari program aplikasi (Data independent)
- Kemaren : Melakukan Desain
- Hari ini : Dioperasikan
- Yang akan datang : Dikembangkan
Gambar :
7
Database
Management
System
Database
Keuntungannya :
Mengurangi data redundancy : Data redundansi dapat direduksi/dikurangi, tetapi
tidak dapat dihilangkan sama sekali (untuk kepentingan keyfield)
Data integrity : Integritas/kesatuan data dapat dipertahankan, hal ini sebagi akibat
dari penghindaran inconsistency dan pengontrolan security.
Data independent : Kebebasan data contoh . Jika terdapat perubahan struktur file
pelanggan maka program tersebut haruslah diubah. Jadi bahwa program yang telah dibuat
tidak bebas terhadap database yang ada, apapun yang terjadi pada struktur file, setiapkali
hendak melihat data dengan utility List, dll. ini berarti perintah-perintah dalam paket
DBMS bebas terhadap database.
Data security : Kontrol sekuriti dapat dilakukan. DBA dapat mengatur kewenganan
penggunaan database (update, retrieve, delete)
Data consistency : Inconsistency dapat dihilangkan
Mudah dalam penggunaan datanya
Membutuhkan sedikit memory untuk penyimpanan data.
Kerugiannya :
Mahal (teknologi DBMS, Operation, Conversion, Planning, Risk)
BAB III
ARSITEKTUR DATABASE
External Level
(Individual User Views)
8
Conceptual Level
(Community User Views)
Internal Level
(Storage Views)
Keterangan :
1. External Level : Setiap user mempunyai bahasa dalam penyelesaiannya
- Bahasa pemrograman : pembuat program aplikasi
- Bahasa Query ex. formulir, menu : Pemakai data langsung
2. Conceptual Level : Pandangan secara menyeluruh
3. Internal Level : Bagaimana secara fisik data tersimpan pada penyimpan sekunder
Contoh :
External (PL/I) External (COBOL)
DCL 1 EMPP, 01 EMPC.
2 EMP# CHAR (6), 02 EMPNO PIC X(6)
2 SAL FIXED BIN (31); 02 DEPTNO PIC X(4)
Conceptual
EMPLOYEE
EMPLOYEE_NUMBER CHARACTER (6)
DEPARTEMENT_NUMBER CHARACTER (4)
SALARY NUMERIK (5)
Internal
STORED_EMP LENGTH = 18
PREFIX TYPE = BYTE (6) , OFFSET = 0
EMP# TYPE = BYTE (6) , OFFSET = 6 , INDEX = EMPX
DEPT# TYPE = BYTE (4) , OFFSET = 12
PAY TYPE = REALWORD , OFFSET = 16
Host +DSL Host +DSL Host + DSL Host + DSL Host + DSL
External
Shema External View A External View B
9
DBA
DBMS
Conceptual Conceptual View
Schema
conceptual/internal mapping
Storage structure
Definition Storage Database
(Internal Schema) (Internal View)
User Interface
TIGA MODEL DESAIN DATABASE :
1. Conceptual model : Merupakan pengumpulan / integrasi seluruh kebutuhan atribut dari
para user / aplikasi menjadi satu pandangan organisasi
2. Logical model : Dari model conceptual yang terbentuk dapat dipilih salah satu model
data dasar logikal : hirarki, network atau relational. Kemudian dibagikan kepada para
user yang berwenang
3. Physical model : Bagaimana secara fisik data tersimpan pada penyimpanan sekunder,
yang perlu dipertimbangkan mengenai metode akses (menyimpan / stored dan mengambil
/ retrieval) dan teknik pengindeksan untuk retrieval (pencarian lebih cepat).
Gambar :
Model External Model External Model External
Aplikasi 1 Aplikasi 2 Aplikasi 3
Kebutuhan konsepsual
Aplikasi 1
Kebutuhan konsepsual
Aplikasi 2 Model Model
Konsepsual Logikal Model
Internal
Kebutuhan konsepsual
Aplikasi 3
Keterangan :
Model Konsepsual adalah permodelan data yang merupakan awal dari kegiatan mendesain
database.
Setiap aplikasi mengharapkan suatu kumpulan atribute. Model konsepsual merupakan
pengumpulan / integrasi seluruh kebutuhan atribute dari para user / aplikasi menjadi satu
pandangan organisasi. Dengan proses normalisasi seluruh atribut-atribut tersebut
dikelompokkan sesuai dengan himpunannya.
Model logikal : Dari model konsepsual yang dibentuk dari proses normalisasi diatas dapat
dipilih salah satu model data dasar logikal : hierarchy, Network atau Relational.
Setelah model data dasar logikalnya ditentukan dapat dipilih salah satu DBMS yang ada
dipasaran.
Contoh DBMS :
- Hirarchy : IMS-2
- Network : IDMS
- Relational : System-R, Inggres, Oracle, DBase-2
10
Model data logikal yang dibuat berdasarkan suatu DBMS tersebut menentukan bagaimana
data diberikan pada user / aplikasi. Masing-masing user / aplikasi menerima sejumlah atribut
untuk keperluannya. Kumpulan atribut yang diterima oleh user / aplikasi tersebut dinamakan
Sub skema atau sub model.
Setelah dipilih salah satu model data logikal, model konsepsual dipertakan (mapping) ke
model data logikal.
Model Fisikal : Menggambarkan bagaimana secara fisik data tersimpan pada penyimpan
sekunder.
Pertimbangan-pertimbangan yang perlu dipikirkan antara lain : Metode akses dan teknik
pengindeksan.
Dengan Low Level Data Language (LLDL : Basic, fortran, cobol pascal dll.) dapat
membentuk suatu model data fisikal tertentu untuk melayani kebutuhan model data logikal.
Kelemahan LLDL adalah tidak mempunyai Query language.
Course
Course# Title Descript
Prereq Offering
Course# Title Date Location
Teacher Student
Emp# Name Emp# Name
Grade
11
Keuntungan :
- Hirarki file-filenya mudah disesuaikan dengan hirarki kebutuhan data manajemen
- Dengan menyusun beberapa model hirarki dapat diperoleh beberapa sudut pandang
pada database
- Memudahkan sistem security
- Unjuk kerja dapat disederhanakan dengan pembatasan model data yang dibentuk
saja.
Kerugian :
- File-file yang seharusnya bebas satu sama lain kadang-kadang tidak dapat
dipisahkan
- Hubungan many-to-many tidak ada
- Redundansi pada tingkat fisikal tidak dapat dihindari.
2. Data Network : Data membentuk jaringan yang lebih bebas dari model hierarchy.
Contoh : IDMS (Integrated Database Management System) oleh Cullinett Software Inc,
1972
Sales Sales
S2 Mark Paris S4 Clark London
Sales-Part
S2 P1 300 S2 P1 300 S4 P2 200 S4 P4 300 S4 P5 400
Keuntungan :
- Redundansi dapat dihindari
- Kebutuhan penyesuaian model data dengan hirarki manajemen perusahaan dapat
dipenu-hi.
- Hubungan many-to-many dapat dilayani.
Kerugian
- Hubungan antar file kompleks, sehingga lebih membutuhkan perhatian waktu
reorganisasi file
2. Data Relational : Data dikelompokkan secara bebas menurut jenisnya lewat proses
normalisasi
Contoh : - INGRES oleh UN of CA & Relational Tech., 1973
- System-R oleh IBM Research, 1975
- ORACLE oleh Relational Software Inc. , 1979
- DBASE II oleh Ashton-Tate, 1981
12
MODEL DATA RELATIONAL
Database digambarkan dalam bentuk beberapa tabel, hubungan antar masing-masing
tabel dibangun oleh kunci-kuncinya.
PASIEN DOKTER
No.Pasien No. Dokter
Nama Nama
Alamat Alamat
Penyakit Spesialisasi
OPERASI
Tgl. Opr No.Pasien Operasi No.Dokter Obat
Keuntungan :
- Sederhana : digambarkan beberapa tabel dengan kunci dan hubungannya
- Kebebasan data lebih besar, model internal dan metode akses tidak perlu dipikirkan
pada waktu desain
- Operasi pada database langsung ke record pada masing-masing filenya.
Kerugian :
- Unjuk kerja kurang efisien terutama untuk database berskala besar.
A A
13
B B
C C
N
O
- Direct (Akses langsung pada alamat record) menghasilkan : File random / acak
- Ada hubungan langsung antara kunci record dan alamat record.
14
E 1 D
Blok 3
2. Metoda akses model external : Yaitu metoda akses yang berdasarkan gambaran hubungan
logikal menggunakan istilah-istilah HLDL dari
DBMS, misal : First record, next record dll.
Relasi antara 2 record secara external dapat dinyatakan sebagai berikut :
- Sequence field relationship (Hubungan berurutan) Contoh : Next, Prior
- Dependency relationship (Hubungan ketergantungan) contoh : Firts, last, sorted
- Parent relationship (Hubungan ke file parent / childnya)
- Near relationship (Hubungan khusus) contoh : hubungan record-record pada 1 blok
2. Implementasi metoda akses pada beberapa DBMS :
1. DBMS Relational : File-file database relational relatif bebas satu sama lain, karena untuk
aksesnya dapat dipakai metoda akses :
- SAM (Sequential Access Method)
- DAM (Direct Access Method)
- ISAM (Indexed Sequential Access Method)
- IDAM (Indexed Direct Access Method)
- Hashing
- Inverted
- VSAM (Virtual Storage Access Method) : Yaitu membuat file data dengan index pada
suatu kunci record / alamt record memakai struktur B-Tree
- OSAM (Overflow Sequential Access Method) : Yaitu membuat file data dengan
struktur Linked List.
2. DBMS Hirarki : Akses pada database hirarki tidak dapat langsung kesalah satu file,
melainkan harus
15
mengikuti struktur hirarki yang ada. contoh :
- HSAM (Hierarchical Sequential Access Method)
- Data disimpan urut seperti pada pita sesuai urutan hirarkinya.
- Record tidak dapat diinsert
- Operasi yang umum adalah membuat file master baru dari file master lama.
- HDAM (Hierarchical Direct Access Method)
- Akses hashing pada segment akar
- Akses direct ke segmen cabang
- Akses didalam segmen cabang dapat OSAM atau VSAM
- HISAM (Hierarchical Indexed Sequential Access Method)
- Akses Index pada segmen akar / root
- Akses sequential pada segmen cabang / dependent
- HIDAM (Hierarchical Indexed Direct Access Method)
- Akses index pada segmen akar, dapat ISAM atau VSAM
- Akses direct ke segmen cabang, akses didalam segmen cabang dapat OSAM atau
VSAM
3. DBMS Network : Struktur model database network lebih fleksibel dari pada hirarki,
hubungan antar filenya dikerjakan dengan memasang SET antar file tersebut. Untuk
menyimpan record pada storage digunakan Location Mode yang sekaligus
menggambarkan metode akses internal :
- Calc : Kemampuan kases hashing
- Direct
- Via-Set : Membuat file yang bersangkutan diakses lewat jalur SET nya.
- Index
- System : Sebagian DBMS sudah mempunyai default SYSTEM yang secara
otomatis mengatur akses pada database
3. Evaluasi suatu model Internal
BAB IV
SIKLUS HIDUP DATABASE
Physical
Creation
2
Design Conversion
1 3
For New
16
Aplication
Growth
change & Integration
maintenace 4
6
Operation
5
17
- User merasa sebagai pemilik data, I/S terpadu berfungsi membagi data yang
berkepentingan.
6. Maturity
- Komputer terpadu dengan proses manajerial
- Data merupakan penunjang perencanaan strategi
- Aplikasi-aplikasi mencerminkan aliran informasi.
Ad. 3. Konversi
Konversi adalah pengubahan data dari sistem database lama ke sistem database baru.
Masalah-masalah yang dihadapi adalah :
- Format file yang berbeda
- Model database yang berbeda
18
Konversi ini adalah pekerjaan besar yang dilakukan berangsur-angsur dan membutuhkan
waktu cukup lama.
Ad. 4. Integration
Integrasi adalah penyatuan dari program-program aplikasi untuk database yang baru.
3. Reorganization
Dalam sistem database pada suatu saat dapat diadakan pembersihan database terhadap
record-record yang tidak digunakan secara aktif lagi. Hal ini dimaksudkan untuk
mempercepat akses pada database yang terganggu dengan banyaknya record-record yang
tidak / jarang digunakan itu, record-record yang tidak aktif tersebut dapat dipindahkan
dan disimpan dalam suatu file. Proses pembersihan record-record tidak aktif itu
19
dinamakan reorganization, metode reorganization ini tergantung dari model database
yang dipilih.
4. Restructuring
Pada suatu lingkungan yang dinamis setelah suatu periode berjalan pasti dirasakan kebutuhan
perubahan, contoh :
- Penambahan/penghapusan suatu data elemen, perubahan ukuran/size suatu data elemen,
pertukaran data elemen antar file tersebut.
- Perubahan metode akses.
- Proses perubahan model internal dan sekaligus logikal.
6. Security
Sekurity data sangat penting dalam sistem database, artinya mengontrol pengaksesan data
dalam database terhadap orang-orang yang tidak berwenang, sehingga mencegah :
- Penyingkapan rahasia.
- Perubahan data.
- Perusakan / penghapusan data.
Ada 3 kelompok yang berhubungan dengan Database :
a. USER : User adalah pemilik data, user sesuai dengan departemennya hanya
berwenang untuk sekumpulan data tertentu, kontrol pengaksesan data oleh user ini
dapat dilakukan dengan memakai PASSWORD. Password ini mempunyai 2 fungsi :
- Memberi identifikasi seorang user
- Memberi kewenangan (authorized) dan hak (privilege)
Macam-macam hak pada sistem database adalah :
1. Hak retrieval : Mencari dan melaporkan
2. Hak Update pada record meliputi :
- Append (Menambah)
- Insert (Menyisipi)
- Modifikasi (Merubah)
- Delete (Menghapus)
3. Hak Definition File meliputi :
- Create (Mendefinisikan file baru)
- Revision (Merevisi definisi yang ada)
- Delete (Menghapus seluruh file)
- Memberi indeks
4. Hak GRANT (memberi) hak pada user.
Hak definition dan Grant hanya dimiliki oleh DBA.
Pembuatan Password harus mengingat hal-hal :
1. Mudah diingat
2. Sulit ditebak
3. Cukup sering diubah
4. Kerahasiaannya terlindungi.
b. Programer : Ada 2 macam programer
- Aplication Programer : Programer yang membuat program-program aplikasi
20
- System programer : Programer yang membuat program-program sistem yang
memadukan dan mengontrol program-program aplikasi.
misal : membuat menu untuk masing-masing user,
membuat log transaction pemakaian program dan database
dari para User dan sebagainya, dan harus mentaati prosedur
password.
c. Operation staff : Sering kerusakan data disebabkan operator yang kurang terlatih atau
petunjuk yang kurang memadai atau sulit dipahami. Operator yang berhubungan
dengan database adalah operator program aplikasi.
Pengamanan data baginya antara lain berupa :
- Validasi yang cukup pada data entry
- Pengecekan jumlah counter dengan formulir data
- Operator database (staff DBA)
- Pada saat backup, data harus mendapat perhatian.
Review and
Evaluation
V
Keterangan :
1. Mengidentifikasikan entity-entity vital dalam enterprise dan identifikasi aplikasi potensial
untuk database
2. mengidentifikasi entity dan hubungan (relationship ) pada model data
Hubungan (relationship) dapat terjadi dari :
- Hubungan antar himpunan (entity)
- Hubungan antar atribut pada 1 himpunan (entity)
- Hubungan antar atribut pada beberapa himpunan (entity)
Ada 3 macam hubungan :
- One - To - One : Contoh Pasien - Rekening
- One - To - Many : Contoh Kamar - Pasien
- Many - To - Many: Contoh Pasien - Dokter
3. Membuat data dictionary
- Membuat model data konsepsual
- Membuat model data logikal
- Membuat model data fisikal
4. Review dan evaluasi
21
CENTRALIZED VS DISTRIBUTED DATABASE SYSTEM
Kekurangan :
Data terpusat berarti data adalah milik umum, hal ini menyebabkan rasa memiliki dan
tanggung jawab pada data dari masing-masing user menjadi berkurang
Kemampuan pembagian data menyebabkan terjadinya pelanggaran wewenang dan
sekuriti data
Kedua hal diatas dapat diatasi dengan tambahan suatu sistem sekuriti dan hal ini
berarti penambahan biaya pada sistem.
Distributed database system yaitu database yang ada tersebar pada masing-masing terminal
yang saling berhubungan lewat jalur komunikasi.
Database tersebar pada tingkat konsepsual dan logikal hendaknya dianggap seperti database
terpusat, perbedaannya hanya pada tingkat internal / fisikal.
Keuntungan :
Kontrol local oleh DBA ditambah proteksi terhadap transmisi komunikasi
Pengontrolan sedikit ditekankan.
Kekurangan :
Lebih komplek masalahnya dalam DBMS.
22
BAB V
ENTITY RELATIONSHIP MODELS
Penggunaan Model Data Konseptual Tingkat Tinggi untuk Desain Basis Data
Tahapan dalam Mendesain sebuah Basis Data dapat digambarkan pada gambar dibawah
ini Tahap :
23
Miniword
Application Programs
Company 1 N
Memiliki
24
Nama
Departement
Nomor
1 N
Employee Manages Lokasi
Tgl Pengangkatan
Control
Nama
M Nomor
Project
Lokasi
3. Data pegawai yang perlu dicatat berupa : nama, social security, number, address,
salary, sex dan birthdate.
Seorang pegawai ditempatkan disatu departement, tetapi dapat bekerja di sejumlah
project yang tidak harus dikendalikan oleh departement dimana pegawai tersebut
ditempatkan.
Jumlah jam per minggunya dari pegawai yang bekerja pada suatu project perlu
dicatat, juga perlu dicatat supervisor langsung dari setiap pegawai
1 N N 1
Tgl kerja
Supervision M 1 Manajer
25
Nama
Nomor Lokasi
4. Untuk tujuan / keperluan asuransi pegawai, maka perlu dicatat anggota keluarga
dari setiap pegawai
Data yang dicatat berupa : nama anggota keluarga, sex, birthdate dan hubungan
keluarga
Pegawai
DepentOf
Dependent
Nama
Hubungan birthdate Sex
Dari keempat contoh diatas dapat digabungkan gambarnya menjadi satu gambar ER-
Model
26
Ex. (AlamatTelp {Telp (Kodearea, NoTelp) }, Alamat (AlamatJalan
(No,Jalan,NoBlok),Kota,Negara,Kodepos))}
Dimana ( ) = Composite Attribute
{ } = Multivalued Attribute
2. Entity Types, Entity Sets, Keys dan Value Sets
a. Tipe Entity adalah atribut-atribut yang seusai dengan entity
b. Set Entity adalah kumpulan attribute-atribute dari suatu entity
c. Key Atribute adalah kunci attribute yang unik yang membedakan antara record
yang satu dengan record yang lain
d. Set value (Domain) adalah isi/nilai dari entity
Ex. Employee
Key Tipe Entity
Nip Name Age Salary
N01 Bella 18 500000 Domain
N02 Ruben 20 800000 (age(18,20))
* #
* #
#
B. One To Many : Terjadi bila tiap anggota entity A boleh berpasangan dengan
lebih dari satu anggota B tetapi tidak berlaku sebaliknya
A 1 N B
* #
* #
#
27
C. Many To Many : Terjadi bila tiap anggota A boleh berpasangan dengan lebih
dari satu anggota B dan berlaku untuk sebaliknya
M N
A B
* #
* #
#
Relasi
Partisipasi : Menyatakan sifat keterlibatan tiap anggota entity dalam ikatan terjadinya
hubungan.
A. Wajib
Hubungan dosen dengan mata kuliah
1 1
Dosen Mata Kuliah
B. Tidak Wajib
28
Hubungan dosen dengan mata kuliah
A. Derajat 1:1 :
Kawin
Person
B. Derajat 1:M :
1
Supervisi
Karyawan
M
29
C. Derajat M:N :
N
Mahasiswa Team OR
(No_Mhs,…..) (No_Mhs_Ketua,
M No_Mhs_Angg.)
30
Suatu yang ada (secara eksplisit ada) namun keberadaannya dapat nyata
dapat virtual, serta perbedaan antar entity harus jelas
Ex. Pegawai, Departemen
Salary
3. : Attribute
Keterangan yang dimiliki entity / sifat-sifat yang melekat pada entity yang
perlu dicatat
Ex. Pegawai : Nopeg, Nama, Alamat, Jenis Kel, tgl. Masuk
4. : Key Attribute
Bila didalam attribute terdapat nilai sama, maka kita perlu membuat “Key
attribute” sehingga dipastikan tidak akan terjadi nilai/record sama
Ex. Pegawai : sebagai key adalah NoPeg
NoPeg Nama Alamat
P01 Bella Malang
P02 Bella Batu
5. : Multivalued Attribute
Satu entity yang memiliki 2 attribute sama
Ex. Departemen yang memiliki 2 lokasi pabrik
Departemen Lokasi
Hal ini bukan berarti bias untuk orang yang mempunyai 2 nama atau 2
alamat
6. : Composite Attribute
Attribute yang mempunyai nilai attribute lebih dari Satu
Ex. Nama : Nama Depan Alamat : Jalan
Nama Tengah Nomer
Nama Belakang Kota
7. : Derived Attribute
31
Merupakan kombinasi dari attribute-attribute dimana keberadaannya tidak
perlu disimpan
Ex.
MHS Mata Kuliah
Nilai
8. : Relationship Type
Menyatakan hubungan antar attribute sehingga terjadi pemetaan
Ex. M Bisa N
Mahasiswa ambil Mat. Kul
* #
#
* #
#
Range
Domain Kodomain
Hasil Dari Relasi :
- One To One (1:1)
- One To Many (1:N)
- Many To Many (1:M)
E1
E2
Mengapa ER Model :
- Model data tingkat tinggi yang populer untuk model data relasional
- Banyak Database Desain Tools yang melibatkan ER Model
Pembahasan :
- Konsep Dasar Penyusunan dan Constraint dari ER Model
- Penggunaan ER Model dalam desain skema Konseptual
Jenis Data Independence :
1. Logical Data Independence :
- Kemampuan untuk merubah skema konseptual tanpa harus merubah skema eksternal
- Hanya definisi dari view dan mapping yang perlu diubah dalam DBMS
- Constraint dari basis data juga dapat diubah dalam skema konseptual tanpa
mempengaruhi skema eksternal
2. Physical Data Independence :
- Kemampuan untuk merubah skema internal tanpa haarus merubah skema
konseptual (atau eksternal)
32
- Lebih mudah untuk dilakukan daripada logical data independence karena adanya
isolasi aplikasi dari susunan penyimpanan fisik.
CONTOH
Untuk keperluan penjelasan konsep dan penggunaan ER Model,digunakan satu contoh
database “COMPANY” yang didalamnya mencatat :
- Data Pegawai (Employee)
- Data Departemen (Department)
- Data Proyek (Projects)
Penjelasan dari sebagian data Company yang diperoleh setelah fase “Requirement collection
and analysis” sbb :
1. COMPANY terdiri dari sejumlah Departements. Setiap department mempunyai satu
nama yang unik, nomor yang unik, dan seorang pegawai (Employee) yang bertindak
sebagai manager dari department. Tanggal mulai bekerja dari manager juga dicatat dalam
database (Tanggal pengangkatan sebagai manager).
Satu department dapat tersebar di sejumlah lokasi.
2. Suatu department dapat mengendalikan sejumlah project. Setiap project mempunyai satu
nama yang unik, nomor yang unik, dan satu lokasi tertentu.
3. Data pegawai yang perlu dicatat berupa : nama, social security number, address, salary,
sex dan birthdate.
Seorang pegawai ditempatkan di satu department, tetapi dapat bekerja di sejumlah project
yang tidak harus dikendalikan oleh department dimana pegawai tersebut ditempatkan.
Jumlah jam perminggunya dari pegawai yang bekerja pada suatu project perlu dicatat.
Juga perlu dicatat supervisor langsung dari setiap pegawai.
4. Untuk tujuan/keperluan asuransi pegawai, maka perlu dicatat anggota keluarga dari setiap
pegawai. Data yang dicatat berupa : nama anggota keluarga, sex, birthdate dan hubungan
keluarga (relationship)
(4,N)
SSN Name Sex Salary Works-For Location
(1,1) Department
Department
Bdate Employee NumbOfEmp
Startdate
Employee
(0,1) (1,1) Department (0,N)
Manager Managed Controlling
Manages Department Worker
33
Employee
dependent
(1,1)
Dependent
Relationship
KONSEP
Model Relasional menyajikan database sebagai satu kumpulan relasi atau dapat
juga disebut Tabel
Terminology :
Sebuah baris disebut Tuple
Suatu header dalam kolom di sebut Attribute
Tabel disebut Relasi
Ex. R(A1,A2,A3,……,An)
Satu nama Relasi R dan satu List Attribute A1,A2,A3,….An
Tipe data yang menjelaskan jenis-jenis nilai yang dapat muncul dalam setiap
kolom disebut Domain
Ex. Dom(A1)
Domain “NRP-Mahasiswa” Satu set dari 10 digit
CONSTRAINTS
Domain Constrain : Nilai dari setiap attribut suatu relasi harus atomic dari
domain attribut tersebut
Key Contraints : Suatu relasi adalah satu set tuple, dan semua elemen dalam satu
set harus berbeda
Entity Integrity Contraint : Dalam suatu relasi, tidak boleh terdapat “Primary
Key” yang bernilai kosong (Null).
34
1. Attribute-attribute dalam FK mempunyai domain yang sama dengan attribute-
attribute yang menjadi primary key dalam skema realsi R2 ---- Attribut-
attribut FK dikatakan mengacu pada relasi R2
2. Suatu nilai FK dalam suatu tuple t1 dalam R1 mungkin :
a. Berupa suatu nilai PK dalam sembarang tuple t2 dalam R2
b. Atau bernilai kosong (Null)
3. Untuk Setiap binary 1:1 relationship type R dalam skema ER, perhatikan
relasi-relasi S dan T yang berkorespondensi dengan entity type yang
berpartisipasi dalam R. Kemudian ambil salah satu relasi (misalkan S) dan
cantumkan primary keydari T sebagai foreign key.
Untuk kasus ini, S sebaiknya dipilih dari entity type yang berpartisipasi total
dalam R (untuk mengurangi null values dari foreign key yang diambil dari T).
Catatan : Sebagai Alternatif untuk pemetaan dari 1:1 relationship type ini
adalah dengan menggabungkan kedua entity type menjadi satu relasi tunggal.
Cara ini terutama sangat sesuai bilamana kedua entity type berpartisipasi total
dan tidak berpartisipasi dalam relationship type lain.
35
5. Untuk setiap binary M:N relationship type R, buat satu relasi baru S untuk
mewakili R.
Kemudian cantumkan sebagai foreign key dalam S, Primary key dari relasi-
relasi yang mewakili entity type yang berpartisipasi dalam R; dimana
kombinasi dari primary key ini akan membentuk primary key dan juga
cantumkan semua simple attribute dari M:N relationshp type sebagai attribute
dari S.
Catatan : Binary relationship 1:1 atau 1:N selalu dapat dipetakan seperti
pada M:N relationship. Alternatif ini terutama sangat berguna bilamana
relationship instance yang ada sangat sedikit (menghindari null values dalam
foreign key)
Untuk kasus ini, primary key dari relasi “Relationship” hanya akan menjadi
foreignkey dari satu “Entity” relasi yang berpartisipasi. Jadi untuk 1:N
relationship, hanya pada sisi_N, sedang untuk 1:1 adalah entity relasy yang
berpartisipasi total (jika ada) yang dipilih.
7. Untuk setiap n-ary relationship type R (n>2), buat satu relasi baru S yang
mewakili R. Cantumkan sebagai foreign key attribute dalam S, Primary key
dari relasi-relasi yang mewakili entity type yang berpartisipasi. Juga
cantumkan sebagai attribute dalam S, semua simple attribute dalam n-ary
arelationship type.
Primary key dari S biasanya berupa kombinasi dari semua foreign key yang
mengacu pada relasi-relasi yang mewakili entity type yang berpartisipasi.
Namun jika “participation constraint’ (min,max) dari satu entity type E yang
berpartisipasi dalam R mempunyai max = 1, maka primary key dari S berupa
set satu foreign key attribute yang mengacu pada relasi E. ini dilakukan
karena setiap entity instance e dalam E hanya akan berpartisipasi paling
banyak satu relationship instance dalam R, sehingga dapat secara unik
mengidentifikasi relationship instance dari R.
36
BAB VII
ALJABAR RELASI
SSN FName Minit LName BDate Address Sex Salary SuperSSN DNo
EMPLOYEE
DNumber DLocation
DEPT_LOC
PROJECT
37
DATABASE COMPANY
EMPLOYEE
FNAME MINIT LNAME SSN BDATE ADDRESS SEX SALARY SUPERSSN DNO
John B Smith 123456789 1/9/65 731 Fondren Houston, TX M 30000 333445555 5
Franklin T Wong 333445555 12/8/55 638 Voos Houston, TX M 40000 888665555 5
Alice J Zelaya 999887777 7/19/68 3321 Castle Spring, TX F 25000 987654321 4
Jennifer S Walace 987654321 6/20/41 291 Berry Bellaire, TX F 43000 888665555 4
975 Fire Oak, Humble,
Rames K Narrayan 666884444 9/15/62 TX M 38000 333445555 5
Joyce A English 453453453 7/31/72 5631 Rice Houston, TX F 25000 333445555 5
Ahmad V Jabbar 987987987 3/29/69 980 Dalas, Houston, TX M 25000 987654321 4
James E Borg 888665555 11/10/37 450 Stone, Houston, TX M 56000 null 1
Ruben B Ella 999999999 1/1/00 123 Gottham City, TX M 20000 999887777 5
DEPENDENT
ESSN DEPENDENT_NAME SEX BDATE RELATIONSHIP
333445555 Alice F 4/5/86 Doughter
333445555 Theodore M 10/25/83 Son
333445555 Joy F 5/3/58 Spouse
987654321 Jennifer F 2/28/42 Spouse
123456789 Michael M 1/4/88 Son
123456789 Alice F 12/30/88 Doughter
123456789 Elizabeth F 5/5/67 Spouse
DEPARTEMENT
DNAME DNUMBER MGRSSN MGRSTARTDATE
Research 5 333445555 5/22/88
Administration 4 987654321 1/1/95
Headquarters 1 888665555 6/19/81
DEPT_LOCATIONS
DNUMBER DLOCATION
1 Houson
4 Stafford
5 Bellaire
5 Sugarland
5 Houston
38
PROJECT
PNAME PNUMBER PLOCATION DNUM
ProductX 1 Bellaire 5
ProductY 2 SugarLand 5
ProductZ 3 Houston 5
Computerization 10 Stafford 4
Reorganization 20 Houston 1
NewBenefits 30 Stafford 4
WORKS_ON
ESSN PNO HOUR
123456789 1 32.5
123456789 2 7.5
666884444 3 40
453453453 1 20
453453453 2 20
333445555 2 10
333445555 3 10
333445555 10 10
333445555 20 10
999887777 30 30
999887777 10 10
987987987 10 35
987987987 30 5
987654321 30 20
987654321 20 15
888665555 20 0
333445555 1 15
333445555 30 20
ALJABAR RELASI
OPERASI SELECT
Digunakan untuk memilih satu subset tuple dalam suatu relasi yang memenuhi suatu kondisi
pemilihan
Bentuk Umum :
<Kondisi Pemilihan> (<Nama Relasi>)
Ket : : Select Operator
<Kondisi Pemilihan> : Ekspresi Boolean (Where)
39
Terdiri sejumlah clausa yang mempunyai bentuk :
- <nama atrribute><operator perbandingan><nama konstanta>
- <nama attribute><operator perbandingan><nama attribute>
Operator Perbandingan : =, <, , > ,, untuk domain yang nilainya terurut
Suatu clause dengan clause yang lian dapat dihubungkan dengan
Operator Boolean yaitu AND, OR, NOT
<cond1> AND <cond2> AND ….AND <condn> ( R ))
Operasi Select mempunyai sifat Komutatif :
<cond1> ( <cond2> ( R )) = <cond2> ( <cond3> ( R ))
Contoh :
Dapatkan subset dari tuple EMPLOYEE yang bekerja pada departemen 4 dan mempunyai
gaji lebih besar dari 50000 :
(DNo = 4) AND (Salary > 50000) (EMPLOYEE)
OPERASI PROJECT
Operasi ini digunakan untuk memilih sejumlah kolom tertentu dari tabel
Bentuk umum :
<Attribute List> (<Nama Relasi>)
Ket : : Operasi Project
<Attribute List> : Satu List dari nama attribute dari relasi
yang dinyatakan dalam (<nama relasi>)
Urutan attribute harus sama dengan yang ditulis dalam list
Operasi project tidak bersifat komutatif
Contoh:
Dapat suatu list dengan menampilkan atrribute Sex dan Salary
Sex, Salary (EMPLOYEE)
Menghasilkan relasi baru yang nilai tuplenya unik satu dengan yang lain
Contoh :
Dapatkan list dari nama (lastname) dan salary dari semua employee yang bekerja pada
departemen 5
Result Lname,Salary ( DNo = 5 (EMPLOYEE))
Atau
Dept_Emp5 Dno = 5 (EMPLOYEE)
Result Lname,Salary (Dept_Emp5)
Nama-nama attribute dari relasi-relasi hasil sementara atau hasil akhir diberikan penamaan
kembali (renaming of attribute)
TEMP Dno = 5 (EMPLOYEE)
HASIL(nama, gaji) Lname,Salary (TEMP)
40
Renaming of attribute sangat berguna dalam operasi yang kompleks yang melibatkan operasi
UNION dan JOIN
Contoh :
Dapatkan untuk setiap Female Employee, satu list nama dari dependent (keluarga) employee
tersebut
FEMALE_EMP Sex = ‘F’ (EMPLOYEE)
EMPNAMES Lname, SSN (FEMALE_EMP)
EMP_DEPENDENT EMPNAMES X DEPENDENT
ACTUAL_DEPENDENT Ssn = ESSN (EMP_DEPENDENT)
RESULT Lname, Dependent_name (ACTUAL_DEPENDENT)
OPERASI JOIN ( )
Digunakan untuk mengkombinasikan “Related Tuple” dari dua relasi menjadi sekumpulan tuple tunggal.
Untuk “relationship” dari sejumlah relasi.
Bentuk Umum :
41
Hasilnya adalah relasi Q (A1, A2,….An, B1, B2,…. Bm) dengan jumlah attribute (n+m)
yang setiap tuplenya adalah kombinasi tuple dari R dan S yang memenuhi kondisi JOIN.
Contoh :
Dapatkan Nama-nama dari manager setiap department:
Tanpa operasi join (menggunakan Cartesian product)
TEMP DEPARTEMENT X EMPLOYEE
DEPT_MGR MGRSSN = SSN (TEMP)
RESULT Dname, Lname (DEPT_MGR)
Dengan menggunakan operasi join :
DEPT_MGR DEPARTEMENT MGRSSN = SSN (EMPLOYEE)
RESULT Dname, Lname (DEPT_MGR)
THETA JOIN ( )
Hanya tuple yang join attributenya tidak null yang ditampilkan dalam hasil
EQUIJOIN ( = )
Jika operator perbandingan hanya melibatkan Equality Operator (=), dalam hasil operasi
setiap tuple pasangan-pasangan attribute yang identik dapat lebih dari satu.
NATURAL JOIN (*)
Karena setiap pasangan attribute yang nilainya identik tidak berguna (superfluous), untuk
mengabaikan attribute yang kedua dalam EQUIJOIN.
Natural Join memerlukan dua join attribute yang mempunya nama attribute yang sama.
Bentuk umum Natural Join :
Q R * (<List1>, <List2>) S,
dimana <list1> adalah list dari I attribute dari relasi R
<list2> adalah list dari I attribute dari relasi S
Definisi standar dari Natural Join :
- Bilamana pasangan join attribute adalah sama, maka operasi natural join dapat
dilakukan langsung :
DEPT_LOCS DEPARTEMENT * DEPT_LOCATION
Natural join pada attribute DNumber
- Tetapi jika join attributenya tidak sama, maka perlu melakukan renaming pada salah
satu relasi yang terlibat
DEPT(Dname, Dnum, MGRSSN, MGRStartDate) DEPARTEMENT
PROJ_DEPT PROJECT * DEPT
42
Sehingga Division bisa dinyatakan dalam urutan operasi , X dan - :
T1 Y (R)
T2 Y ( (S X T1) - R )
T T1 – T2
Contoh :
Dapatkan nama-nama employee yang bekerja pada semua project dimana smith juga bekerja
didalamnya :
SMITH Lname = ’Smith’ ( EMPLOYEE )
SMITH_PNO PNO ( WORKS_ON * ESSN=SSN SMITH )
SSN_PNO PNO, ESSN ( WORKS_ON )
TEMP_RES SSN_PNO SMITH_PNO
RESULT LName ( TEMP_RES * EMPLOYEE )
OPERASI TAMBAHAN
Operasi tambahan meliputi operasi yang tidak dapat dilakukan dengan menggunakan operasi
relasional standar
FUNGSI AGREGATE
- SUM : Menjumlahkan nilai-nilai dari suatu domain
- AVERAGE : Menghitung nilai rata-rata dari domain
- MAXIMUM : Menghitung nilai maksimum dari domain
- MINIMUM : Menghitung nilai minimum dari domain
- COUNT : Menghitung jumlah tuple suatu relasi
Operasi tambahan lain juga sangat berguna dalam operasi (request) yang melibatkan
pengelompokan (grouping) sejumlah tuple dalam suatu relasi berdasarkan nilai beberpa
attributenya, kemudian diikuti dengan fungsi agregasi untuk setiap kelompok secara terpisah.
Bentuk umum operasi function :
ƒ <script F> :
<grouping attribute> ƒ <function list> (<nama relasi>)
Contoh :
Dapatkan setiap nomor departement, jumlah employee dalam departement dan gaji rata-rata
mereka :
R(DNo, Jumlah, Gaji_Rata2) DNo ƒ Count SSN, Average Salary (EMPLOYEE)
Jika tidak ada pengelompokkan attribute maka fungsi-fungsi hanya menghasilkan satu tuple saja.
ƒ Count SSN, Average Salary (EMPLOYEE)
SSN Average Salary
8 35125
43
OUTER UNION (tanpa notasi) disediakan apabila diinginkan melakukan operasi union pada dua relasi
yang tidak union compatible. Nilai-nilai dari tuple untuk attribute yang tidak mempunyai nilai diisi
dengan null value
Contoh :
R(A,B,C,D) S(A, B, C, E)
TUGAS
a. Dapatkan nama-nama pegawai di departemen 5 yang bekerja lebih dari 10 jam per
minggu pada project “Product X”
Output
Fname Lname
John Smith
Joyce English
b. Tampilkan nama-nama employee yang mempunyai keluarga dengan nama depan
sama dengan nama employee tersebut
Output
Fname Lname
Null Null
c. Dapatkan nama-nama employee yang secara langsung menjadi supervisi(anak buah)
dari ‘FranklinWong’
Output
SupervisionFirstName SupervisionLastName
John Smith
Ramesh Naraya
Joyce English
d. Untuk setiap project, dapatkan nama project dan total jam/minggu (untuk semua
employee) yang bekerja pada project tersebut
Output
Pname Sum(Hours)
Product X 52.5
Product Y 37.5
Product Z 50.0
Computerization 55.0
Reorganization 25.0
Newbenefit 55.0
e. Dapatkan nama-nama employee yang bekerja pada setiap project
Output
Fname Lname
Null Null
44
Dname Average(Salary)
Research 33,250
Administration 31,000
Hadquarters 55,000
h. Dapatkan rata-rata salary untuk employee ‘Female’
Output
Average(Salary)
31,000
i. Dapatkan nama dan alamt employee yang bekerja sedikitnya satu project yang
berlokasi di ‘Houston tetapi departement dari employee tersebut tidak berlokasi
di’Houston’
Output
Fname Lname Address
Jennifer Wallace 291 berry,Bellaire,TX
j. Dapatkan nama belakang manager suatu departement yang tidak mempunyai keluarga
Output
Lname
Borg
45
BAB VIII
STRUCTURE QUERY LANGUAGE
A. PERINTAH CREATE
Digunakan untuk mendefinisikan satu relasi baru yang berisikan :
- Nama Relasi
- Nama atribut-atributnya disertai dengan tipe-tipe datanya dan domain constrain /
value
- Key, entity integrity dan referential integrity constraint
Syntax Umum :
CREATE TABLE <Table Name>
( <Column name> <Column Type> [ <attribute constraint>]
{,<Column name> <Column Type> [<Attribute constraint>]}
[ < Table Constraint> {, <Table Constraint>}]
);
Dari Syntax diatas ada definisi yang optional :
- < Attribute Constraint> : Not null yang dapat diikuti dengan Default value dari
attribute
- <Table Constraint> : Untuk menspesifikan Primary Key dan Key Constraint dan
Foreign Key (Referential Integerity Constraint)
Contoh
CREATE TABLE EMPLOYEE
Fname VarChar(9) Not null,
Minit Char,
Lname VarChar(15) Not null,
SSN Char(9) Not null,
BDate Date,
Address VarChar(30)
Sex Char,
Salary Decimal(10,2)
SuperSSN Char(9),
DNo Int Not null Default 1,
Constraint EmpPK
Primary Key (SSN),
Constraint EmpSuperFK
Foreign Key (SuperSSN) References Employee (SSN)
On Delete set null
On Update Cascade,
Constraint EmpDeptFK
Foreign Key (DNo) References Department (Dnumber)
On Delete Set Default
On Update Cascade
46
B. PERINTAH DROP SCHEMA DAN DROP TABLE
Digunaka untuk menghapus schema atau sejumlah table dari basis data, keduanya boleh
diikuti dengan option : Cascade atau Restrict
Syntax :
DROP SCHEMA <Schema name>
DROP TABLE <Table name>
Contoh :
DROP SCHEMA Company Cascade
Ket : Menghapus schema basis data company dan semua tabel, domain dan elemen-elemen
lain didalamnya,
Option Restrict digunakan apabila diinginkan untuk menghapus jika dan hanya jika schema
tidak mempunyai elemen didalamnya
C. PERINTAH ALTER
Digunakan untuk mengganti atau merubah definisi dari base table yang telah dibuat
Tindakan atau action yang diakibatkan oleh perintah ini dapat meliputi :
- Adding atau dropping suatu kolom atau attribute
- Mengganti definisi suatu attribute
- Adding atau dropping table constraint
Contoh :
ALTER Table Company.Employee DROP Address Cascade;
Menghapus satu kolom dari suatu table, harus diikuti oleh salah satu pilihan : Cascade atau
Restrict.
Dengan Cascade, maka semua constraint dan views yang mengacu pada kolom akan dihapus
secara otomatis dari schema
Jika Restrict dipilih, maka perinta akan sukses bilamana tidak ada constraint atau view yang
mengacu pada kolom yang akan dihapus.
47
Dapat digunakan untuk menyingkat penulisan qualifier suatu attribute dalam kasus untuk
menghindari ambiquity,contoh berikut merupakan penulisan yang lain untuk query yang
sama dengan Q2A
A. INSERT COMMAND
Digunakan untuk menyisipkan/menambahkan satu (single) tuple kedalam suatu relasi
VARIATION
Menyisipkan multiple tuples kedalam suatu relasi sehubungan dengan Creating Relation dan
Loading relasi yang dibuat dengan hasil suatu query dari relasi yang telah ada.
CREATE Temporary table dengan heading berupa nama, jumlah employee, dan total salaries
dari setiap department :
CREATE Table Depts-Info ( Dept-Name Varchar (15),
No-Of-Emps Integer,
Total-Sal Integer
);
48
B. DELETE COMMAND
Digunakan untuk menghapus sejumlah tuple dari suatu relasi.
Tergantung dari kondisi penghapusan yang dinyatakan dalam Where Clause, maka jumlah
tuple yang dihapus akan bervariasi
Tanpa Where clause, berarti menghapus semua tuple yang ada dalam tabel.
C. UPDATE COMMAND
Digunakan untuk memodifikasi nilai-nilai attribute dari satu atau lebih tuple yang dipilih
UPDATE Project
SET Plocation = ‘Bellaire’, Dnum = 5
WHERE Pnumber = 10
UPDATE employee
SET Salary = Salary * 1.15
WHERE DNo In ( Select Dnumber
From Department
Where Dname = ‘Research’
)
Setiap perintah update secara eksplisit hanya boleh menspesifikasikan satu relasi saja
Query SQL yang dispesifikasikan tanpa ‘where’ clause mengindikasikan tidak adanya
kondisi pemilihan tuple, sehingga semua tuple dari relasi yang dinyatakan dalam FROM
clause dipilih sebagai hasil query
Ada relasi yang dinyatakan dalam FROm clause lebih dari satu,maka Cross Product dari
semua kombinasi yang mungkin dihasilkan :
Dapatkan semua kombinasi dari SSN employee dan Dname Department
49
SELECT SSN, Dname
FROM Employee, Department
Tanda asterik ?(*) digunakan dalam Select clause bilamana diinginkan untuk melakukan
retrieve dari semua attribute dari tuple-tuple terpilih
Retrieve semua nilai-nilai attribute dari employee tuples yang bekerja pada departemen 5
SELECT *
FROM employee
Where Dno = 5
Retrieve semua nilai-nilai attribute dari employee dan attribute Departemen dimana
employee tersebut bekerja bagi setiap employee yang bekerja pada departemen ‘research’:
SELECT *
FROM employee, Departement
WHERE Dname = ‘Research’ and Dno = Dnumber
SQL tidak memperlakukan suatu relasi/tabel sebagai suatu set,sehingga adanya tuple yang
muncul lebih dari sekali tidak dieliminasi secara otomatis dalam hasil query, alasanya:
- Proses eliminasi ‘duplicate tuples’ merupakan operasi yang mahal, dimana satu cara
untuk mengimplementasikan ini adalah dengan mensorting tuples dan kemudian
mengeliminasi ‘duplicate tuples’ yang ada.
- User mungkin menginginkan untuk melihat duplicate tuples dalam hail query
- Bilamana suatu fungsi agregrate digunakan terhadap sejumlah tuple dalam SQL, hampir
dalam semua kasus tidak diinginkan untuk mengeliminasi duplikasi tuple yang ada.
Untuk mengeliminasi duplikasi tuple dari hasil suatu query dalam SQL dilakukan dengan
menggunakan keyword Distinct dalam Select Clause.
Contoh :
Retrieve gaji yang diterima oleh setiap employee :
Selectalary Select Distinct Salary
From Employee From employee
Syntax Umum :
SELECT [Distinct] <Attribute List>
FROM ( <Table name>{ <alias>} | <joined table>)
{, <table name> {<alias>} | <jpined table>)}
[ WHERE <condition>]
[ GROUP BY <grouping attribute>
[HAVING <group selection condition>]]
[ OREDER BY <column name> [<order>]
50
{, <column name> [<order>] } ]
<attribute list> ::= (* | (<column name> | <function>
(( [Distinct] <column name> | * )))
{, <column name> | <function>
(( [Distinct] <column name> | * )) } ))
<grouping attribute> := <column name> { , <column name> }
<Order> := (ASC | Desc)
Bentuk dasar dari SELECT statement disebut dengan ‘SELECT FROM WHERE Blok’ yang
mempunyai bentuk umum :
Contoh :
Retrieve birthdate dan address dari employee yang bernama ‘John B. Smith’
SELECT Bdate, Address
FROM Employee
WHERE Fname = ‘John’ And Minit = ‘B’ And LnAme = ‘Smith’
Retrieve name dan address dari semua employee yang bekerja pada departemen ‘Research’ :
SELECT Fname, Lname, Address
FROM Employee, Department
WHERE Dname = ‘Research’ and Dnumber = DNo
Untuk setiap project yang berlokasi di ‘Stafford’, dapatkan daftar nomor project, nomor
department pengendalinya, dan nama, alamt serta tanggal lahir dari manajer department
pengendali.
SELECT Pnumber, Dnum, Lname, Address, Bdate
FROM Project, Department, Employee
WHERE Dnum = Dnumber and MgrSSN = SSN and Plocation = ‘Stafford’
Oleh karena sejumlah relasi yang berbeda mungkin mempunyai nama-nama attribute yang
sama; maka untuk menghindariambiquity (kerancuan), suatu query yang mengacu ke dua
atau lebih nama attribute yang sama harus menggunakan qualifier nama attribute dan nama
relasi yang diacu (dipisahkan oleh tanda ‘. ‘)
Sebagai contoh, misalnya attribute Lname dan DNo pada relasi Employee diganti dengan
Name dan Dnumber. Pada attribute Dname dalam relasi Department diganti dengan Name,
maka query Q2 menjadi :
SELECT Fname, Employee. Name, Address
FROM Employee, Department
WHERE Department.Name = ‘Research’ and
Department.Dnumber = Employee.Dnumber
Ambiquity juga terjadi pada kasus dimana suatu query mengacu pada relasi yang sama dua
kali (recursive relationship), contoh :
Untuk setiap employee, retrieve first dan last name dari employee, dan first dan last name
dari supervisor langsung dari employee
51
SELECT E.Fname, E.Lname, S.Fname, S.Lname
FROM Employee E, Employee S
Where E.SuperSSN = S.SSN
Nama alias dapat dituliskan langsung setelah nama relasi, atau dituliskan setelah keyword
‘As’ :
FROM Employee As E
Atau dapat juga digunakan untuk menamakan kembali (renaming) attribute-attribute suatu
relasi dalam FROM Clause :
EMPLOYEE As E(FN, MI, LN, SSN, BD, ADDR, SEX, SAL, SSSN, DNO)
Dapat digunakan untuk menyingkat penulisan qualifier suatu attribute dalam kasus untuk
menghindari ambiquity,contoh berikut merupakan penulisan yang lain untuk query yang
sama.
Query SQL yang dispesifikasikan tanpa ‘where’ clause mengindikasikan tidak adanya
kondisi pemilihan tuple, sehingga semua tuple dari relasi yang dinyatakan dalam FROM
clause dipilih sebagai hasil query
SELECT SSN
FROM EMPLOYEE
Ada relasi yang dinyatakan dalam FROm clause lebih dari satu,maka Cross Product dari
semua kombinasi yang mungkin dihasilkan :
Dapatkan semua kombinasi dari SSN employee dan Dname Department
Tanda asterik ?(*) digunakan dalam Select clause bilamana diinginkan untuk melakukan
retrieve dari semua attribute dari tuple-tuple terpilih
Retrieve semua nilai-nilai attribute dari employee tuples yang bekerja pada departemen 5
SELECT *
FROM employee
Where Dno = 5
Retrieve semua nilai-nilai attribute dari employee dan attribute Departemen dimana
employee tersebut bekerja bagi setiap employee yang bekerja pada departemen ‘research’:
SELECT *
52
FROM employee, Departement
WHERE Dname = ‘Research’ and Dno = Dnumber
SELECT *
FROM Employee, Department
SQL tidak memperlakukan suatu relasi/tabel sebagai suatu set,sehingga adanya tuple yang
muncul lebih dari sekali tidak dieliminasi secara otomatis dalam hasil query, alasanya:
- Proses eliminasi ‘duplicate tuples’ merupakan operasi yang mahal, dimana satu cara
untuk mengimplementasikan ini adalah dengan mensorting tuples dan kemudian
mengeliminasi ‘duplicate tuples’ yang ada.
- User mungkin menginginkan untuk melihat duplicate tuples dalam hail query
- Bilamana suatu fungsi agregrate digunakan terhadap sejumlah tuple dalam SQL, hampir
dalam semua kasus tidak diinginkan untuk mengeliminasi duplikasi tuple yang ada.
Untuk mengeliminasi duplikasi tuple dari hasil suatu query dalam SQL dilakukan dengan
menggunakan keyword Distinct dalam Select Clause.
Contoh :
Retrieve gaji yang diterima oleh setiap employee :
Select Salary Select Distinct Salary
From Employee From employee
Relasi yang dihasilkan oleh ketiga operasi ini berupa set of tuple
Oleh karena ketiga operasi set diatas hanya boleh dikenakan terhadap relasi-relasi yang
union_compatible, maka kedua relasi yang dikenakan operasi harus :
- Mempunyai attribute yang sama
- Mempunyai urutan attribute yang sama
** Dapatkan satu list dari semua nomor project yang melibatkan seorang employee yang
bernama ‘Smith’, baik sebagai seorang pekerja biasa atau sebagai seorang manajer dari
department yang mengendalikan project :
SELECT Pnumber
FROM Project, Department, Employee
WHERE Dnum = Dnumber and MgrSSN = SSN and Lname = ‘Smith”
UNION
SELECT Pnumber
FROM Project, WorksOn, Employee
WHERE Pnumber = Pno and ESSN = SSN and Lname = ‘Smith’
53
H. NESTED QUERY AND SET COMPARISONS
Nested query sangat cocok digunakan dalam suatu query dimana nilai-nilai yang ada diambil
dan digunakan dalam suatu kondisi perbandingan
Dalam nested query, suatu query SELECT yang lengkap digunakan dalam Where clause dari
query yang lain (Outer query)
Spesifikasi ** dengan menggunakan nested query
Dalam contoh diatas, operator perbandingan ‘In’ digunakan untuk membandingkan satu nilai
v dengan satu set (atau multiset) nilai V dan menghasilkan evaluasi True jika v V.
Operator In juga dapat membandingkan suatu tuple dari nilai-nilai yang dituliskan dalam
tanda kurung dengan satu set tuple yang union compatible
Dapatkan social security number dari semua employee yang bekerja pada project dan jumlah
jam yang sama dengan project dan jumlah jam diamana ‘Smith’ terlibat :
Selain operator In, terdapat sejumlah operator perbandingan yang dapat digunakan untuk
membandingkan satu nilai v (biasanya satu attribute) terhadap satu set V (biasnya nested
query) :
Operator = Any (atau = Some) ekivalen dengan operator In, yang memberikan nilai true jika
nilai v sama dengan beberapa nilai dalam set V.
Operatro-operaotr lain yang dapat dikombinasikan dengan Any (atau Some) adalah : >, >=,
<, <= dan <>. Keyword ALL juga dapat dikombinasikan dengan salah satu operator-operator
ini, misalnya :
Kondisi perbandingan (v > all V) akan memberikan nilai True jika nilai v lebih besar dari
semua nilai dalam set V.
54
Retrieve nama-nama employee yang gajinya lebih besar dari pada gaji semua employee
dalam departemen 5
Dalam nested query yang melibatkan relasi dengan nama yang sama dengan outer query,
maka acuan terhadap Unqualified Attribute hanya diperbolehkan dilakukan terhadap nested
query yang terdalam. Sedang acuan terhadap outer query dilakukan dengan menggunakan
nama alias dari relasi yang diacu.
Retrieve nama dari setiap employee yang mem[unyai dependent dengan first name dan sex
yang sama dengan employee tersebut :
Secara umum, suatu query dengan structure nested Select… From,,, Where…. Dan
menggunakan operator perbandingan = atau In selalu dapat dinyatakan sebagai query dengan
struktur satu blok saja
Catatan :
Bilamana suatu kondisi dalam Where clause dari suatu nested query mengacu beberapa
attribute dari suatu relasi yang dideklarasi dalam outer query, maka kedua query dikatakan
saling berkorelasi (correlated).
EXISTS (Q) : Memberikan nilai return True, jika dalam hasil query Q minimal terdiri dari
satu tuple
55
NOT EXISTS (Q) : Memberikan nilaai return TRUE, jika tak satupun tuple yang dihasilkan
dalam hasil query Q
Dapatkan list nama-nama manager yang paling tidak mempunyai satu dependent
J. DIVISION
Retrieve nama-nama employee yang bekerja pada semua proyek yang dikontrol oleh
departement nomor 5
56
Cari setiap employee sedemikian rupa sehingga (tidak terdapat suatu project yang
dikendalikan oleh departement 5 dimana employee tersebut (tidak bekerja didalamnya))
Digunakan untuk menyatakan nilai-nilai set yang eksplisit dalam suatu Where clause
Retrieve SSN dari semua employee yang bekerja pada project nomor 1, 2 dan 3
SELECT Distinct ESSN
FROM Works-On
WHERE Pno In (1,2,3)
= NULL Is Null
NULL Is Not Null
Untuk setiap Employee, retrieve last name dari employee dan lastname dari supervisor
langsung dari employee tersebut
Retrieve nama dan address dari semua employee yang bekerja pada Research Departemen
57
SELECT Fname, Lname, Address
FROM (Employee NATURAL JOIN ( Department AS
Dept(Dname, DNo,MSSN, MSDate)))
WHERE Dname = ‘Research’
Fungsi Aggregate :
- Count
- Sum Digunakan pada Select Clause atau Having clause
- Max
- Min
- Avg
Dapatkan jumlah salary dari semua employee, maksimum salary, minimum salary dan
average salary dari semua employee
Dapatkan jumlah salary dari semua employee, maksimum salary, minimum salary dan
average salary dari semua employee dari Research Departement
Retrieve jumlah employee dalam company, dan jumlah employee dalam Research
Department
SELECT Count (*)
FROM Employee
SELECT Count(*)
FROM Employee, Department
WHERE DNo = Dnumber and DName = ‘Research’
58
SELECT Lname, Fname
FROM Employee
WHERE ( SELECT Count (*)
FROM Dependent
WHERE SSN = ESSN
) 2
Untuk setiap department, retrieve departement number, jumlah employee dalam department
dan juga average salary dalam department tersebut :
Untuk setiap project, retrieve nomor dan nama project, serta jumlah employee yang bekerja
pada proyek tersebut :
Pasangan clause “Group by” dan ‘Having’ digunakan untuk melakukan retrieving
pengelompokkan yang memenuhi kondisi tertentu
Untuk setiap project yang melibatkan employee sebanya 2 atau lebih, retrieve project
number, project name, dan jumlah employee yang bekerja didalamnya :
Hitung jumlah pegawai yang mempunyai salary > $40.000, dalam setiap departement, tetapi
hanya untuk departement yang mempunyai jumlah pegawai > 5
59
)
GROUP BY Dname
Retrieve semua employee yang dilahirkan dalam tahun 50-an (1950 – 1959)
Tunjukkan hasil perubahan gaji dari setiap pegawai yang bekerja pada project ‘Product X’
jika diberikan kenaikan sebesar 10 % :
Untuk mendapatkan hasil yang terurut berdasarkan satu atau lebih nilai-nilai attribute dapat
digunakan : ORDER BY Clause
Dapatkan satu list dari employee dan project dimana ia bekerja; terurut berdasarkan nama
department, dan dalam setiap department diurut secara alphabetical order berdasarkan first
name:
60
Pilihan Eksplisit : ASC (Ascending) | DESC (Descending)
A. KONSEP VIEW
- Dalam terminology SQL, View adalah sebuah tabel yang diturunkan dari tabel-tabel yang
lain. Tabel-tabel yang lain dapat berupa : Base Table atau View Lain yang telah
didefinisikan sebelumnya.
- View dapat dipandang sebagai virtual Table, sehingga tidak perlu ada secara fisik (tidak
disimpan dalam database)
- Query terhadap view dapat dilakukan sepert halnya query pada tabel biasa (base table).
Tetapi untuk operasi-operasi update terdapat beberapa pembatasan
- View dapat digunakan sebagai suatu cara untuk menspesifikasikan suatu tabel yang perlu
diacu dalam frekuensi yang sering, tetapi ia tidak perlu dibuat secara permanen.
B. SPESIFIKASI VIEW
Contoh
CREATE View Works-On-1
As Select Fname, Lname, Pname, Hours
From Employee, Project, Works-On
Where SSN = ESSN And Pno = Pnumber;
Retrieve last name dan first name dari semua employee yang bekerja pada ‘Project X’:
- View mempunyai sifat selalu up-to-date. Jadi jika dilakukan modifikasi terhadap nilai-
nilai tupe dari base tabel yang digunakan dalam mendefinisikan view maka secara
otomatis nilai-bilai view juga akan berubah pada saat dilakukan query
- View dapat dihapus dengan menggunakan perintah DROP VIEW
DROP View Works-On-1
61
C. UPDATING VIEW dan IMPLEMENTASINYA
- Implementasi dari updating view masih merupakan active research area, terutama untuk
updating yang melibatkan modifikasi dari sejumlah base table yang digunakan untuk
mendefinisikan view.
- Implementasi dari updating view dilakukan dengan cara memetakan perintah update
terhadap base table yang digunakan.
Dalam SQL , Assertion digunakan untuk menyatakan constraints yang tidak termasuk dalam
kategori costriants yang ada (Selain key, entity dan referential integrity constraint)
Statement :
CREATE ASSERTION
Setiap assertion diberikan nama constraints dan dispesifikasikan melalui suatu kondisi yang
serupa dengan where clause
Contoh
Spesifikasi constraint :
Salary dari employee harus tidak lebih besar dari pada salary manager dari department
dimana employee bekerja :
62
CREATE Index Names-Index
On Employee ( Lname ASC, Fname DESC, Minit )
Suatu base tabel hanya boleh mempunyai paling banyak satu clustering index, tetapi dapat
mempunyai banyak non-clustering index.
63