modul basis data

75
MODUL TEORI PERANCANGAN BASIS DATA Disusun oleh : Arief Hidayat. S.Kom Sekolah Tinggi Manajemen Informatika Dan Komputer ProVisi Jl. Kyai Saleh 12-14 Semarang ( (024) 8418206 Website: www.provisi.ac.id E-Mail : [email protected] 2008

Upload: rahmat-prihartono

Post on 22-Oct-2015

57 views

Category:

Documents


0 download

DESCRIPTION

sebuah karya tulis berisi seputar pemrograman database seperti sql, DBMS, DML, dll. terdiri atas 4 bab

TRANSCRIPT

Page 1: Modul Basis Data

MODUL TEORI

PERANCANGAN BASIS DATA

Disusun oleh :Arief Hidayat. S.Kom

Sekolah Tinggi Manajemen Informatika Dan Komputer ProVisi

Jl. Kyai Saleh 12-14 Semarang ( (024) 8418206

Website: www.provisi.ac.id E-Mail : [email protected]

2008

Page 2: Modul Basis Data

ii

Page 3: Modul Basis Data

iii

Kata Pengantar

Alhamdulillah atas berkat Rahmat dan Karunia yang telah dilimpahkan oleh Allah

SWT, penyusun dapat menyelesaikan Modul Teori Perancangan Basis Data ini

dengan baik. Modul ini disusun dengan harapan dapat digunakan sebagai modul

perkuliahan teori “Perancangan Basis Data”.

Penyusun menyadari masih banyak kekurangan dalam penyusunan Modul ini

karena keterbatasan Penyusun. Untuk itu Penyusun mengharapkan saran dan kritik

yang membangun demi kesempurnaan Modul ini. Penyusun dapat dihubungi lewat e-

mail [email protected]

Akhir kata Penyusun mengucapkan terima kasih kepada semua pihak yang

membantu dalam penyusunan Modul ini. Khususnya buat istriku tercinta yang telah

memberikan semangat dan bantuan kepada Penyusun hingga terselesainya Modul ini.

Dan semoga upaya sederhana dari Penyusun ini berguna bagi semua pihak yang

membutuhkan referensi ini

Semarang, Januari 2008

Penyusun

Page 4: Modul Basis Data

iv

Page 5: Modul Basis Data

v

Daftar Isi

Kata Pengantar....................................................................................................... iiiDaftar Isi...................................................................................................................vBab 1: Pendahuluan Basis Data............................................................................. 1

Pendahuluan .......................................................................................................... 1Database Management System (DBMS) ................................................................ 1Tujuan dari Sistem Database.................................................................................. 1Tingkatan (level) dari Abstraksi............................................................................. 2View dari Data ...................................................................................................... 2Instances dan Schemas .......................................................................................... 2Model Data............................................................................................................ 3Data Manipulation Language (DML)..................................................................... 3Data Definition Language (DDL) .......................................................................... 3Model Relational ................................................................................................... 3SQL....................................................................................................................... 4Desain Database .................................................................................................... 5Model Entity-Relationship..................................................................................... 5Model Data Object-Relational ............................................................................... 5XML: Extensible Markup Language ..................................................................... 5Manajemen Penyimpanan (Storage)....................................................................... 6Pemrosesan Query................................................................................................. 6Manajemen Transaksi (Transaction Management ) ............................................. 6Pengguna Database................................................................................................ 7Keseluruhan Struktur Sistem ................................................................................. 7Sejarah dari Sistem Database ................................................................................. 8

Bab 2: Model Entity-Relationship .......................................................................... 9Entity Sets ............................................................................................................. 9Atribut................................................................................................................... 9Relationship Sets ................................................................................................. 10Tingkatan dari Relationship Set ........................................................................... 11Mapping Cardinalities ......................................................................................... 11Mapping Cardinalities mempergunakan Desain ER ............................................. 13Diagram E-R ....................................................................................................... 13Diagram E-R dengan atribut Composite, Multivalued, dan Derived .................... 14Relationship Sets dengan Attributes..................................................................... 14Role (Peran) ........................................................................................................ 14Cardinality Constraints ........................................................................................ 15Relationship One-To-Many ................................................................................. 15Relationships Many-To-One................................................................................ 15Relationship Many-To-Many............................................................................... 15Participation (keikutsertaan) dari sebuah Entity Set dalam sebuah Relationship Set............................................................................................................................ 16Notasi alternatif untuk Cardinality Limits ............................................................ 16Keys (Kunci) ....................................................................................................... 17Keys untuk Relationship Sets............................................................................... 17Cardinality Constraints pada Ternary Relationship .............................................. 17Binary Vs. Non-Binary Relationships .................................................................. 18

Page 6: Modul Basis Data

vi

Mengkonversi Relationships Non-Binary ke Bentuk Binary ................................ 18Isu Desain............................................................................................................ 18Entity Sets Weak (Lemah) ................................................................................... 19Specialization (Spesialisasi)................................................................................. 20Generalization (Generalisasi) ............................................................................... 20Mendesain Constraints pada sebuah Specialization/Generalization ...................... 21Aggregation......................................................................................................... 21Keputusan mendesain E-R................................................................................... 22Kesimpulan dari simbol yang digunakan dalam Notasi E-R ................................. 23Notasi Alternatif E-R........................................................................................... 24UML ................................................................................................................... 24Reduksi dari Skema E-R ke Tabel ....................................................................... 26Menyatakan Entity Sets sebagai Tabel ................................................................. 26Atribut Composite dan Multivalued..................................................................... 26Menyatakan Weak Entity Sets ............................................................................. 27Menyatakan Relationship Set sebagai Tabel ........................................................ 27Tabel Redundansi ................................................................................................ 28Menyatakan Specialization sebagai Tabel............................................................ 28Relation Berhubungan ke Aggregation ................................................................ 29

Bab 3 Model Relasional......................................................................................... 31Contoh dari Relasi ............................................................................................... 31Struktur Dasar ..................................................................................................... 31Tipe Atribut......................................................................................................... 31Skema Relasi....................................................................................................... 31Instance Relasi..................................................................................................... 32Relasi tidak urut................................................................................................... 32Database.............................................................................................................. 32Kunci (Key)......................................................................................................... 33Bahasa Query ...................................................................................................... 34Relational Algebra............................................................................................... 34Operasi Select...................................................................................................... 35Operasi Project .................................................................................................... 36Operasi Union ..................................................................................................... 37Operasi Set Difference......................................................................................... 38Operasi Cartesian-Product ................................................................................... 39Komposisi dari Operasi ....................................................................................... 39Operasi Rename .................................................................................................. 40Ketentuan Resmi ................................................................................................. 42Operasi Tambahan............................................................................................... 42Operasi Set-Intersection....................................................................................... 43Operasi Natural-Join............................................................................................ 43Operasi Division.................................................................................................. 44Operasi Assignment............................................................................................. 46Operasi Perluasan Relational-Algebra.................................................................. 47Generalized Projection......................................................................................... 47Fungsi dan Operasi Aggregate ............................................................................. 47Outer Join............................................................................................................ 49Nilai Null ............................................................................................................ 50Modifikasi dari Database ..................................................................................... 50Deletion............................................................................................................... 51

Page 7: Modul Basis Data

vii

Insertion .............................................................................................................. 51Updating.............................................................................................................. 52

Bab 4 Normalisasi.................................................................................................. 54Tabel ................................................................................................................... 55Komponen Tabel ................................................................................................. 55Beberapa ketentuan dalam penyusunan tabel ....................................................... 55Data Duplikasi dan Data Rangkap ....................................................................... 55Nilai Data Ganda (Repeating Group) ................................................................... 56Determinan (Determinant) dan Identitas (Identifier) ............................................ 58Identitas............................................................................................................... 58Tujuan normalisasi .............................................................................................. 58Bentuk Normal Pertama....................................................................................... 58Bentuk normal kedua........................................................................................... 58Bentuk normal ketiga........................................................................................... 59Keuntungan bentuk tabel normal ......................................................................... 59

DAFTAR PUSTAKA .............................................................................................. 1

Page 8: Modul Basis Data

viii

Page 9: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 1 STMIK ProVisi Semarang

Bab 1: Pendahuluan Basis Data

PendahuluannTujuan dari Sistem DatabasenMenampilkan DatanBahasa DatabasenDatabase RelasionalnDesain DatabasenDatabase semiterstruktur dan berdasarkan obyeknQuery dan Penyimpanan DatanManajemen TransaksinArsitektur DatabasenAdministrator dan Pengguna DatabasenStruktur keseluruhannSejarah dari Sistem Database

Database Management System (DBMS)nDBMS berisi informasi terutama tentang perusahaanlKoleksi dari data yang saling berhubunganlSekumpulan program untuk mengakses datalSebuah lingkungan yang baik dan efisien untuk digunakannAplikasi Database :lPerbankan : semua transaksilPerusahaan Penerbangan : reservasi, jadwallUniversitas: pendaftaran, penilaianlSales: nasabah, produk, pembelianlSales: customers, products, purchaseslPengecer online: pelacakan pesananlPabrik : produksi, inventory, pesanan, persediaanlSumber Daya Manusia: record pegawai, gaji, potongan pajaknDatabase menyentuh semua aspek kehidupan kita

Tujuan dari Sistem DatabasenSebelumnya, aplikasi database dibangun langsung di atas sistem filenKekurangan dari penggunaan sistem file untuk menyimpan data:lData redundancy dan inconsistency4Format file banyak, duplikasi dari informasi dalam file yang berbedalKesulitan dalam mengakses data4Perlu untuk menulis program baru untuk membawa masing-masing tugas barulData isolation — format dan file yang banyaklMasalah integritas4Konstrain yang terintegritas (misalnya saldo rekening >0) menjadi “tersamar” dalamkode program daripada dinyatakan secara tegas4Sulit untuk menambah constraint baru atau mengubah yang sudah adalPembaruan yang tidak bisa dibagi lagi (Atomicity of updates)4Kerusakan mungkin meninggalkan database dalam status tidak konsisten denganupdate sebagian yang dibawa

Page 10: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 2 STMIK ProVisi Semarang

Contoh : Transfer dana dari satu rekening ke rekening lain seharusnya lengkap atautidak terjadi sama sekalilAkses bersama-sama (concurrent) dengan beberapa user4Diakses bersama-sama memerlukan performance4Akses bersama yang tidak terkendali dapat memulai untuk ketidakkonsistenanContoh : Dua orang membaca saldo dan mengupdate dalam waktu yang bersamaanlMasalah keamanan4Sulit untuk menyediakan akses user untuk beberapa data, tetapi tidak semua datanSistem Database menawarkan solusi untuk semua permasahan di atas

Tingkatan (level) dari AbstraksinPhysical Level : menjelaskan bagaimana sebuah record (misalnya nasabah)disimpannLogical Level : menjelaskan data yang disimpan dalam database dan hubungan(relationships) di antara data

type nasabah= record nasabah_id : string; nasabah_name : string; nasabah_street : string; nasabah_city : integer;end;

nView Level : program aplikasi yang menyembunyikan detail dari tipe data. Viewdapat juga menyembunyikan informasi (seperti gaji karyawan) untuk tujuankeamanan

View dari Data

Instances dan SchemasnHampir sama dengan tipe dan variabel dalam bahasa pemrogramannSchema – struktur logical dari databaselContoh : database terdiri dari informasi tentang sekelompok pelangan dan rekeningdan hubungan (relationship) antara merekalDapat disamakan dengan informasi tipe dari variabel dalam programlPhysical schema: desain database pada physical levellLogical schema: desain database pada logical levelnInstance – isi sesungguhnya dari database terutama pada waktu tertentulDapat disamakan dengan nilai dari variabelnPhysical Data Independence – kemampuan untuk memodifikasi physical schematanpa mengubah logical schema

Page 11: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 3 STMIK ProVisi Semarang

lAplikasi tergantung pada logical schemalPada umumnya, interface antara level dan componen yang berbeda seharusnya lebihbaik didefinisikan sehingga perubahan di beberapa bagian tidak begitu mempengaruhiyang lainnya.

Model DatanKumpulan dari tool untuk menggambarkanlDatalData relationshipslData semanticslData constraintsnModel RelationalnModel data Entity-Relationship (sebagian besar untuk desain database)nModel data berdasarkan Object (Object-oriented dan Object-relational)nModel data semiterstruktur (XML)nModel lama lainnya:lModel Jaringan (Network)lModel Hirarki

Data Manipulation Language (DML)nBahasa untuk mengakses dan memanipulasi data yang diorganisasikan oleh modedata yang sesuailDML juga dikenal sebagai bahasa querynDua penggolongan dari bahasalProcedural – pengguna menentukan data apa dibutuhkan dan bagaimana untukmendapatkan data tersebutlDeclarative (nonprocedural) – pengguna menentukan data apa dibutuhkan tanpamenentukan bagaimana untuk mendapatkan data tersebutnSQL adalah bahasa query yang paling banyak digunakan

Data Definition Language (DDL)nMenentukan cara menulis (notasi ) untuk mendefinisikan skema databaseContoh : create table rekening (

rekening-number char(10),saldo integer)

nDDL compiler menghasilkan sekumpulan tabel yang disimpan dalam kamus data(data dictionary)nKamus Data berisi metadatalSkema DatabaselPenyimpanan Data (Data storage) dan bahasa definisi (definition language)4Menentukan struktur penyimpanan dan mengakses metode yang digunakanlIntegrity constraints4Domain constraints4Referential integrity (references constraint dalam SQL)4Pernyataan yang tegas (Assertions)lOtorisasi (Authorization)

Model RelationalnContoh dari data tabular dalam model relational

Page 12: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 4 STMIK ProVisi Semarang

Contoh Database Relasional

SQLnSQL: bahasa non-procedural yang banyak digunakanlContoh : Temukan nama nasabah dari tabel nasabah dengan nasabah-id 192-83-7465 select nasabah.nasabah_name from nasabah where nasabah.nasabah_id = 192-83-7465lContoh: Temukan saldo semua rekening yang dipunyai oleh nasabah dengannasabah-id 192-83-7465 select rekening.saldo from depositor, rekening where depositor.nasabah_id = 192-83-7465 and depositor.rekening_number =account.rekening_numbernProgram Aplikasi umumnya mengakses database melalui salah satu cara dari berikutlTambahan bahasa untuk mengijinkan melekatkan SQL

Page 13: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 5 STMIK ProVisi Semarang

lAntarmuka program aplikasi (misalnya ODBC/JDBC) yang mengijinkan query SQLuntuk dikirim ke database

Desain DatabaseProses dari mendesain struktur umum dari database :

nDesain logical – Menentukan pada skema database. Desain database membutuhkanyang kita namakan kumpulan yang baik dari skema hubunganlKeputusan bisnis (business decision)– atribut apa yang seharusnya kita catat dalamdatabase?lKeputusan ilmu komputer (computer science decision) – skema hubungan apa yangseharusnya kita punyai dan bagaimana seharusnya atribut di bagikan di antara skemahubungan yang bermacam-macam?nDesain Physical – Menentukan pada layout fisik dari database

Model Entity-RelationshipnModel sebuah perusahaan sebagai kumpulan dari entitas (entities) dan hubungan(relationship)lEntity: “sesuatu” atau “obyek” dalam perusahaan yang dapat dibedakan dari obyeklain4Dijelaskan dengan sekumpulan atributlRelationship: sebuah gabungan di antara beberapa entitasnDiwakili secara diagram dengan sebuah diagram entity-relationship

Model Data Object-RelationalnPerluasan model data relasi dengan menyertakan orientasi obyek dan konsep obyekdengan tipe data yang ditambahkannMengijinkan atribut darinAllow attributes of tuples to have complex types, including non-atomic values suchas nested relations.nPreserve relational foundations, in particular the declarative access to data, whileextending modeling power.nProvide upward compatibility with existing relational languages.

XML: Extensible Markup LanguagenDitetapkan oleh WWW Consortium (W3C)nSebenarnya diniatkan sebagai document markup language tidak sebagai databaselanguage

Page 14: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 6 STMIK ProVisi Semarang

nKemampuan untuk menentukan tag baru, dan untuk membuat struktur tag yangbersarang membuat XML menjadi cara yang baik untuk menukar data, tidak hanyadokumennXML menjadi dasar untuk semua format pertukaran data generasi barunTermasuk tool yang tersedia untuk menguraikan (parsing), melihat (browsing) danmenanyakan (querying) dokumen/data XML

Manajemen Penyimpanan (Storage)nStorage manager adalah modul program yang menyediakan interface antara datalevel rendah (low-level) yang tersimpan dalam database dan program aplikasi danquery yang dikirim ke sistemnStorage manager bertanggung jawab untuk tugas sebagai berikut :lBerinteraksi dengan file managerlPenyimpanan yang efisien, mendapatkan kembali dan memperbarui datanPokok persoalan (issue):lAkses penyimpanan (storage access)lOrganisasi file (File organization)lIndexing dan hashing

Pemrosesan Query1. Menguraikan dan menerjemahkan (Parsing and translation)2. Optimasi (Optimization)3. Evaluasi (Evaluation)nCara alternatif dari meng-evaluasi query yang diberikanlEkspresi yang samalAlgoritma yang berbeda untuk masing-masing operasionalnBiaya yang berbeda antara cara yang baik dan buruk dari meng-evaluasi query dapatmenjadi besarnMemerlukan perkiraan biaya dari operasionallTergantung tingkat kritis pada informasi secara statistik tentang hubungan yangmana database harus memeliharanyalMemerlukan untuk memperkirakan statistik untuk hasil tingkat menengah untukmenghitung biaya dari ekspresi yang kompleks

Manajemen Transaksi (Transaction Management )ntransaksi adalah kumpulan dari operasional yang menjalankan fungsi logika tunggaldalam aplikasi databasenKomponen manajemen transaksi memastikan bahwa database yang tertinggaldalam keadaan konsisten (benar) meskipun sistem rusak (misalnya kerusakan powerdan sistem operasi crash) dan transaksi rusaknConcurrency-control manager mengendalikan interaksi antara transaksi yangbersamaan, untuk memastikan konsistensi databaseArsitektur DatabaseArsitektur dari sistem database sangat dipengaruhi oleh sistem komputer yangmendasari dimana database beroperasional:nTerpusat (Centralized)nClient-servernParallel (multi-processor)nTerdistribusi (Distributed)

Page 15: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 7 STMIK ProVisi Semarang

Pengguna DatabasePengguna dibedakan oleh cara mereka mengharapkan untuk berinteraksi dengansistemnProgrammer Aplikasi– berinteraksi dengan sistem melalui panggilan DMLnPengguna tingkat canggih (Sophisticated users) – membentuk permintaan dalambahasa query databasenPengguna spesialis (Specialized users) – menulis aplikasi database yang khususyang tidak cocok ke dalam kerangka kerja pemrosesan data tradisionalnPengguna naif (Naïve users) – melibatkan salah satu dari program aplikasi yangpermanen yang telah ditulis sebelumnyalContoh, seseorang yang mengakses database melalui web, teller bank, staf juru tulisAdministrator DatabasenMengkoordinasikan semua aktifitas dari sistem database; administrator databasemempunyai pemahaman yang baik dari sumber daya dan keperluan informasi dariperusahaannTugas dari administrator database meliputi:lDefinisi skemalStruktur penyimpanan dan definisi metode akseslModifikasi organisasi skema dan physicallMemberikan otoritas user untuk mengakses databaselMenentukan integrity constraintslBertindak sebagai perantara dengan penggunalMemonitor performa dan merespon perubahan yang dibutuhkan

Keseluruhan Struktur Sistem

Page 16: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 8 STMIK ProVisi Semarang

Sejarah dari Sistem DatabasenTh 1950-an dan awal 1960-an:lPemrosesan data menggunakan magnetic tape untuk penyimpanan4Tape hanya menyediakan akses berurutan (sequential)lKartu plong (punched card) untuk masukannyanAkhir th 1960-an dan 1970-an:lHard disk mengijinkan akses langsung ke datalJaringan dan model data hirarki dalam penggunaan yang luaslTed Codd mendefnisikan model data relasional4Memenangkan ACM Turing Award untuk pekerjaannya ini4Penelitian IBM memulai prototype Sistem R4UC Berkeley memulai prototype IngreslPerforma tinggi (untuk era) pemrosesan transaksinTh 1980-an:lPenelitian prototype relasional berkembang menjadi sistem komersial4SQL menjadi standar industrilSistem database paralel dan terdistribusilSistem database berorientasi obyeknTh 1990-an:lDukungan keputusan dan aplikasi data-mininglData warehouses multi-terabytelMunculnya Web commercenTh 2000-an:lStandar XML dan XQuerylAdministrasi database otomatis

Page 17: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 9 STMIK ProVisi Semarang

Bab 2: Model Entity-Relationship

Entity SetsnSebuah database dapat dimodelkan sebagai:ØSebuah koleksi dari entity,ØRelationship (hubungan) di antara entitynSebuah entity adalah sebuah obyek yang ada dan dapat dibedakan dari obyek lain Contoh: orang, perusahaan, kejadian, tanamannEntity mempunyai atribut

Contoh: orang mempunyai nama dan alamatnSebuah entity set adalah sekumpulan entity dari tipe yang sama yang berbagiproperti yang sama Contoh : sekumpulan dari semua orang, perusahaan2, pohon2, liburan2Entity Sets customer (nasabah) dan loan (pinjaman)

AtributnSebuah entity dinyatakan dengan sekumpulan dari atribut, yaitu properti penjelasyang dimiliki oleh semua member dari sebuah entity set Contoh:

customer = (customer-id, customer-name, customer-street, customer-city) loan = (loan-number, amount)nDomain – sekumpulan dari nilai yang diijinkan untuk tiap atributnJenis-jenis atribut:ØAtribut Simple dan compositeØAtribut Single-valued dan multi-valued

customer-id customer- customer- customer- loan- amount name street city number

Page 18: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 10 STMIK ProVisi Semarang

èContoh atribut multivalued : phone-numbers (nomor telepon)ØAtribut DerivedèDapat dihitung dari atribut lainèContoh umur, didapat dari tanggal lahirAtribut Composite

Relationship SetsnSebuah relationship adalah hubungan di antara beberapa entityContoh: Hayes depositor A-102 entity customer relationship set entity accountnSebuah relationship set adalah sebuah relasi matematika di antara n ≥ 2 entity,masing-masing di dapat dari entity set {(e1, e2, … en) | e1 ∈ E1, e2 ∈ E2, …, en ∈ En}

dimana (e1, e2, …, en) adalah sebuah relationshipØContoh: (Hayes, A-102) ∈ depositorRelationship Set borrower (peminjam)

nSebuah atribut dapat juga menjadi properti dari sebuah relatonship setnSebagai contoh, relationship set depositor (penabung) antara entity set customer(nasabah) dan account (rekening) mungkin mempunyai atribut access-date (tanggalakses)

Page 19: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 11 STMIK ProVisi Semarang

Tingkatan dari Relationship SetnMenunjuk ke jumlah dari entity set yang mengambil bagian dalam sebuah sebuahrelationship setnRelationship set yang melibatkan dua entity set adalah binary (atau tingkat dua),umumnya kebanyakan relationship set dalam sistem basisdata adalah binarynRelationship set boleh melibatkan lebih dari dua entity setØMisalnya anggap employee (karyawan) dari sebuah bank mungkin mempunyai job(tanggung jawab) pada banyak branch (cabang), dengan job yang berbeda padabranch yang berbeda. Kemudian terdapat sebuah ternary relationship set antara entityset employee, job dan branchnRelationship antara lebih dari dua entity set adalah jarang. Kebanyakan relationshipadalah binary

Mapping CardinalitiesnMenyatakan jumlah dari entity dengan entity lain yang dapat dihubungkan melaluirelationship setnKebanyakan digunakan dalam menjelaskan relationship set binarynUntuk relationship set binary, mapping cardinality harus menjadi salah satu dari tipeberikutØOne to one (satu ke satu)ØOne to many (satu ke banyak)ØMany to one (banyak ke satu)ØMany to many (banyak ke banyak)

Page 20: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 12 STMIK ProVisi Semarang

One to one One to many

Many toone

Many tomany

Page 21: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 13 STMIK ProVisi Semarang

Mapping Cardinalities mempergunakan Desain ER

Diagram E-R

n Dapat membuat access-date sebuah atribut dari account (rekening),pengganti dari sebuah atribut relationship, jika masing-masing accountdapat mempunyai hanya satu customer (nasabah)n Misalnya, relationship dari account (rekening) ke customer

(nasabah) adalah many to one, atau setara, customer ke accountadalah one to many

n Rectangles (persegi panjang) menyatakan entity set

n Diamonds (berlian) menyatakan relationship set

n Lines (garis) menghubungkan atribut ke entity set dan entity set ke relationship set

n Ellipses (elips) menyatakan atribut

n Double ellipses (elips ganda) menyatakan atribut multivalued .

n Dashed ellipses (elips putus-putus) menunjukkan atribut derived.

n Underline menandakan atribut primary key

Page 22: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 14 STMIK ProVisi Semarang

Diagram E-R dengan atribut Composite, Multivalued, dan Derived

Relationship Sets dengan Attributes

Role (Peran)nEntity set dari relationship memerlukan pembedanLabel “manager” dan “worker” disebut role; mereka menentukan bagaimana entityemployee berinteraksi melalui relationship set work-fornRole ditandai dalam diagram E-R dengan memberi label garis yang menghubungkandiamond ke rectanglenLabel role adalah opsional, dan digunakan untuk menjelaskan semantik darirelationship

Page 23: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 15 STMIK ProVisi Semarang

Cardinality ConstraintsnKita menyatakan cardinality constraint dengan menggambar garis panah,menandakan “one”, atau garis biasa, menandakan “many”, antara relationship set danentity setnMisalnya : relationship one to one :ØSeorang customer (nasabah) dihubungkan dengan paling banyak satu loan(pinjaman) melalui relationship borrowerØSebuah loan dihubungkan dengan paling banyak satu customer melalui borrower

Relationship One-To-ManynDalam relationship one to many sebuah loan (pinjaman) dihubungkan dengan palingbanyak satu customer (nasabah) melalui borrower, seorang customer dihubungkandengan beberapa (termasuk 0) loan melalui borrower

Relationships Many-To-OnenDalam relationship many to one sebuah loan (pinjaman) dihubungkan denganbeberapa (termasuk 0) customer (nasabah) melalui borrower, seorang customerdihubungkan dengan paling banyak satu loan melalui borrower

Relationship Many-To-ManynSeorang customer (nasabah) dihubungkan dengan beberapa (kemungkinan 0) loan(pinjaman) melalui borrower

Page 24: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 16 STMIK ProVisi Semarang

nSebuah loan (pinjaman) dihubungkan dengan beberapa (kemungkinan 0) customermelalui borrower

Participation (keikutsertaan) dari sebuah Entity Set dalam sebuahRelationship Set

Notasi alternatif untuk Cardinality Limits

n Total participation (ditandai dengan garis ganda): setiap entitydalam entity set mengambil bagian dalam sedikitnya saturelationship dalam relationship setn Misalnya keikutsertaan dari loan dalam borrower adalah totaln Setiap loan harus mempunyai sebuah customer yang

dihubungkan ke loan melalui borrowern Partial participation: beberapa entity mungkin tidak mengambil

bagian dalam relationship apapun dalam relationship setn Misalnya keikutsertaan dari customer dalam borrower adalah

partial

n Cardinality limits dapat juga menyatakan participationconstraint (batasan partisipasi)

Page 25: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 17 STMIK ProVisi Semarang

Keys (Kunci)nSebuah super key dari sebuah entity set adalah sekumpulan dari satu atau lebihatribut yang bernilai secara unik menentukan masing-masing entitynSebuah candidate key dari sebuah entity set adalah sebuah super key minimalØCustomer-id adalah candidate key dari customerØaccount-number adalah candidate key dari accountnMeskipun beberapa candidate key mungkin ada, salah satu dari candidate key yangdipilih menjadi primary key.

Keys untuk Relationship SetsnKombinasi dari primary key dari entity set partisipan membentuk sebuah super keydari relationship setØ(customer-id, account-number) adalah super key dari depositorØCATATAN: ini berarti pasangan dari entity set dapat mempunyai sebanyaknyasatu relationship dalam sebuah relationship set utamaèMisalnya . Jika kita ingin untuk melacak semua access-date (tanggal akses) untukmasing-masing account (rekening) dengan masing-masing customer (nasabah), kitatidak dapat menganggap sebuah relationship untuk masing-masing akses. Kita dapatmenggunakan atribut multivalued lebih dulunHarus menganggap mapping cardinality dari relationship set ketika memutuskan apacandidate key-nyanMemerlukan untuk menganggap semantik dari relationship set dalam memilihprimary key dalam kasus lebih dari satu candidate keyDiagram E-R dengan sebuah Relationship Ternary

Cardinality Constraints pada Ternary RelationshipnKita mengijinkan sebanyaknya satu panah keluar dari sebuah ternary (atau tingkatpaling tinggi) relationship untuk menandakan sebuah cardinality constraintnMisalnya sebuah panah dari works-on ke job menandakan masing-masing employeebekerja pada sebanyaknya satu job pada branch (cabang) manapunnJika terdapat lebih dari satu panah, ada dua cara mengartikannyaØMisalnya relationship ternary R antara A, B, dan C dengan panah ke B dan C dapatberartiØ1. masing-masing A entity adalah dihubungkan dengan sebuah entity unik dari Bdan C atauØ2. masing-masing pasangan dari entity dari (A,B) dihubungkan dengan entity unikC, dan masing-masing pasangan (A, C) dihubungkan dengan sebuah B unikØMasing-masing alternatif telah digunakan dalam formalisme yang berbedaØUntuk menghindari kebingungan kita jangan menggunakan lebih dari satu panah

Page 26: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 18 STMIK ProVisi Semarang

Binary Vs. Non-Binary RelationshipsnBeberapa relationship yang kelihatan menjadi non-binary mungkin lebih baikdinyatakan menggunakan binary relationshipØMisalnya sebuah relationship ternary parents (orang tua), menghubungkan kesebuah child (anak) ke ayah dan ibunya, adalah lebih baik diganti dengan dua binaryrelationship, ayah dan ibuèMenggunakan dua binary relationship mengijinkan informasi sebagian (misalnyahanya ibu yang menjadi mengetahui)ØTetapi terdapat beberapa relationship yang secara alami non-binaryèMisalnya works-on

Mengkonversi Relationships Non-Binary ke Bentuk BinarynPada umumnya, relationship non-binary apapun dapat dinyatakan menggunakanrelationship binary dengan membuat sebuah entity set buatanØMengganti R antara entity set A, B dan C dengan sebuah entity set E, dan tigarelationship set 1. RA, relasi E dan A 2.RB, relasi E dan B 3. RC, relasi E dan CØMembuat sebuah atribut pengenal khusus untuk EØMenambah atribut apapun dari R ke EØUntuk tiap relationship (ai , bi , ci) dalam R, buat 1. entity baru ei dalam entity set E 2. tambah (ei , ai ) ke RA 3. tambah (ei , bi ) ke RB 4. tambah (ei , ci ) ke RC

nJuga memerlukan untuk menerjemahkan constraintØMenerjemahkan semua constraint tidak memungkinkanØTerdapat instance dalam skema yang diterjemahkan yang tidak dapat berhubunganke instance apapun dari RèContoh: tambahkan constraint ke relationship RA, RB dan RC untuk memastikanbahwa baru saja entity dibuat yang berhubungan ke tepatnya satu entity dalammasing-masing entity set A, B dan CØKita dapat menghindari membuat sebuah atribut pengenal dengan membuat Esebuah entity set yang lemah (weak) dikenal oleh tiga relationship set

Isu DesainnPenggunaan dari entity set vs. atributSebagian besar pilihan tergantung pada struktur dari perusahaan yang menjadi model,dan pada semantik yang dihubungkan dengan atribut dalam mengandung pertanyaannPenggunaan dari entity set vs. relationship setpanduan yang tepat adalah untuk menunjuk sebuah relationship set untuk menjelaskansebuah aksi yang terjadi antara entity

Page 27: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 19 STMIK ProVisi Semarang

nBinary versus n-ary relationship setMeskipun itu memungkinkan untuk mengganti relationship set nonbinary apapun (n-ary, untuk n>2) diatur oleh sebuah jumlah dari relationship set binary yang berbeda,sebuah relationship set n-ary menunjukkan lebih jelas bahwa beberapa entity ikutserta dalam sebuah relationship tunggalnPenempatan dari atribut relationship

Entity Sets Weak (Lemah)nSebuah entity set yang tidak mempunyai primary key ditunjuk sebagai sebuah entityset weak(Lemah)nKeberadaan dari sebuah entity set lemah tergantung pada keberadaan dari sebuahentity set identifying (Pengenal)ØItu harus menghubungkan ke identifying entity set melalui sebuah total, relationshipset one-to-many dari identifying ke entity set lemahØIdentifying relationship digambarkan menggunakan double diamondndiscriminator (atau partial key (kunci sebagian)) dari sebuah entity set lemah adalahsekumpulan dari atribut yang membedakan di antara semua entity dari entity setlemahnPrimary key dari entity set lemah yang dibentuk oleh primary key dari entity set kuatdimana entity set lemah adanya tergantung, plus discriminator entity setnKita menggambarkan sebuah entity set lemah dengan kotak gandanKita menggarisbawahi discriminator (pembeda) dari sebuah entity set lemah dengangaris putus-putusnpayment-number – discriminator dari entity set paymentnPrimary key untuk payment – (loan-number, payment-number)

nPerhatikan: primary key dari entity set kuat tidak secara jelas disimpan dengan entityset lemah, sejak ada tersembunyi dalam indentifying relationship (relationshippengenal)nJika loan-number secara jelas disimpan, payment dapat membuat sebuah entity yangkuat, tetapi kemudian relationship antara payment dan loan akan digandakan olehsebuah relationship secara tersembunyi yang ditetapkan oleh atribut loan-numberyang menghubungkan ke payment dan loan

Contoh lain Weak Entity SetnDalam sebuah universitas, sebuah course (kursus) adalah entity yang kuat dansebuah course-offering (kursus yang ditawarkan) dapat sebagai entity yang lemahnDiscriminator dari course-offering (kursus yang ditawarkan) adalah semester(termasuk year) dan section-number (jika terdapat lebih dari satu section)

Page 28: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 20 STMIK ProVisi Semarang

nJika kita memperlakukan course-offering sebagai entity yang kuat kita akanmemperlakukan course-number sebagai sebuah atribut Kemudian relationship dengan course akan secara implisit dalam atributcourse-number

Specialization (Spesialisasi)nProses desain Top-down; kita mendesain subkelompok dalam sebuah entity setadalah khusus dari entity lain dalam setnSubkelompok tersebut menjadi entity set level-rendah yang mempunyai atribut ataupartisipan dalam relationship yang tidak menerapkan ke entity set level tingginDigambarkan oleh komponen segitiga yang bertuliskan ISA (misalnya customer “isa” person)nAttribute inheritance – entity set tingkat rendah mewarisi semua atribut danrelationship partisipan dari entity set tingkat tinggi dimana dia dihubungkanContoh Specialization

Generalization (Generalisasi)nProses desain bottom-up – menkombinasikan sejumlah dari entity set yang berbagifitur yang sama dalam sebuah entity set level tingginSpecialization dan generalization adalah secara sederhana adalah kebalikan antarasatu dengan yang lain; yang dinyatakan dalam diagram E-R dalam cara yang samanDapat mempunyai multiple specializations dari sebuah entity set berdasarkan padafitur yang berbedanMisalnya permanent-employee vs. temporary-employee, sebagai tambahan officervs. secretary vs. tellernMisalnya masing-masing employee bisa menjadi

Page 29: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 21 STMIK ProVisi Semarang

Øanggota dari salah satu permanent-employee atau temporary-employeeØDan juga anggota dari salah satu officer, secretary, atau tellernRelationship ISA juga ditunjuk sebagai relationship superclass - subclass

Mendesain Constraints pada sebuah Specialization/GeneralizationnConstraint dimana entity dapat menjadi anggota dari sebuah entity set level rendahØcondition-defined (didefinisikan oleh kondisi)èMisalnya semua customer diatas 65 tahun adalah anggota dari entity set senior-citizen ; senior-citizen ISA personèE.g. all customers over 65 years are members of senior-citizen entity set; senior-citizen ISA person.Øuser-defined (didefinisikan oleh user)nConstraint dimana entity mungkin mempunyai lebih dari satu entity set level-rendahdi dalam generalization tunggal atau tidakØDisjointèSebuah entity dapat mempunyai hanya satu entity set level rendahèDicatat dalam diagram E-R dengan menuliskan disjoint di sebelah segitiga ISAØOverlappingèSebuah entity dapat mempunyai lebih dari satu entity set level rendahnKesempurnaan constraint – menentukan apakah sebuah entity dalam entity set leveltinggi harus mempunyai paling sedikitnya satu dari entity set level rendah di dalamsebuah generalizationØtotal : sebuah entity harus mempunyai satu dari entity set level rendahØpartial: sebuah entity perlu tidak mempunyai satu dari entity set level-rendah

Aggregation

nRelationship set work-on dan manages menyatakan informasi yang overlappingØSetiap relationship manages cocok untuk sebuah relationship works-on

nMenganggap relationship ternary works-on, yang kita lihat sebelumnyanAndaikan kita ingin merekam manager untuk tugas yang djalankan olehseorang employee pada sebuah branch

Page 30: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 22 STMIK ProVisi Semarang

ØBagaimanapun, beberapa relationship works-on mungkin tidak cocok untukrelationship managesèJadi kita tidak dapat membuang relationship works-onnMengurangi redundansi ini melalui aggregationØMemperlakukan relationship sebagai entity yang abstrakØMengijinkan relationship antara relationshipØAbstrak dari relationship ke dalam entity barunTanpa memasukkan redundansi, diagram berikut menyatakan:ØSorang employee bekerja pada (works-on) sebuah job pada branchØKombinasi seorang employee, branch, job mungkin mempunyai sebuah hubunganmanagerDiagram E-R dengan Aggregation

Keputusan mendesain E-RnPenggunaan dari sebuah atribut atau entity set untuk menyatakan sebuah obyeknApakah konsep dunia nyata adalah terbaik yang dinyatakan oleh sebuah entity setatau relationship setnPenggunaan dari sebuah relationship ternary versus sepasang relationship binarynPenggunaan dari entity set kuat atau lemahnPenggunaan dari specialization/generalizationnPenggunaan dari aggregation – dapat memperlakukan entity set aggregate sebagaisebuah unit tunggal tanpa urusan untuk detail dari struktur internal

Page 31: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 23 STMIK ProVisi Semarang

E-R Diagram untuk Perbankan

Kesimpulan dari simbol yang digunakan dalam Notasi E-R

Page 32: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 24 STMIK ProVisi Semarang

Notasi Alternatif E-R

UMLnUML: Unified Modeling LanguagenUML mempunyai banyak komponen untuk model secara grafis yang berbeda aspekdari sebuah keseluruhan sistem softwarenDiagram Kelas UML sama dengan Diagram E-R, tetapi beberapa berbeda

Page 33: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 25 STMIK ProVisi Semarang

Kesimpulan dari Notasi Diagram Class UML

nEntity set ditunjukkan sebagai kotak, dan atribut ditunjukkan dalam kotak, lainhalnya dengan diagram E-R yang ditunjukkan dengan elips terpisahnRelationship set binary dinyatakan dalam UML dengan hanya menggambar garisyang menghubungkan entity sets. Nama Relationship set ditulis berdekatan dengangarisnRole (peran) yang diperankan oleh sebuah entity set dalam relationship set mungkinjuga ditentukan dengan menuliskan nama role pada garis, berdekatan dengan entitysetnNama relationship set alternatif lain mungkin bisa ditulis dalam sebuah kotak,bersamaan dengan atribut dari relationship set, dan kotak tersebut dihubungkan,menggunakan garis titik-titik, menuju garis menggambarkan relationship setnRelationship non-binary tidak dapat secara langsung dinyatakan dalam UML – harusdikonversi ke relationship binary

Page 34: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 26 STMIK ProVisi Semarang

nCardinality constraints ditentukan dalam bentuk l..h, dimana I menunjukkanminimum dan h adalah jumlah dari relationship maksimum sebuah entity yang dapatmengambil bagian di dalamnyanHati-hati: memposisikan constraint adalah sama pembalikan dari memposisikanconstraint dalam diagram E-Rnconstraint 0..* pada sisi E2 dan 0..1 pada sisi E1 berarti bahwa entity E2 dapatmengambil bagian dalam sedikitnya satu relationship, dimana masing-masing entityE1 dapat mengambil bagian dalam relationship yang banyak; dalam kata lain;relationship many to one dari E2 ke E1nNilai tunggal, seperti 1 atau * boleh dituliskan pada sisi; nilai tunggal 1 pada sebuahsisi yang diperlakukan sebagai ekuivalen ke 1..1, dimana * adalah ekuivalen ke 0..*

Reduksi dari Skema E-R ke TabelnPrimary key mengijinkan entity set dan relationship set dinyatakan secara seragamsebagai tabel yang menyatakan isi dari databasenSebuah database yang sesuai dengan sebuah diagram E-R dapat dinyatakan olehkoleksi dari tabelnUntuk masing-masing entity set dan relatonship set terdapat sebuah tabel unik yangdiberikan nama dari entity set atau relationship set yang sesuainMasing-masing tabel mempunyai sejumlah kolom (umumnya sesuai dengan atribut),yang mempunyai nama yang uniknMengkonversi sebuah diagram E-R ke format tabel adalah dasar untuk menurunkansebuah desain database relasional dari sebuah diagram E-R

Menyatakan Entity Sets sebagai TabelnSebuah entity set yang kuat mereduksi ke sebuah tabel dengan atribut yang sama

Atribut Composite dan MultivaluednAtribut composite dipaparkan dengan membuat atribut terpisah untuk masing-masing atribut komponenØMisalnya diberkan entity set customer dengan atribut composite name denganatribut komponen first-name dan last-name . Tabel yag berhubungan dengan entity setmempunyai dua atribut

name.first-name and name.last-namenAtribut multivalued M dari sebuah entity E dinyatakan oleh tabel terpisah EMØTabel EM mempunyai atribut yang berhubungan ke primary key dari E dan sebuahatribut yang berhubungan dengan atribut multivalued M

Page 35: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 27 STMIK ProVisi Semarang

ØMisalnya atribut multivalued dependent-names (nama tanggungan) dari employeedinyatakan oleh sebuah tabel

employee-dependent-names( employee-id, dname)ØMasing-masing nilai dari atribut multivalued memetakan ke baris terpisah dari tabelEMèMisalnya sebuah entity employee dengan primary key John dan dependent Johnsondan Johndotir memetakan ke dua baris: (John, Johnson) and (John, Johndotir)

Menyatakan Weak Entity Sets

Menyatakan Relationship Set sebagai TabelnSebuah relationship set many-to-many dinyatakan sebagai sebuah tabel dengankolom untuk primary key dari dua entity set yang mengambil bagian dan atributpenjelas dari relationship setnMisalnya tabel untuk relationship set borrower

n sebuah weak entity set menjadi sebuah tabel yangmenyertakan sebuah kolom untuk primary key dariidentifying (pengenal) strong entity set

Page 36: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 28 STMIK ProVisi Semarang

Tabel Redundansi

nUntuk relationship set one-to-one, kedua sisi dapat dipilih untuk beraksi sebagai sisi“many”ØHanya itu, atribut ekstra dapat ditambahkan ke kedua dari tabel yang berhubunganke dua entity setnJika partisipan adalah parsial pada sisi many, menggantikan sebuah tabel denganatribut ekstra dalam relasi yang berhubungan ke sisi “many” dapat menghasilkan nilainullnTabel yang berhubungan dengan relationship set menghubungkan sebuah entity setlemah ke entity set kuat sebagai pengenal adalah redundansiØMisalnya tabel payment sudah berisi informasi yang akan tampil dalam tabel loan-payment (contoh kolom loan-number dan payment-number

Menyatakan Specialization sebagai TabelnMetode 1:ØBentuk sebuah tabel untuk entity tingkat tinggiØBentuk sebuah tabel untuk masing-masing entity set level rendah, termasuk primarykey dari entity set level tinggi dan atribut lokal

tabel atribut tabelperson name, street, citycustomer name, credit-ratingemployee name, salaryØKekurangan: mendapatkan informasi tentang misalnya employee membutuhkanmengakses dua tabel

n Relationship set Many-to-one dan one-to-many adalah total pada sisimany (banyak) dapat dinyatakan dengan menambahkan sebuahatribut ekstra ke sisi many, berisi primary key dari sisi one

n Misalnya: pengganti dari pembuatan tabel untuk relationshipaccount-branch, menambahkan sebuah atribut branch ke entity setaccount

Page 37: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 29 STMIK ProVisi Semarang

nMetode 2:ØBentuk sebuah tabel untuk masing-masing entity set dengan semua atribut lokal danatribut turunan tabel atribut tabelperson name, street, citycustomer name, street, city, credit-ratingemployee name, street, city, salary

Jika spesialization adalah total, tidak memerlukan untuk membuat tabel untuk entitygeneralisasi (person)ØKekurangan: street dan city kemungkinan disimpan secara redundansi untuk personyang keduanya customer dan employee

Relation Berhubungan ke Aggregationn Untuk menyatakan aggregation, buat sebuah tabel berisi

n Primary key dari relationship aggregationn Primary key dari entity set yang dihubungkann Atribut penjelas

n Misalnya untuk menyatakan aggregation manages antara relationshipworks-on dan entity set manager, buat sebuah tabelmanages(employee-id, branch-name, title, manager-name)

n Tabel works-on adalah redundan yang disediakan dan kita rela untukmenyimpan nilai null untuk atribut manager-name dalam tabelmanages

Page 38: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 30 STMIK ProVisi Semarang

Page 39: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 31 STMIK ProVisi Semarang

Bab 3 Model Relasional

Contoh dari Relasi

Struktur DasarnResminya, diberikan set D1, D2, …. Dn sebuah relasi r adalah subset dari

D1 x D2 x … x DnJadi, sebuah relasi adalah set dari n-tuples (a1, a2, …, an) dimanamasing-masing ai ∈ DinContoh: Iflcustomer_name = {Jones, Smith, Curry, Lindsay, …} /* Set of all customer names */lcustomer_street = {Main, North, Park, …} /* set of all street names*/lcustomer_city = {Harrison, Rye, Pittsfield, …} /* set of all city names */Then r = { (Jones, Main, Harrison), (Smith, North, Rye), (Curry, North, Rye), (Lindsay, Park, Pittsfield) }adalah relasi melalui customer_name x customer_street x customer_city

Tipe AtributnMasing-masing atribut dari relasi mempunyai sebuah namanSekumpulan nilai yang diijinkan untuk masing-masing atribut disebut domain dariatributnNilai atribut (normalnya) dibutuhkan untuk menjadi atomic, hanya itu, tak dapatdibagi lagilMisalnya nilai dari atribut dapat menjadi nomor account (rekening) tetapi tidak dapatmenjadi sekumpulan dari nomor account (rekening)nDomain dikatakan menjadi atomic jika semua anggotanya adalah atomicnNilai khusus null adalah anggota dari setiap domainnNilai null menyebabkan kesulitan dalam ketentuan dari banyak operasilKita seharusnya mengacuhkan efek dari nilai null dalam presentasi utama kita danmenganggap pengaruh mereka belakangan

Skema RelasinA1, A2, …, An adalah atribut

nR = (A1, A2, …, An ) adalah skema relasi

Page 40: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 32 STMIK ProVisi Semarang

Contoh:Customer_schema = (customer_name, customer_street, customer_city)

nr(R) menunjukkan sebuah relasi r pada skema relasi R Contoh:

customer (Customer_schema)

Instance RelasinNilai yang ada (instance relasi) dari relasi ditentukan oleh tabelnSebuah elemen t dari r adalah tuple, dinyatakan oleh sebuah baris dalam tabel

Relasi tidak urut

DatabasenSebuah database terdiri dari relasi yang banyaknInformasi tentang sebuah perusahaan dipecah ke dalam beberapa bagian, denganmasing-masing relasi menyimpan satu bagian dari informasi

account : menyimpan informasi tentang rekeningdepositor : menyimpan informasi tentang customer (nasabah) mana yang

JonesSmithCurryLindsay

customer_name

MainNorthNorthPark

customer_street

HarrisonRyeRyePittsfield

customer_city

customer

atribut(atau kolom)

tuple(atau baris)

nUrutan dari tuple adalah tidak berhubungan (tuple mungkin disimpandalam urutan acak)nContoh: relasi account dengan tuple yang tidak urut

Page 41: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 33 STMIK ProVisi Semarang

mempunyai account (rekening) manaowns which accountcustomer : menyimpan informasi tentang nasabah

nMenyimpan semua informasi sebagai relasi tunggal sepertibank(account_number, balance, customer_name, ..)

menghasilkan dalamlPengulangan dari informasi4Misalnya, jika dua customer memiliki sebuah accountlKebutuhan untuk nilai null4Misalnya untuk menyatakan seorang customer tanpa sebuah accountnTeori Normalisasi menjelaskan bagaimana untuk mendesain skema relasiRelasi customer

Relasi depositor

Kunci (Key)nmisalnya K ⊆ RnK adalah superkey dari R jika nilai untuk K mencukupi untuk menjelaskan sebuahtuple yang unik dari masing-masing relasi yang tepat r(R)lDengan “r yang tepat” kita artikan sebuah relasi r yang dapat berada dalamperusahaan yang kita peragakanlContoh: {customer_name, customer_street} dan {customer_name}keduanya adalah superkey dari Customer, jika tidak ada dua customer dapat mungkinmempunyai nama yang sama

Page 42: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 34 STMIK ProVisi Semarang

4Dalam kenyataan, sebuah attribut seperti customer_id akan digunakan sebagaipengganti dari customer_id untuk menjelaskan secara unik customer, tetapi kitahilangkannya untuk menjaga contoh kecil kita, dan mengasumsikan nama customeradalah uniknK adalah sebuah candidate key jika K adalam minimalContoh: {customer_name} adalah candidate key untuk Customer, sejakcustomer_name adalah superkey dan tidak ada subset (bagian) dari customer_namenPrimary key: sebuah candidate key yang dipilih sebagai cara utama darimenjelaskan tuple dalam sebuah relasilSeharusnya memilih sebuah atribut yang tidak pernah atau jarang berubahlMisalnya alamat email adalah unik, tetapi mungkin berubahForeign KeysnSkema relasi mungkin mempunyai sebuah atribut yang berhubungan ke primary keydari relasi lain. Atribut tersebut disebut sebuah foreign keylMisalnya atribut customer_name dan account_number dari depositor adalah foreignkey ke customer dan acount berturut-turutlHanya nilai yang terjadi dalam atribut primary key dari relasi yang ditunjuk yangmungkin terjadi dalam atribut foreign key dari relasi yang menunjuknDiagram skema

Bahasa QuerynBahasa dimana pengguna meminta informasi dari databasenKategori dari bahasalProcedurallNon-procedural, atau declarativenBahasa “murni” :lRelational algebralTuple relational calculuslDomain relational calculusnBentuk bahasa murni mendasari dasar dari bahasa query yang orang gunakan

Relational AlgebranBahasa ProceduralnEnam operator dasarlselect: σlproject: ∏lunion: ∪lset difference:

Page 43: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 35 STMIK ProVisi Semarang

lCartesian product: xlrename: ρnOperator mengambil satu atau dua relasi sebagai input dan menghasilkan sebuahrelasi baru sebagai sebuah hasil

Contoh Operasi Select

Operasi Select

nNotasi: σ p(r)np disebut selection predicatenDidefinisikan sebagai:

σp(r) = {t | t ∈ r and p(t)}

dimana p adalah sebuah formula dalam kalkulus proposional yang terdiri atasistilah yang dihubungkan oleh ∧ (and), ∨ (or), ¬ (not)masing –masing istilah adalah salah satu dari: <attribute> op <attribute> or <constant> dimana op adalah salah satu dari : =, ≠, >, ≥. <. ≤

nContoh dari selection:

σ branch_name= Perryridge (account)

n Relasi r A B C D

ααββ

αβββ

151223

77310

¡ σA=B ^ D > 5 (r) A B C D

αβ

αβ

123

710

Page 44: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 36 STMIK ProVisi Semarang

Contoh Operasi Project

Operasi ProjectnNotasi:

dimana A1, A2 adalah nama atribut dan r adalah sebuah nama relasinHasil adalah didefinisikan sebagai relasi dari kolom k yang diperoleh denganmenghapus kolom yang tidak terdaftarnBaris yang kembar dihapus dari hasil, semenjak relasi di aturnContoh : untuk meng-eliminasi atribut branch_name dari account

∏account_number, balance (account)

n Relasi r:A B C

ααββ

10203040

1112

A C

ααββ

1112

=

A C

αββ

112

∏A,C (r)

)r(k21 A,,A,A K∏

Page 45: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 37 STMIK ProVisi Semarang

Contoh Operasi Union

Operasi UnionnNotasi: r ∪ snDidefinisikan sebagai:

r ∪ s = {t | t ∈ r or t ∈ s}nUntuk r ∪ s menjadi valid.

1. r, s harus mempunyai arity yang sama (jumlah atribut yang sama) 2. domain atribut harus compatible (contoh: kolom 2nd dari r cocok dengantipe yang sama dari nilai yang ada pada kolom 2nd dari s)nContoh : untuk mencari semua customer sebuah account atau sebuah loan

∏customer_name (depositor) ∪ ∏customer_name (borrower)

n Relasi r, s:

n r ∪ s:

A B

ααβ

121

A B

αβ

23

rs

A B

ααββ

1213

Page 46: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 38 STMIK ProVisi Semarang

Contoh Operasi Set Difference

Operasi Set DifferencenNotasi r snDidefinisikan sebagai:

r s = {t | t ∈ r and t ∉ s}

nSet differences harus diambil antara relasi yang compatiblelr dan s harus mempunyai arity yang samalDomain atribut dari r dan s harus compatible

n Relasi r, s:

n r s:

A B

ααβ

121

A B

αβ

23

rs

A B

αβ

11

Page 47: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 39 STMIK ProVisi Semarang

Contoh Operasi Cartesian-Product

Operasi Cartesian-ProductnNotasi r x snDidefinisikan sebagai:

r x s = {t q | t ∈ r and q ∈ s}

nAsumsikan bahwa atribut dari r(R) dan s(S) dipisahkan. (R ∩ S = ∅).nJika atribut dari r(R) dan s(S) tidak dipisahkan, kemudian penggantian nama harusdigunakan

Komposisi dari OperasinDapat membangun ekspresi menggunakan operasi lebih dari satunContoh: σA=C(r x s)

n Relasi r, s:

n r x s:

A B

αβ

12

A B

ααααββββ

11112222

C D

αββγαββγ

1010201010102010

E

aabbaabb

C D

αββγ

10102010

E

aabbr

s

Page 48: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 40 STMIK ProVisi Semarang

Operasi RenamenMengijinkan kita untuk memberi nama, dan oleh karena itu untuk menunjuk ke ,hasil dari pernyataan relational-algebranMengijinkan kita untuk menunjuk ke sebuah relasi dengan lebih dari satu namanContoh:

ρ x (E)

mengembalikan pernyataan E di bawah nama XnJika ekspresi relational-algebra E mempunyai arity n, kemudian

mengembalikan hasil dari pernyataan E di bawah nama X, dan dengan atributyang diganti namanya ke A1 , A2 , ., An .

Contoh Perbankanbranch (branch_name, branch_city, assets)

customer (customer_name, customer_street, customer_city)

account (account_number, branch_name, balance)

loan (loan_number, branch_name, amount)

depositor (customer_name, account_number)

borrower (customer_name, loan_number)

Page 49: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 41 STMIK ProVisi Semarang

Contoh Queryn Temukan semua loan (pinjaman) yang di atas $1200

n Temukan loan number (nomor pinjaman) untuk masing-masing loan(pinjaman) dari jumlah di atas $1200

σamount > 1200 (loan)

∏loan_number (σamount > 1200 (loan))

n Temukan nama dari semua customer (nasabah) yang mempunyailoan (pinjaman), account (rekening) atau keduanya dari bank

∏customer_name (borrower) ∪ ∏customer_name (depositor)

n Temukan nama dari semua customer (nasabah) yang mempunyai loan(pinjaman) pada branch (cabang ) Perryridge

nTemukan nama dari semua customer (nasabah) yang mempunyai loan(pinjaman) pada branch (cabang) Perryridge tetapi tidak mempunyai account(rekening) pada branch manapun dari bank

∏customer_name (σbranch_name = Perryridge

(σborrower.loan_number = loan.loan_number(borrower x loan))) ∏customer_name(depositor)

∏customer_name (σbranch_name= Perryridge (σborrower.loan_number = loan.loan_number(borrower x loan)))

Page 50: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 42 STMIK ProVisi Semarang

Ketentuan ResminSebuah pernyataan dasar dalam relational algebra terdiri dari salah satu dari berikutinilSebuah relasi dalam databaselSebuah relasi yang tetapnmisalkan E1 dan E2 menjadi pernyataan relational-algebra ; semua pernyataanrelational-algebra sbb:lE1 ∪ E2lE1 – E2lE1 x E2

lσp (E1), P adalah sebuah predicate pada attributes dalam E1

l∏s(E1), S adalah sebuah daftar yang terdiri dari beberapa atribut dalam E1

lρ x (E1), x adalah nama baru untuk hasil dari E1

Operasi TambahanKita menetapkan operasi tambahan yang tidak menambah kemampuan apapun kerelational algebra, tetapi menyederhanakan query biasanSet intersection

n Temukan nama dari semua customer (nasabah) yang mempunyai loan(pinjaman) pada branch (cabang) Perryridge

l Query 2∏customer_name(σloan.loan_number = borrower.loan_number (

(σbranch_name = Perryridge (loan)) xborrower))

l Query 1

∏customer_name (σbranch_name = Perryridge (σborrower.loan_number = loan.loan_number (borrower x loan)))

n Temukan account balance (saldo rekening) terbesarl Strategi:

4 Temukan balance (saldo) yang tidak terbesarGanti nama relasi account sebagai d sehingga kita dapatmembandingkan masing-masing account balancedengan yang lainnya

4 Gunakan set difference untuk menemukan account balanceyang tidak ditemukan dalam langkah sebelumnya

l Querynya adalah:

∏balance(account) - ∏account.balance (σaccount.balance < d.balance (account x ρd (account)))

Page 51: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 43 STMIK ProVisi Semarang

nNatural joinnDivisionnAssignment

Operasi Set-IntersectionnNotasi: r ∩ snDidefinisikan sebagai:nr ∩ s = { t | t ∈ r and t ∈ s }nAsumsikan:lr, s mempunyai arity yang samalAtribut dari r dan s adalah cocokncatatan: r ∩ s = r – (r – s)Contoh Operasi Set-Intersection

Operasi Natural-Join

nMisalkan relasi r dan s pada skema R dan S berturut-turutLalu r s adalah sebuah relasi pada skema R ∪ S diperoleh sbb:lAnggap masing-masing pasangan dari tuples tr dari r dan ts dari s.lJika tr dan ts mempunyai nilai yang sama pada masing-masing dari atribut dalam R ∩S, tambahkan sebuah tuple t ke hasil, dimana4t mempunyai nilai yang sama sebagai tr pada r4t mempunyai nilai yang sama sebagai ts pada snContoh:R = (A, B, C, D)S = (E, B, D)lSkema hasil = (A, B, C, D, E)lr s dinyatakan sbb:

∏r.A, r.B, r.C, r.D, s.E (σr.B = s.B ∧ r.D = s.D (r x s))

n Notasi : r s

Page 52: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 44 STMIK ProVisi Semarang

Contoh - Operasi Natural Join

nRelasi r, s:

Operasi DivisionnNotasi :nCocok untuk query yang menyertakan ungkapan “for all”.nMisalkan r dan s menjadi relasi pada skema R dan S berturut-turut dimanalR = (A1, …, Am , B1, …, Bn )lS = (B1, …, Bn)Hasil dari r ÷ s adalah sebuah relasi pada skemaR – S = (A1, …, Am)

r ÷ s = { t | t ∈ ∏ R-S (r) ∧ ∀ u ∈ s ( tu ∈ r ) }Dimana tu berarti rangkaian dari tuples t dan u untuk menghasilkan sebuah rangkaiandari tuples t dan u untuk menghasilkan sebuah tuple tunggal

Contoh Operasi Division

n Relasi r, s:

A B

αβγαδ

12412

C D

αγβγβ

aabab

B

13123

D

aaabb

E

αβγδ∈

r

A B

ααααδ

11112

C D

ααγγβ

aaaab

E

αγαγδ

s

n r s

Page 53: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 45 STMIK ProVisi Semarang

Contoh lain Division

nPropertylmisal q = r ÷ slKemudian q adalah relasi terbesar yang memuaskan q x s ⊆ r

n Relasi r, s:

n r ÷ s: A

B

αβ

12

A B

αααβγδδδ∈∈β

12311134612

r

s

A B

αααββγγγ

aaaaaaaa

C D

αγγγγγγβ

aabababb

E

11113111

n Relasi r, s:

n r ÷ s:

D

ab

E

11

A B

αγ

aa

C

γγ

r

s

Page 54: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 46 STMIK ProVisi Semarang

nDefinisi dalam isitilah dari operasi algebra dasarMisal r(R) dan s(S) menjadi relasi, dan misal S ⊆ R

r ÷ s = ∏R-S (r ) – ∏R-S ( ( ∏R-S (r ) x s ) – ∏R-S,S(r ))

Untuk melihat mengapal∏R-S,S (r) atributt r yang diurutkan kembali dengan mudah

l∏R-S (∏R-S (r ) x s ) – ∏R-S,S(r) ) memberi tuple t dalam

∏R-S (r ) seperti untuk beberapa tuple u ∈ s, tu ∉ r.

Operasi AssignmentnOperasi assignment (←) menyediakan sebuah cara yang baik untuk menyatakanquery yang komplekslMenulis query sebagai sebuah program sequential yang terdiri atas4Sekelompok assignments4Diikuti oleh sebuah pernyataan dimana nilai ditampilkan sebagai hasil dari querylAssignment harus selalu dibuat untuk sebuah variabel relasi sementaranContoh: menulis r ÷ s seperti

temp1 ← ∏R-S (r )temp2 ← ∏R-S ((temp1 x s ) – ∏R-S,S (r ))hasil = temp1 – temp2

lHasil disebelah kanan dari ← diberikan ke variabel relasi di sebelah kiri dari ←lBoleh menggunakan variabel dalam pernyataan berikutnyaContoh Query Bank

l Query 1∏customer_name (σbranch_name = Downtown (depositor account ))∩

∏customer_name (σbranch_name = Uptown (depositor account))

l Query 2∏customer_name, branch_name (depositor account)

÷ ρtemp(branch_name) ({( Downtown ), ( Uptown )})Perhatikan bahwa Query 2 menggunakan relasi konstan

n Temukan semua customer (nasabah) yang mempunyai sebuahaccount (rekening) dari branch (cabang) Downtown dan Uptown

n Temukan semua customer (nasabah) yang mempunyai account(rekening) pada semua branch (cabang) yang berada di Brooklyn city

∏customer_name, branch_name (depositor account)÷ ∏branch_name (σbranch_city = Brooklyn (branch))

Page 55: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 47 STMIK ProVisi Semarang

Operasi Perluasan Relational-AlgebranGeneralized ProjectionnAggregate FunctionsnOuter Join

Generalized ProjectionnMemperluas operasi projection dengan mengijinkan fungsi arithmetic untukdigunakan dalam daftar projection

nE adalah pernyataan relational-algebra apapunnMasing-masing F1, F2, …, Fn adalah pernyataan arithmetic yang menyertakanconstant dan attribut dalam skema dari EnRelasi yang diberikan credit_info(customer_name, limit, credit_balance),menemukan berapa banyak masing-masing orang dapat mempergunakan :

∏customer_name, limit credit_balance (credit_info)

Fungsi dan Operasi AggregatenFungsi Aggregation membawa sekumpulan nilai dan mengembalikan nilai tunggalsebagai hasilnya

avg: nilai rata-ratamin: nilai minimummax: nilai maksimumsum: total nilaicount: jumlah dari nilai

nAggregate operation dalam relational algebra

E adalah pernyataan relational-algebra apapunlG1, G2 …, Gn adalah daftar dari atribut yang akan dikelompokkan (bisa saja kosong)lMasing-masing Fi adalah sebuah fungsi aggregatelMasing-masing Ai adalah sebuah nama atribut

)E(,...,,n21 FFF∏

)E()A(F,,A(F),A(FG,,G,G nn2211n21 KK ϑ

Page 56: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 48 STMIK ProVisi Semarang

Contoh Operasi Aggregate

nRelasi account dikelompokkan oelh branch-name:nHasil dari aggregation tidak mempunyai sebuah namalDapat menggunakan operasi rename untuk memberinya sebuah namalUntuk kebaikan, kita membolehkan mengganti nama sebagai bagian dari operasiaggregate

n Relasi r:A B

ααββ

αβββ

C

77310

n g sum(c) (r) sum(c )

27

n Relasi account dikelompokkan oelh branch-name:

branch_name g sum(balance) (account)

branch_name account_number balance

PerryridgePerryridgeBrightonBrightonRedwood

A-102A-201A-217A-215A-222

400900750750700

branch_name sum(balance)

PerryridgeBrightonRedwood

13001500700

Page 57: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 49 STMIK ProVisi Semarang

Outer JoinnTambahan dari operasi join yang menghindari kehilangan informasinKomputer menggabungkan dan kemudian menambahkan relasi tunggal bentuk tupleyang tidak cocok dengan tuple dalam relasi lain untuk menghasilkan joinnMenggunakan nilai nulllnull menandakan bahwa nilai tidak diketahui atau tidak adalSemua perbandingan menyertakan null adalah salah secara definisi4Kita seharusnya belajar dengan seksama arti dari perbandingan dengan null nantinyaContoh Outer Joinn Relasi loan

n Relasi borrower

customer_na loan_number

JonesSmithHayes

L-170L-230L-155

300040001700

loan_number amount

L-170L-230L-260

branch_nam

DowntownRedwoodPerryridge

n Join

loan borrower

loan_number amount

L-170L-230

30004000

customer_na

JonesSmith

branch_name

DowntownRedwood

JonesSmithnull

loan_number amount

L-170L-230L-260

300040001700

customer_nabranch_name

DowntownRedwoodPerryridge

n Left Outer Join loan borrower

Page 58: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 50 STMIK ProVisi Semarang

Nilai NullnKemungkinan untuk tuple mempunyai nilai null, ditunjukkan oleh null, untukbeberapa atribut merekanNull menandakan sebuah nilai yang tidak diketahui atau nilai yang tidak adanHasil dari pernyataan arithmetic menyertakan null adalah nullnFungsi aggregate mengacuhkan dengan mudah nilai null (seperti dalam SQL)nUntuk menduplikasi eliminasi dan grouping, null diperlakukan seperti nilai lainapapun, dan dua null dianggap sama (seperti SQL)Nilai NullnPerbandingan dengan nilai null mengembalikan nilai kebenaran khusus: unknownlJika false digunakan menggantikan dari unknown ,kemudian not (A < 5) akan samadengan A >= 5nTiga Logika bernilai menggunakan nilai kebenaran unknown:lOR: (unknown or true) = true, (unknown or false) = unknown (unknown or unknown) = unknownlAND: (true and unknown) = unknown,

(false and unknown) = false,(unknown and unknown) = unknown

lNOT: (not unknown) = unknownlDalam SQL “P is unknown” bernilai ke true jika predikat P bernilai unknownnHasil dari select predicate diperlakukan sebagai false jika itu bernilai unknown

Modifikasi dari DatabasenNilai dari database mungkin dimodifikasi menggunakan operasi berikut inilDeletionlInsertion

loan_number amount

L-170L-230L-155

30004000null

customer_na

JonesSmithHayes

branch_name

DowntownRedwoodnull

loan_number amount

L-170L-230L-260L-155

300040001700null

customer_na

JonesSmithnullHayes

branch_name

DowntownRedwoodPerryridgenull

n Full Outer Join loan borrower

n Right Outer Join loan borrower

Page 59: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 51 STMIK ProVisi Semarang

lUpdatingnSemua operasi tersebut dinyatakan menggunakan operator assignment

DeletionnPermintaan delete ditunjukkan dengan cara yang sama untuk sebuah query, kecualipengganti dari menampilkan tuple ke pengguna, tuple yang dipilih dipindahkan daridatabasenDapat menghapus hanya keseluruhan tuple; tidak dapat menghapus nilai pada hanyaatribut tertentunDeletion ditunjukkan dalam relational algebra dengan :

r ← r – E dimana r adalah sebuah relasi dan E adalah query relational algebraContoh Deletion

InsertionnUntuk menyisipkan data ke dalam relasi, salah satunyalMenentukan sebuah tuple untuk disisipkanlMenulis query yang menghasilkan sebuah tuple untuk diinsertnDalam relational algebra, sebuah insertion ditunjukkan oleh

r ← r ∪ E dimana r adalah sebuah relasi dan E adalah pernyataan relational algebranInsertion dari tuple tunggal ditunjukkan dengan membiarkan E menjadi sebuah relasikonstan berisi satu tuple

n Menghapus semua record account dalam branch Perryridge

nMenghapus semua account (nasabah) pada branch (cabang) Needham

r1 ← σ branch_city = Needham (account branch )r2 ← ∏ account_number, branch_name, balance (r1)r3 ← ∏ customer_name, account_number (r2 depositor)account ← account r2

depositor ← depositor r3

nMenghapus semua record loan (pinjaman) dg amount (jumlah) antara 0 - 50

loan ← loan σ amount ≥ 0 and amount ≤ 50 (loan)

account ← account σ branch_name = Perryridge (account )

Page 60: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 52 STMIK ProVisi Semarang

Contoh Insertion

UpdatingnSebuah mekanisme untuk mengubah sebuah nilai dalam sebuah tuple tanpamembebankan semua nilai dalam tuplenGunakan operator generalized projection untuk melakukan tugas ini

nMasing-masing Fi adalah salah satunyalAtribut I th dari r, jika atribut I th tidak diupdate, atau,lJika atribut di update F, adalah sebuah pernyataan, meliputi hanya konstanta danatribut dari r, yang memberikan nilai baru untuk atributContoh Update

n Informasi insert dalam database menentukan bahwa Smithmempunyai $1200 dalam account A-973 pada branch Perryridge

n Menyediakan sebagai hadiah untuk semua loan (pinjaman)customer dalam branch (cabang) Perryridge, $200 disimpan diaccount. Biarkan loan number melayani sebagai account numberuntuk account yang disimpan

account ← account ∪ {( A-973 , Perryridge , 1200)}depositor ← depositor ∪ {( Smith , A-973 )}

r1 ← (σbranch_name = Perryridge (borrower loan))account ← account ∪ ∏loan_number, branch_name, 200 (r1)depositor ← depositor ∪ ∏customer_name, loan_number(r1)

n Buat pembayaran penting dengan menaikkan semua balance (saldo )dengan 5 %

n Bayar semua account dengan saldo di atas $10,000 bunga 6% danmembayar semua yang lainnya 5%

account ← ∏ account_number, branch_name, balance * 1.06 (σ BAL > 10000 (account ))∪ ∏ account_number, branch_name, balance * 1.05 (σBAL ≤ 10000 (account))

account ← ∏ account_number, branch_name, balance * 1.05 (account)

)r(r ,F,,F,F l21 K∏←

Page 61: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 53 STMIK ProVisi Semarang

Page 62: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 54 STMIK ProVisi Semarang

Page 63: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 55 STMIK ProVisi Semarang

Bab 4 Normalisasi

TabellModel Konseptual harus memandang data dengan logika yang paling sederhanalCara ini ditempuh dengan membuat blok data dasar untuk mengorganisasi kelompokdatalBlok data dasar yang paling umum digunakan dalam sistem basis data adalah tabel(table) atau relasi (relation)Tabel Mahasiswa

No_Mhs Nama Angkatan

1051 Adi 1994

1082 Tina 1994

9858 Budi 1990

1121 Sita 1995

Komponen TabellKolom ditandai dengan jenis atributlBaris ditandai dengan tuplelPerpotongan baris dan kolom disebut nilai atributlSebagai contoh “Adi” merupakan nilai atribut pada jenis atribut NamalTabel Mahasiswa ini ditulis dengan kerangka tabel Mahasiswa(No_mhs, Nama, Angkatan)

Beberapa ketentuan dalam penyusunan tabellUrutan baris tidak diperhatikan, sehingga pertukaran baris tidak akan berpengaruhterhadap isi informasi pada tabellUrutan kolom tidak diperhatikan, Identifikasi kolom dibedakan dengan jenis atributlTiap perpotongan baris dan kolom hanya berisi nilai atribut tunggal, sehingga nilaiatribut ganda tidak diperbolehkanlTiap baris dalam tabel harus dibedakan, sehingga tidak mungkin ada dua baris dalamtabel mempunyai nilai atribut yang sama secara keseluruhanlMenghindari nilai null

Data Duplikasi dan Data RangkaplData Duplikasi (duplicated data) terjadi apabila satu atribut mempunyai dua ataulebih nilai yang samalData Rangkap (redundant data) terjadi apabila dalam satu atribut mempunyai duaatau lebih nilai yang sama, tetapi apabila salah satu nilai dihapus, maka tidak adainformasi yang hilanglAtau dengan kata lain, data rangkap merupakan data duplikasi yang tidak perluterjadi

Page 64: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 56 STMIK ProVisi Semarang

Contoh Duplikasi DataNo_Mhs Nama Angkatan

1051 Adi 1994

1082 Tina 1994

9858 Budi 1990

1121 Sita 1995

Contoh Data Rangkap (Tabel MHS)No_mhs Fakultas Jml_sks Jml_semester

1051 Teknik 150 9

1082 Sastra 110 6

9858 Ekonomi 144 9

1121 Teknik 150 9

lCara yang paling sederhana untuk menghilangkan data rangkap adalah denganmemecah tabel tersebut menjadi dua tabel yang saling berhubunganlMisalnya tabel MHS dipecah menjadi tabel MAHASISWA dan FAKULTAS denganpenghubung atribut Nama_fak

Tabel MAHASISWANo_mhs Nama_fak

1051 Teknik

1082 Sastra

9958 Ekonomi

1121 Teknik

Tabel FAKULTASNama_fak Jml_sks Jml_semester

Teknik 150 9

Sastra 110 6

Ekonomi 144 9

Nilai Data Ganda (Repeating Group)lSalah satu syarat tabel normal adalah bahwa atribut hanya mempunyai nilai tunggaluntuk tiap baris

Page 65: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 57 STMIK ProVisi Semarang

Tabel Dosen dengan Nilai data gandaNip Nama_Dosen Gelar

1315 Anto Drs.

1416 Dodi Ir, MSc

1410 Achmad Ir

1350 Jono Ir, MSc, PhD

lCara menghilangkan nilai data ganda yang paling mudah adalah dengan membuatpengisian nilai atribut vertikal. Dalam hal ini akan terjadi data duplikasi yangberlebihanTabel Dosen yang diisi dengan nilai vertikal

Nip Nama_Dosen Gelar1315 Anto Drs1416 Dodi Ir1416 Dodi MSc1410 Achmad Ir1350 Jono Ir1350 Jono MSc1350 Jono PhD

lCara lain untuk menghilangkan data rangkap adalah dengan memecah tabel menjadidua. Dua tabel ini saling berhubungan dengan elemen penghubung salah satuatributnyaDOSEN

Nip Nama_Dosen1315 Anto1416 Dodi

1410 Achmad1350 Jono

GELARNip Gelar

1315 Drs

1416 Ir

1416 Msc

1410 Ir

1350 Ir

1350 Msc

1350 PhD

Page 66: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 58 STMIK ProVisi Semarang

Determinan (Determinant) dan Identitas (Identifier)lMisalkan suatu tabel mempunyai atribut A, B, C dan seterusnyalJika atribut A adalah determinan B maka dikatakan A menjadi penentu B, dansebaliknya atribut B ditentukan oleh AlTerdapat suatu tabel MAHASISWA(no_mhs, Nama, Fakultas, Jml_sks)lJika tiap nilai “No_mhs” berpasangan dengan “Nama”lMaka dikatakan atribut No_mhs merupakan determinan atribut NamalDemikian juga jika tiap nilai No_mhs berpasangan dengan satu nilai Fakultas makaatribut No_mhs merupakan determinan atribut FakultaslCara yang paling sederhana untuk menggambarkan adanya determinasi antar atributadalah dengan diagram determinansi

IdentitaslDalam penyusunan tabel tidak diperbolehkan adanya dua baris yang mempuyai nilaiatribut samalOleh karena itu perlu dipilih satu nilai atribut yang dapat dipakai sebagai identitas(identifier) atau elemen kunci (key element) dari barislNilai atribut dapat dijadikan identitas jika dalam tabel tidak pernah terjadi duplikasidan tidak mempunyai nilai kosonglSetiap determinan dapat dipilih sebagai identitaslJika suatu tabel memnuhi ketentuan ini maka dikatakan sebagai tabel normalBoyce/Codd (“Boyce/Codd Normal Form disingkat BCNF)

Tujuan normalisasilMembuat sekecil mungkin terjadinya data rangkaplMenghindarkan adanya data yang tidak konsisten terutama bila dilakukanpenghapusan atau penambahan data sebagai akibat adanya data rangkaplMenjamin bahwa identitas tabel secara tunggal sebagai determinan semua atribut

Bentuk Normal PertamalBentuk normal pertama dicapai bila tiap nilai atribut adalah tunggal.lKondisi ini dapat diperoleh dengan melakukan eliminasi terjadinya data anda(repeating group).lPada kondisi normal pertama ini kemungkinan masih terjadi adanya data rangkap

Bentuk normal kedualBentuk normal kedua dicapai bila atribut yang dijadikan identitas benar-benarsebagai determinan dari semua atributlBentuk normal kedua diperoleh dengan bantuan diagram determinansi ataumanipulasi data tabel pada kondisi bentuk normal pertama

No_mhs

Nama

Fakultas

Page 67: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 59 STMIK ProVisi Semarang

Bentuk normal ketigalBentuk normal ketiga adalah bentuk normal kedua tanpa terjadi adanyaketergantungan transitif (transitif determinan)lKondisi ini sama dengan tabel normal Boyce/Codd, namun masih diperlukanpemilihan identitas tunggal bila terdapat beberapa kandidat untuj dijadikan identitas

Keuntungan bentuk tabel normallEfek PenghapusanlEfek Penambahan Data

Bentuk Tabel Belum Normal

Bentuk Tabel Normal

Page 68: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 60 STMIK ProVisi Semarang

Page 69: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 61 STMIK ProVisi Semarang

Bab 5 SQL

Skema yang digunakan dalam Contoh

Basic StructureSQL berdasarkan pada operasi aturan dan relasional dengan modifikasi danpeningkatan tertentuQuery SQL umumnya mempunyai bentuk : select A1, A2, ..., An from r1, r2, ..., rm where PAis menyatakan atributris menyatakan relasionalP adalah predikat.Query ini sama dengan pernyataan aljabar relasional. ÕA1, A2, ..., An(sP (r1 x r2 x ... x rm))Hasil dari query SQL adalah sebuah relasi

Klausa selectKlausa select menampilkan atribut yang diinginkan dalam hasil dari sebuah queryDapat disamakan dengan operasi projek dari aljabar relasionalMisalnya temukan nama dari semua cabang dalam relation loan select branch-name from loanDalam sintak aljabar relasional “murni”, query akan menjadi:

∏ branch-name(loan)CATATAN: SQL tidak mengijinkan karakter ‘-’ dalam nama,Gunakan misalnya branch_name menggantikan branch-name dalam sebuahimplementasi sesungguhnya.CATATAN: nama SQL tidak case sensitive, jadi kalian dapat menggunakan hurufbesar atau kecil.SQL mengijinkan duplikat dalam relation sebagaimana dalam hasil queryUntuk mengeliminasi duplikat, sisipkan keyword distinct setelah select

Page 70: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 62 STMIK ProVisi Semarang

Temukan nama semua cabang dalam relation loan, dan hilangkan duplikat select distinct branch-name from loankeyword all menentukan bahwa duplikat tidak dihilangkan. select all branch-name

from loan

Sebuah asterik dalam klausa select menunjukkan “semua atribut” select * from loanKlausa select dapat berisi pernyataan aritmatika menyertakan operasi +, –, *, dan /,dan beroperasi pada konstanta atau atribut tuple.query: select loan-number, branch-name, amount * 100 from loan

akan mengembalikan sebuah relation yang sama dengan relation loan, kecualiatribut amount dikalikan dengan 100

Klausa whereKlausa where menentukan kondisi dimana hasil harus dipenuhiDapat disamakan dengan predikat select dari ajabar relational.Untuk menemukan semua loan number untuk pinjaman yang dibuat pada cabangPerryridge dengan jumlah pinjaman lebih besar daripada $1200. select loan-number

from loanwhere branch-name = Perryridge and amount > 1200

Hasil perbandingan dapat dikombinasikan menggunakan and, or, dan not.Perbandingan dapat diterapkan pada hasil pernyataan aritmatikaSQL menyertakan operator perbandingan betweenMisalnya temukan loan number dengan jumlah pinjaman antara $90,000 dan$100,000 (³$90,000 and £$100,000) select loan-number

from loanwhere amount between 90000 and 100000

Klausa fromklausa from menampilkan relation yang disertakan dalam queryDisamakan dengan operasi Cartesian product dari aljabar relational.Temukan Cartesian product borrower x loan select * from borrower, loanTemukan name, loan number dan loan amount dari semua customers yangmempunyai pinjaman pada cabang Perryridge.select customer-name, borrower.loan-number, amount

from borrower, loanwhere borrower.loan-number = loan.loan-number and

branch-name = ‘Perryridge’

Page 71: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 63 STMIK ProVisi Semarang

Operasi RenameSQL mengijinkan mengganti relation dan atribut menggunakan klausa as:

nama-lama as nama-baru

Temukan name, loan number dan loan amount dari semua customers; ganti namakolom loan-number sebagai loan-id.select customer-name, borrower.loan-number as loan-id, amountfrom borrower, loanwhere borrower.loan-number = loan.loan-number

Variabel TupleVariabel Tuple didefinisikan dalam klausa from melalui penggunaan klausa as.Temukan nama customer dan loan numbers mereka untuk semua customer yangmempunyai pinjaman pada beberapa cabang.select customer-name, T.loan-number, S.amount

from borrower as T, loan as Swhere T.loan-number = S.loan-number

Temukan nama semua cabang yang mempunyai modal terbesar dari pada beberapacabang yang berada di Brooklyn.select distinct T.branch-name

from branch as T, branch as Swhere T.assets > S.assets and S.branch-city = Brooklyn

Operasi StringSQL menyertakan operator pencocokan string untuk pembandingan pada karakterstring. Menggunakan dua karakter khusus :percent (%). Karakter % mencocokkan bagian string.underscore (_). Karakter _ mencocokkan karakter apapun.Temukan nama semua customers dimana jalannya terdapat kata “Main”. select customer-name

from customerwhere customer-street like ‘%Main%’

Mencocokan dengan “Main%” like ‘Main\%’ escape ‘\’SQL mendukung operasi string seperti :concatenation (menggunakan “||”)Mengkonversi dari huruf besar ke kecil (dan sebaliknya)Menemukan panjang string, mengekstrak substrings, dll

Mengurutkan tampilan TuplesDaftar dalam urutan alfabet nama semua customer yang mempunyai pinjaman padacabang Perryridge select distinct customer-name

from borrower, loanwhere borrower loan-number = loan.loan-number and

branch-name = ‘Perryridge’ order by customer-nameKita mungkin menentukan desc untuk urutan descending atau asc untuk urutanascending, untuk masing-masing atribut; urutan ascending adalah default.Misalnya. order by customer-name desc

Page 72: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 64 STMIK ProVisi Semarang

Fungsi AggregateFungsi yang beroperasi pada sekumpulan nilai dari kolom dari sebuah relation, danmengembalikan sebuah nilai avg: nilai rata-rata min: nilai minimum max: nilai maximum sum: jumlah count: jumlah dataTemukan rata-rata saldo rekening pada cabang Perryridge.select avg (balance)

from accountwhere branch-name = ‘Perryridge’

Temukan jumlah dari tuple dalam relation customer.select count (*)

from customerTemukan jumlah dari depositor dalam bank.select count (distinct customer-name)

from depositor

Fungsi Aggregate – Group ByMenemukan jumlah dari depositor untuk masing-masing cabang.select branch-name, count (distinct customer-name)

from depositor, accountwhere depositor.account-number = account.account-numbergroup by branch-name

Fungsi Aggregate – Klausa HavingTemukan nama semua cabang dimana rata-rata rekening lebih dari $1,200.select branch-name, avg (balance)

from accountgroup by branch-namehaving avg (balance) > 1200

Nilai NullAdalah mungkin tuple mempunyai nilai null, ditunjukkan dengan null, untuk beberapaatribut merekanull menandakan sebuah nilai unknown atau nilai yang tidak ada.Predikat is null dapat digunakan untuk mengecek nilai null.Misalnya. Temukan semua loan number yang tampil dalam relation loan dengan nilainull values untuk amount. select loan-number

from loanwhere amount is null

Hasil dari pernyataan aritmatika menyertakan null adalah nullMisalnya. 5 + null mengembalikan null

Page 73: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 65 STMIK ProVisi Semarang

Modifikasi Database – DeleteMenghapus semua rekening pada cabang Perryridge delete from account

where branch-name = ‘Perryridge’Menghapus semua rekening pada setiap cabang yang berada di kota Needham. delete from accountwhere branch-name in (select branch-name

from branchwhere branch-city = ‘Needham’)

delete from depositorwhere account-number in (select account-number

from branch, accountwhere branch-city = ‘Needham’

and branch.branch-name = account.branch-name)

Contoh QueryMenghapus semua rekening dengan saldo di bawah rata-rata bank.

Modifikasi Database – InsertTambahkan sebuah tuple bari ke account insert into account

values (‘A-9732’, ‘Perryridge’,1200)atau sama dengan

insert into account (branch-name, balance, account-number)values (‘Perryridge’, 1200, ‘A-9732’)

Tambahkan tuple baru ke account dengan nilai balance null insert into account

values (‘A-777’,‘Perryridge’, null)

Modifikasi Database – UpdateNaikkan semua rekening untuk saldo di atas $10,000 dengan 6%, rekening yang lainmenerima 5%.Tulis dua perintah update : update account

set balance = balance ∗ 1.06 where balance > 10000

update accountset balance = balance ∗ 1.05

where balance ≤ 10000Urutan sangat pentingLebih baik menggunakan perintah case (slide berikutnya)

Perintah Case untuk Conditional UpdateDengan Query yang sama sebelumnya: Naikkan semua rekening untuk saldo di atas$10,000 dengan 6%, rekening yang lain menerima 5%.

Page 74: Modul Basis Data

Teori Perancangan Basis Data

Dosen : Arief Hidayat, S.Kom 66 STMIK ProVisi Semarang

update account set balance = case when balance <= 10000 then balance *1.05 else balance * 1.06 end

Membuat Kontruksi TabelSebuah relation SQL didefinisikan menggunakan perintah create table : create table r (A1 D1, A2 D2, ..., An Dn,

(integrity-constraint1), ..., (integrity-constraintk))r adalah nama relationMasing2 Ai adalah sebuah nama atribut dalam skema relation rDi adalah tipe data dari nilai dalam domain dari atribut AiContoh: create table branch (branch-name char(15) not null,

branch-city char(30),assets integer)

Integrity Constraints dalam Membuat Tabelnot nullprimary key (A1, ..., An)check (P), dimana P adalah sebuah predikatContoh: Deklarasikan branch-name sebagai primary key untuk branch dan pastikanbahwa nilai dari assets adalah non-negative.

create table branch (branch-name char(15),

branch-city char(30)assets integer,primary key (branch-name),check (assets >= 0))

Deklarasi primary key pada sebuah atribut otomatis memastikan not null

Drop dan Alter TablePerintah drop table menghapus semua informasi tentang relation yang dipilih daridatabase.Perintah alter table digunakan untuk menambah atribut ke sebuah relation yang ada. alter table r add A D

dimana A adalah nama atribut untuk ditambahkan ke relation r dan D adalahdomain A. Semua tuple dalam relation diberikan null sebagai nilai untuk atribut baru.Perintah alter table dapat juga digunakan untuk menghapus atribut dari sebuahrelation alter table r drop Adimana A adalah nama dari atribut relation rMenghapus atribut tidak didukung oleh beberapa database

Page 75: Modul Basis Data

DAFTAR PUSTAKA1. Silberschatz-Korth-Sudarshan (2001), “Database System Concepts”, Mc Graw

Hill, ISBN : 0-07-228363-72. Mark Whitehorn dan Bill Marklyn (2003), “Seluk Beluk Database Relasional”,

Penerbit Erlangga, ISBN : 979-688-751-73. Robert Sheldon dan Ethan Wilansky (2001), “MCSE Training Kit: Microsoft SQL

Server 2000 Database Design and Implementation”, Microsoft, ISBN : 0-7356-1248-X

4. Rob, P. and Coronel, C. (2001), "Database Systems, Design, Implementation andManagement", 5th Edition, Thomson, Course Technology, ISBN: 061906269X.