PENDAHULUAN
1.1 Definisi
Basis data (bahasa Inggris: database), atau sering pula dieja basisdata, adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sistem basis data dipelajari dalam ilmu informasi.
Istilah "basis data" berawal dari ilmu komputer. Meskipun kemudian artinya semakin luas, memasukkan hal-hal di luar bidang elektronika, artikel ini mengenai basis data komputer. Catatan yang mirip dengan basis data sebenarnya sudah ada sebelum revolusi industri yaitu dalam bentuk buku besar, kwitansi dan kumpulan data yang berhubungan dengan bisnis.
Konsep dasar dari basis data adalah kumpulan dari catatan-catatan, atau potongan dari pengetahuan. Sebuah basis data memiliki penjelasan terstruktur dari jenis fakta yang tersimpan di dalamnya: penjelasan ini disebut skema. Skema menggambarkan obyek yang diwakili suatu basis data, dan hubungan di antara obyek tersebut. Ada banyak cara untuk mengorganisasi skema, atau memodelkan struktur basis data: ini dikenal sebagai model basis data atau model data. Model yang umum digunakan sekarang adalah model relasional, yang menurut istilah layman mewakili semua informasi dalam bentuk tabel-tabel yang saling berhubungan dimana setiap tabel terdiri dari baris dan kolom (definisi yang sebenarnya menggunakan terminologi matematika). Dalam model ini, hubungan antar tabel diwakili denga menggunakan nilai yang sama antar tabel. Model yang lain seperti model hierarkis dan model jaringan menggunakan cara yang lebih eksplisit untuk mewakili hubungan antar tabel.
Istilah basis data mengacu pada koleksi dari data-data yang saling berhubungan, dan perangkat lunaknya seharusnya mengacu sebagai sistem manajemen basis data (database management system/DBMS). Jika konteksnya sudah jelas, banyak administrator dan programer menggunakan istilah basis data untuk kedua arti tersebut.
1.2 Perangkat Lunak Basis Data
Perangkat lunak basis data yang banyak digunakan dalam pemrograman dan merupakan perangkat basis data aras tinggi (high level):
DB2
Microsoft SQL Server
Oracle
Sybase
Interbase
XBase
Firebird
MySQL
PostgreSQL
Microsoft Access
dBase III
Paradox
FoxPro
Visual FoxPro
Arago
Force
Recital
dbFast
dbXL
Quicksilver
Clipper
FlagShip
Harbour
Visual dBase
Lotus Smart Suite Approach
Selain perangkat lunak di atas, terdapat juga perangkat lunak pemrograman basis data aras rendah (low level), diantaranya:
Btrieve
Tsunami Record Manager
1.3 Sistem Manajemen Basis Data
Sistem manajemen basis data (Bahasa Inggris: database management system, DBMS), atau kadang disingkat SMBD, adalah suatu sistem atau perangkat lunak yang dirancang untuk mengelola suatu basis data dan menjalankan operasi terhadap data yang diminta banyak pengguna. Contoh tipikal SMBD adalah akuntansi, sumber daya manusia, dan sistem pendukung pelanggan, SMBD telah berkembang menjadi bagian standar di bagian pendukung (back office) suatu perusahaan. Contoh SMBD adalah Oracle, SQL server 2000/2003, MS Access, MySQL dan sebagainya.
1.4 Sistem Manajemen Basis Data Relasional
Sebuah sistem manajemen basisdata relasional atau dalam bahasa Inggrisnya dikenal sebagai relational database management system (RDBMS) adalah sebuah program komputer (atau secara lebih tipikal adalah seperangkat program komputer) yang didisain untuk mengatur/memanajemen sebuah basisdata sebagai sekumpulan data yang disimpan secara terstruktur, dan melakukan operasi-operasi atas data atas permintaan penggunanya. Contoh penggunaan DBMS ada banyak sekali dan dalam berbagai bidang kerja, misalnya akuntansi, manajemen sumber daya manusia, dan lain sebagainya. Meskipun pada awalnya DBMS hanya dimiliki oleh perusahaan-perusahaan berskala besar yang memiliki perangkat komputer yang sesuai dengan spesifikasi standar yang dibutuhkan (pada saat itu standar yang diminta dapat dikatakan sangat tinggi) untuk mendukung jumlah data yang besar, saat ini implementasinya sudah sangat banyak dan adaptatif dengan kebutuhan spesifikasi data yang rasional sehinggal dapat dimiliki dan diimplementasikan oleh segala kalangan sebagai bagian dari investasi perusahaan.
1.4.1 Sejarah atas istilah RDBMS
Edgar F. Codd memperkenalkan istilah ini pada makalah seminarnya yang berjudul "A Relational Model of Data for Large Shared Data Banks". Salah satu definisi yang cukup dikenal secara luas atas sebuah sistem basisdata relasional adalah 12 hukum Codd. Namun demikian, pada awal-awal implementasinya banyak model relasional yang tidak mengikuti seluruh elemen-elemen yang terdapat dalam hukum-hukum Codd tersebut yang menjadikan terminologinya berkembang untuk mendeskripsikan sebuah tipikal sistem basisdata yang lebih luas. Dalam cakupan yang minimum sistem tersebut memenuhi kriteria berikut:
Menyajikan data pada pengguna dalam bentuk relasional (ditampilkan dalam bentuk tabular, sebagai koleksi dari tabel dimana setiap tabel beriisi sekumpulan baris dan kolom)
Menyediakan operator relasioanl untuk memanipulasi data dalam bentuk tabular
Sistem yang pertama kalinya yang secara relatif memenuhi implementasi atas sebuah model relasional adalah Pusat Studi Ilmiah IB, Inggris, di Peterlee; IS1 (1970-1972) dan implementasi lain yang mengikutinya PRTV (1973-1979). Sistem yang pertama kalinya dijual secara komersil sebagai RDBMS adalah Multics Relational Data Srore pada tahun 1978. Yang lainnya adalah Berkeley Ingres QUEL dan IBM BS12.
1.4.2 Pemanfaatan Saat Ini
Ada beberapa ketidaksepahaman terhadap definisi atas "relasional" dari DBMS. Definisi yang paling populer dari sebuah RDBMS seringkali dianggap kurang tepat; beberapa kalangan berargumentasi bahwa penyajian data sebagai kumpulan baris dan kolom sudah cukup memenuhi syarat untuk dikatakan sebagai sebuah RDBMS. Tipikalnya, sebuah sistem basisdata dikatakan memenuhi kriteria sebagai RDBMS apabila memenuhi hukum-hukum yang ditetapkan dalam 12 hukum Codd, namun pada kenyataannya justru kebanyakan sistem basisdata tidak mendukung sepenuhnya implementasi hukum-hukum Codd tersebut.
Kalangan lainnya beranggapan apabila sebuah sistem basisdata tidak mengimplementasikan keseluruhan hukum-hukum Codd tersebut, maka sistem tersebut tidak dapat disebut sebagai relasional. Pandangan seperti ini, yang banyak diterima oleh para teoritis dan kalangan-kalangan lainnya yang memegang teguh prinsip-prinsip Codd, tentunya akan mendiskualifikasikan banyak sistem basisdata yang ada saat ini "tidak murni relasional". Dalam kenyataannya, sistem basisdata yang menggunakan SQL (Structured Query Language) untuk mengakses dan memodifikasi data tidak bisa dikatakan sebagai RDBMS menurut definisi ini. Sementara itu, para pendukung atas sistem basisdata yang ada menyebutkan sebuah sistem basisdata yang menerapkan hanya beberapa dari hukum-hukum Codd tersebut disebut sebagai Sistem Manajemen Basisdata Semi-Relasional/Pseudo-Relational Database Management Systems (PRDBMS). Untuk sistem manajemen basis data yang sepenuhnya menerapkan hukum-hukum Codd tersebut selanjutnya disebut sebagai Sistem Manajemen Basisdata Murni-Relasional/Trully-Relational Database Management Systems (TRDBMS).
Saat ini, hampir seluruh RDBMS yang ada menerapkan SQL sebagai bahasa query namun juga menyediakan dan mengimplementasi beberapa alternatif lainnya. Alpora Dataphor adalah RDBMS yang tersedia secara komersil yang mengikuti secara penuh ke dua belas hukum-hukum Codd tersebut, dan kedua kelompok mengenalnya sebagai RDBMS.
1.4.3 Variasi Dinamis
Keluhan yang muncul dan dikenal secara umum terhadap keberadaan RDBMS adalah kenyataan bahwa implementasi yang ada saat ini dipandang sebagai terlalu "statis". Spekulasipun bermunculan terhadap kemungkinan untuk membuat sebuah sistem basisdata generasi baru yang menggunakan model "relasional secara dinamis" dengan kolom yang bisa dibuat secara dinamis, ukuran yang berkembang secara dinamis, didefinisikan secara dinamis. Setiap baris dapat diimplementasikan sebagai map (kamus ataupun larik asosiatif) dan kolom-kolom yang tidak dikenal secara sederhana disajikan sebagai field kosong. Beberapa kalangan menganggap hal ini menyalahi model relasioal murni, namun kalangan lain menyanggah bahwa sebuah penggunaan map hanyalah sebagai detil implementasi saja. Sehingga dalam pandangan ini, sebuah "kolom yang tidak ditemukan/tidak ada" secara sederhana hanyalah dipandang sebagai perihal interpretasi dan dianggap sebagai pilihan cara penyajian saja.
BAB 2
ARSITEKTUR SISTEM BASIS DATA
Arsitektur system basis data memberikan kerangka kerja bagi pembangunan basis data.
2.1 LEVEL ARSITEKTUR BASIS DATA
Menurut ANSI/SPARC, arsitektur basis data terbagi atas tiga level yaitu :
a.Internal/Physical Level
Berhubungan dengan bagaimana data disimpan secara fisik (physical storage)
b.External /View Level
Berhubungan dengan bagaimana data di representasikan dari sisi setiap user.
c.Conceptual/Logical Level
Yang menghubungkan antara internal & external level
Berikut adalah gambar tiga level arsitektur system basis data :
Contoh dalam sebuah basis data pegawai, ketiga level digambarkan sebagai berikut :
Pada level konseptual, basis data mengandung informasi tenteang sebuah entity yang disebut EMPLOYEE. Setiap EMPLOYEE mempunyai sebuah EMP_NUMBER (6 karakter), DEP_NUMBER(4 karakter) & SALARY (5 digit desimal).
Pada level internal, para pegawai direpresentasikan oleh STRORED_EMP, panjang 20 byte. STORED_EMP terdiri atas 4 field yaitu flag/pointer, 6 byte, tiga field untuk atribut pegawai.
User yang menggunakan PL/I mempunyai sisi pandang level eksternal dimana pegawai direpresentasikan dalam sebuah record yang ditulis dengan sintaks PL/I.
Demikianlah pula user yang menggunakan COBOL mempunyai sisi pandang level eksternal dimana pegawai direpresentasikan dalam sebuah record yang ditulis dengan sintaks COBOL.
2.1.1 External Level /View Level
Adalah level user. Yang dimaksud dengan user adalah programmer, end user atau DBA. Setiap user mempunyai ‘bahasa’ yang sesuai dengan kebutuhannya.
Programmer : bahasa yang digunakan adalah bahasa pemrograman seperti C, COBOL, atau PL/I
End user : bahasa yang digunakan adalah bahasa query atau menggunakan fasilitas yang tersedia pada program aplikasi pada level eksternal ini, user dibatasi pada kemampuan perangkat keras dan perangkat lunak yang digunakan aplikasi basis data. Didefinisikan sebagai sebuah Skema Eksternal.
2.1.2 Conceptual Level / Logical level
Conceptual level adalah sebuah representasi seluruh muatan informasi yang dikandung oleh basis data. Tidak seperti level eksternal maka pada level conceptual, keberadaannya tidak memperhitungkan kekurangan perangkat keras maupun perangkat lunak pembangun aplikasi basis data. Didefinisikan sebagai sebuah Skema Konseptual.
2.1.3 Internal/Physical Level
Adalah level terendah untuk merepresentasikan basis data. Record disimpan dalam media penyimpanan dalam format byte. Didefinisikan sebagai sebuah Skema Internal.
2.2 PEMETAAN
2.2.1 Conceptual/internal Mapping
Yaitu pemetaan yang mendefinisikan hubungan antara level konseptual dan level internal. Pemetaan ini menjelaskan bagaimana record & field pada level konseptual direpresentasikan pada level internal.
2.2.2 External/Conceptual Mapping
Yaitu pemetaan yang mendefinisikan hubungan antara level eksternal dan level konseptual. Contoh : beberapa field dapat mempunyai tipe yang berbeda, field dan nama field dapat berubah, bebeapa field pada level konseptual dapat dikombinasikan ke dalam satu field external.
2.3 MODEL-MODEL DATA
Yang dimaksud dengan model data adalah sekumpulan tool konseptual untuk mendeskripsikan data, relasi-relasi antar data, semantic data & konsistensi konstrain. Bermacam-macam model data terbagi dalam tiga kelompok besar yaitu :
Object-based logical models, record-based logical models, & physical models.
a. Object-based logical Models
Yang termasuk dalam kelompok ini adalah :
Entity-relationship model
Object-oriented model
Semantic data model
Functional data model
Dua dari model di atas yaitu : entity-relationship model & object-oriented model akan dijelaskan lebih detil.
1) Entity-relationship Model
E-R model didasarkan atas persepsi terhadap dunia nyata yanga terdiri dari sekumpulan objek, disebut entity dan hubungan antar objek tersebut, disebut relationship. Entity adalah objek di dunia yang bersifat unik. Setiap entity mempunyai atribut yang membedakannya dengan entity lainnya. Contoh : entity Mahasiswa, mempunyai atribut nama, umur, alamat no. ktm. Pemodelan data dengan model E-R menggunakan diagram E-R. Diagram E-R terdiri dari :
Kotak persegi panjang, menggambarkan himpunan entity
Elip, menggambarkan atribut-atribut entity
Diamon, menggambarkan hubungan antara himpunan entity
Garis, yang menghubungkan antar objek dalam diagram E-R
2) Object-Oriented Model
Model berorientasi objek berbasiskan kumpulan objek. Setiap objek berisi :
Nilai yang disimpan dalam variable instant, dimana variable tersebut “melekat” dengan objek itu sendiri.
Metoda : operasi yang berlaku pada objek yang bersangkutan
Objek-objek yang memiliki tipe nilai & metode yang sama dikelompokkan dalam satu kelas. Kelas disini mirip dengan tipe data abstrak pada bahasa pemrograman.
Sending a message : sebuah objek dapat mengakses data sebuah objek yang lain hanya dengan memanggil metode dari objek tersebut.
b. Record-based logical models
Terdapat beberapa model dalam kelompok ini :
Model Relasional ( Relational Model)
Model relasional menggunakan kumpulan tabel-tabel untuk merepresentasikan data & relasi antar data-data tersebut. Setiap tabel terdiri atas kolom-kolom, dan setiap kolom mempunyai nama yang unik.
Contoh :
Model Jaringan (Network Model )
Data dalam model jaringan direpresentasikan dengan sekumpulan record (Pascal), dan relasi antara data direpresentasikan oleh record & link. Link dipandang sebagai pointer. Record-record diorganisasikan sebagai graf. Contoh, model relasional di atas direpresentasikan dalam model jaringan.
Model Hirarki (Hirarchical Model)
Mirip dengan model jaringan.Data direpresentasikan dalam record dan link. Perbedaannya adalah, record-record diorganisasikan sebagai tree (pohon) daripada graf. Model relasional berbeda dengan model jaringan & hirarki, dalam hal penggunaan pointer atau link.
2.4 BAHASA YANG DISEDIAKAN OLEH SISTEM BASIS DATA
Sebuah system basis data menyediakan dua tipe bahasa yaitu : tipe untuk menspesifikasikan skema basis data, disebut DDL, dan tipe untuk mengekspresikan queri atau update basis data, disebut MDL.
2.4.1 Data-definition Language
Skema basis data dispesifikasikan oleh sekumpulan definisi dengan sebuah bahasa khusus yang disebut data-definition language (DDL). Hasil kompilasi DDL berupa tabel-tabel yang disimpan dalam sebuah file, disebut data dictionary (kamus data) atau data directory. Kamus data adalah sebuah file yang berisi metadata. File ini yang dikonsultasi sebelum data yang sebenarnya dibaca atau dimodifikasi oleh system basis data.
2.4.2 Data-manipulation Language
Adalah bahasa untuk memanipulasi data yaitu :
o Pengambilan informasi yang disimpan dalam basis data
o Penyisipan informasi baru ke basis data
o Penghapusan informasi dari basis data
o Modifikasi informasi yang disimpan dalam basis data
Query adalah statemen yang ditulis untuk mengambil informasi. Bagian dari DML yang menangani pengambilan informasi ini disebut bahasa query.
2.5 DATABASE ADMINISTRATOR (ADMINISTRATOR BASIS DATA)
Administrator basis data adalah orang yang bertanggungjawab terhadap strategi yang berhubungan dengan pengolahan data di suatu perusahaan. Selain hal tersebut, DBA adalah orang yang bertanggungjawab terhadap implementasi strategi tersebut secara teknis. Berikut dijelaskan bebrapa fungsi DBA secara detil:
a.Mendefinisikan skema konseptual
Yaitu memutuskan informasi apa saja yang akan dihasilkan oleh sutu basis data. Dalam hal ini DBA bertugas mendefinisikan entity-entiti yang terlibat pada perancangan basis data. Proses ini disebut dengan Logical Database Design (kadang-kadang disebut Conceptual Database Design). Setelah DBA menentukan
muatan dari basis data maka DBA akan menyusun skema konseptual menggunakan DDL (data definition language). Kemudian dengan DBMS, skema tersebut diimplementasikan.
Mendefinisikan Skema Internal
Selain menentukan skema konseptual dari basis data, DBA juga bertanggung jawab terhadap desain penyimpanan data secara fisik.
c. Mensosialisasikan hasil rancangan baik konseptual & internal ke user
Dalam hal ini tugas DBA adalah menyakinkan user bahwa data-data yang mereka perlukan semua telah tersedia & membantu user untuk mengimplementasikan rancangan tersebut dalam DDL.
d. Mendefinisikan aturan-aturan sekuriti & integritas data
e. Mendefinisikan prosedur-prosedur back-up & recovery
f. Memonitor performansi system & menangani perubahan-perubahan yang
ada.
2.6 DATABASE MANAGEMENT SYSTEM (SISTEM MANAJEMEN BASIS DATA)
DBMS adalah software yang menangani semua akses ke basis data. Secara konsep apa yang terjadi adalah sebagai berikut :
1.User melakukan pengaksesan basis data untuk informasi yang diperlukannya menggunakan suatu bahasa manipulasi data, biasanya disebut SQL.
2.DBMS menerima request dari user & menganalisa request tersebut
3.DBMS memeriksa skema eksternal user, pemetaan eksternal/konseptual, skema konseptual, pemetaan konseptual/internal, & struktur penyimpanan.
4.DBMS mengeksekusi operasi-operasi yang diperlukan untuk memenuhi permintaan user.
BAB 3
MODEL ENTITY-RELATIONSHIP
Model E-R didasarkan pada persepsi dari sebuah dunia nyata yang terdiri dari sekumpulan objek, disebut entiti & relasi diantar objek-objek tersebut.
3.1 Konsep Dasar
Terdapat tiga notasi dasar yang bekerja pada model E-R yaitu : entity sets, relationship
sets, & attributes.
a. Entity Sets
Sebuah entiti adalah sebuah “benda” (thing) atau “objek”(object) di dunia nyata yang dapat dibedakan dari semua objek lainnya. Entity sets adalah sekumpulan entiti yang mempunyai tipe yang sama. Kesamaan tipe ini dapat dilihat dari atribut/property yang dimiliki oleh setiap entiti. Misal kumpulan orang yang menyimpan uang pada suatu bank dapat didefinisikan sebagai entiti set nasabah.
b. Relationship Sets
Relationship adalah hubungan diantara beberapa entiti. Misal relasi yang menghubungkan antar Toni dengan rek. 142-099999. Relasi ini menunjukkan bahwa Toni adalah nasabah yang mempunyai nomor rekening 142-099999. Relationship set adalah sekumpulan relasi yang mempunyai tipe yang sama.
c. Kunci Relasi (Relation Keys)
Nilai dari kunci relasi harus mengidentifikasikan sebuah baris yang unik didalam sebuah relasi. Kunci relasi terdiri dari satu atau lebih atribut-atribut relasi. Atribut-atribut dalam kunci relasi harus memiliki sifat sebagai berikut :
untuk satu nilai hanya mengindentifikasikan satu baris dalam satu relasi
tidak memiliki subset yang juga merupakan kunci relasi
tidak dapat bernilai null
contoh TABEL PERSON berikut :
Person_Id adalah kunci relasi dari relasi PERSON. Dalam relasi tersebut, maksimal hanya satu baris untuk setiap nilai Person_Id yang diberikan. Sebagai contoh, hanya satu baris dengan Person_Id = ‘P3’. Name tidak dapat dijadikan kunci relasi karena dapat lebih dari satu orang yang mempunyai nama yang sama. Relasi Person di atas memiliki kunci yang hanya terdiri dari satu atribut. Sangat dimungkinkan kunci relasi terdiri dari banyak atribut. Contoh relasi Work pada gambar di bawah mempunyai kunci relasi yang terdiri dari dua atribut yaitu :
Person_Id & Proj_No
Nilai kedua atribut, Person_Id & Proj_No diperlukan untuk menentukan satu baris yang unik. Karena untuk menentukan satu baris yang unik tidak cukup dengan Person_Id saja atau hanya dengan Proj_No.
d. Foreign Key(FK)
Term FK juga banyak digunakan dalam perancangan. Sebuah FK adalah sekumpulan atribut dalam suatu relasi (misal A) sedemikian sehingga kumpulan atribut ini bukan kunci relasi A tetapi merupakan kunci dari relasi lain.
Kardinalitas Pemetaan
Kardinalitas pemetaan atau rasio kardinalitas menunjukkan jumlah entity yang dapat dihubungkan ke satu entity lain dengan suatu relationship sets.
Kardinalitas pemetaan meliputi :
1.Hubungan satu ke satu (one to one).
Yaitu satu entity dalam A dihubungkan dengan maksimum satu entity dalam B
2.Hubungan satu ke banyak (one to many)
Yaitu satu entity dalam A dihubungkan dengan sejumlah entity dalam B. Satu entity dalam B dihubungkan dengan maksimum satu entity dalam A.
3.Hubungan banyak ke satu (many to one)
Yaitu satu entity dalam A dihubungkan dengan maksimum satu entity dalam B. Satu entity dalam B dapat dihubungkan dengan sejumlah entity dalam A.
4.Hubungan banyak k banyak (many to many).
Satu entity dalam A dihubungkan dengan sejumlah entity dalam B, & satu entity dalam B dihubungkan dengan sejumlah entity dalam A.
Gambar Kardinalitas Pemetaan :
Diagram Entity-Relationship
Komponen E-R diagram adalah :
Persegi panjang (rectangles) : merepresentasikan entity sets
Elip (ellipses) : merepresentasikan atribut entity
Wajik(diamonds) : merepresentasikan relationship sets
Lines (garis) : merepresentasikan hubungan atribut ke entity sets & entity sets ke relatioship sets
Contoh :
Diagram E-R dibawah terdiri dari 2 entity sets, customer & loan, & satu relationship set borrower. Atribut dari customer adalah nama, ktp, jalan, kota. Atribut untuk loan adalah no_pinjaman, jml_pinjaman. Hubungan entity customer ke loan adalah banyak ke banyak.
Entity Sets Lemah
Adalah entity set yang tidak mempunyai primary key. Entity sets yang mempunyai primary key disebut entity sets kuat.
Spesialisasi
Proses mendesain subgrup di dalam suatu entity disebut dengan specialisasi. Suatu himpunan entity bisa memiliki suatu subgrup yang berbeda diantara entiti-entiti lain dalam himpunan tersebut. Misalnya suatu sub himpunan entity dalam suatu himpunan entity bisa memiliki atribut yang berbeda dari entity-entiti lain. Model E-R memiliki fasilitas untuk perbedaan ini.
Contoh : himpunan entity account memiliki atribut account-number dan balance. Suatu
account dapat diklasifikasikan lagi menjadi salah satu dari :
- savings-account
- checking-account
(lihat gambar dibawah)
setiap tipe account ini diterangkan dengan himpunan atribut yang termasuk dalam atribut-atribut dari entity set account ditambah dengan atribut tambahan. Contoh entity saving-account diterangkan dengan atribut interest-rate, dan checking-account diterangkan dengan overdraft-amount.
Proses spesialisasi mengijinkan pembedaan account berdasarkan tipe account. Account juga dapat dibedakan dengan cara lain, misalkan berdasarkan tipe kepemilikkan menjadi commercial-account dan personal-account. Ketika dalam suatu entity dibentuk lebih dari satu proses spesialisasi, maka suatu entity menjadi milik dua spesialisasi tersebut. Misal suatu account bisa merupakan suatu personal account dan suatu checking account.
Dalam diagram E-R, spesialisasi dilambangkan dengan komponen segitiga bertuliskan ISA. ISA juga melambangkan hubungan antara superclass-subclass. Entity yang dengan kedudukkan lebih rendah/tinggi memiliki lambing sama.
Generalisasi
Disamping proses desain top-down (dari inisial entity ke level lebih rendah (subgrup)), desain juga dapat dilakukan dengan proses bottom-up, yaitu banyak entiti disintesiskan menjadi entity yang lebih tinggi berdasarkan kesamaan feature-nya.
Desainer basis data mungkin mengidentifikasi terlebih dulu entity checking-account dengan atribut account-number, balance dan overdraftamount.
Ditemukan juga entity set saving-account dengan atribut account-number, balance dan interest-rate.
Terdapat kesamaan antara entity set checking-account dengan entity set saving-account, yaitu keduanya memiliki beberapa atribut yang sama.
Persamaan ini dapat diekspresikan dengan generalisasi.
BAB 4
MODEL RELATIONAL
4.1 PENDAHULUAN
Model relasi pertama kali dikenalkan oleh Codd, pada tahun 1971. Sejak itu model relasi memainkan peranan yang sangat penting dalam berbagai perancangan basis data. Ada tiga alas an mengapa model relasi mempunyai peranan penting dalam perancangan basis data yaitu :
Mempunyai piranti komunikasi yang baik antara user & designer, artinya relasi merepresentasikan struktur data yang dapat dimengerti oleh user maupun designer.
Model relasional mendefinisikan salah satu kriteria perancangan basis data yang penting yaitu relasi bentuk normal.
Struktur data yang direpresentasikan oleh relasi dapat segera dikonversikan & diimplementasikan ke RDBMS.
4.2 APA YANG DISEBUT DENGAN RELASI
Relasi pertama kali didefinisikan menggunakan teori himpunan. Cara termudah untuk mendefinisikan sebuah relasi adalah sebagai sebuah tabel dimana data-datanya disimpan dalam baris tabel.
Contoh Table : Tabel Work dibawah ini
Terdiri dari tiga kolom, yaitu Person_Id, Proj_No dan Total_Time. Tabel ini menyimpan waktu yang dihabiskan oleh person pada proyek tersebut. Selain tabel Work terdapat juga relasi Persons. Relasi ini menyimpan secara detail tentang person yang bekerja pada proyek dimaksud.
4.3 TERMINOLOGI
Relasi = Tabel
Atribut relasi = Kolom tabel
Tuple = Baris
4.4 STRUKTUR LOJIK & FISIK
Relasi adalah sebuah representasi data lojik bukan fisik. Relasi menggambarkan struktur data tanpa memperhatikan bagaimana data disimpan atau diakses. Representasi lojik berarti bahwa sebuah relasi harus :
tidak terdapat duplikasi baris
urutan baris tidak diperhatikan
setiap kolom dalam suatu relasi mempunyai sebuah nama yang unik
struktur fisik diperlukan selama implementasi fisik yaitu pada saat menentukan layout data & indeks yang digunakan untuk mengakses data dalam suatu relasi. Hal penting lainnya yang harus diperhatikan dalam merancang relasi adalah bahwa nama-nama atribut relasi harus menggambarkan sumber data berasal.
4.5 QUERY LANGUAGE
Query language adalah suatu bahasa yang menyediakan fasilitas bagi user untuk mengakses informasi dari basis data. Pada umumnya level bahasa ini lebih tinggi dari bahasa pemrograman standar. Bahasa query dapat dikategorikan sebagai prosedural & non-prosedural. Dalam bahsa prosedural, user menginstruksikan ke sistem agar membentuk serangkaian operasi dalam basis data untuk mengeluarkan hasil yang diinginkan. Dalam bahasa non-prosedural, user mendeskripsikan informasi yang diinginkan tanpa memberikan prosedur detail untuk menghasilkan informasi tersebut.
Sebagian besar system basis data relasional yang beredar dipasaran menawarkan bahasa query dengan pendekatan prosedural & non-prosedural. Beberapa bahasa query yang murni adalah : aljabar relasional (relational algebra) merupakan bahasa query prosedural, sedangkan kalkulus relasional tuple (tuple relational calculus) & kalkulus relasional domain(domain relational calculus) adalah non-prosedural. Berikut hanya akan dibahas bahasa query bukan bahasa datamanipulation yang lengkap, yaitu bahasa yang tidak hanya terdiri dari bahas query tetapi juga bahasa untuk memodifikasi basis data, seperti perintah insert dan delete tuple.
4.5.1 Aljabar Relasional ( Relational Algebra)
Aljabar relasional adalah sebuah bahasa query prosedural yang terdiri dari sekumpulan operasi dimana masukkannya adalah satu atau dua relasi dan keluarannya adalah sebuah relasi baru sebagai hasil dari operasi tersebut. Operasi-operasi dasar dalam aljabar relasional adalah : select, project, union, set difference, Cartesian product dan rename. Disamping operasi-operasi dasar terdapat beberapa operasi lainnya seperti set intersection, natural join, division dan assignment. Operasi-operasi ini akan didefinisikan dalam terminology operasi dasar.
BAB 5
STRUCTURED QUERY LANGUAGE (SQL)
Sistem basis data komersial menghendaki adanya sebuah bahasa query yang lebih user-friendly. Oleh karena itu dikenal SQL sebagai bahasa query yang marketable. SQL menggunakan kombinasi aljabar relasional & kalkulus relasional. Meskipun SQL adalah bahasa query, namun SQL mempunyai banyak kemampuan lain disamping melakukan query terhadap basis data. SQL mempunyai kemampuan untuk mendefinisikan struktur data, modifikasi data dalam basis data dan menentukan konstrain sekuriti.
5.1 LATAR BELAKANG
SQL merupakan bahasa basis data relasional standard. Terdapat macam-macam versi SQL. Versi aslinya pertama kali dikembangkan oleh IBM San Jose Research Laboratory.
Bahasa SQL mempunyai bebrapa bagian yaitu :
Data Definition Language (DDL)
DDL memberikan perintah untuk mendefinisikan skema relasi, penghapusan relasi, membuat indeks dan modifikasi skema relasi.
Interactive Data-Manipulation Language (DML)
DML merupakan bahasa query yang berdasarkan pada aljabar relasi dan kalkulus relasi tuple. Termasuk didalamnya adalah perintah untuk penyisipan, penghapusan dan modifikasi.
Embedded DML
Bentuk embedded SQL biasanya terdapat dalam bahasa pemrograman multi guna seperti PL/I, Cobol , Pascal dan Fortran.
View Definition
DDL SQL memasukkan perintah untuk mendefinisikan view.
Authorization
DDL SQL memasukkan perintah untuk menentukan hak-hak akses ke relasi dan view.
Integrity
DDL SQL memasukkan perintah untuk menentukan konstrain integritas yang harus dipenuhi oleh data yang tersimpan dalam basis data.
Transaction control
SQL memasukkan perintah-perintah untuk menentukan awal dan akhir transaksi. Beberapa implementasi juga memungkinkan locking data untuk concurrency control.
5.2 STRUKTUR DASAR
Struktur dasar dari ekspresi SQL terdiri dari tiga klausa yaitu : select, from dan where.
Klausa Select berhubungan dengan operasi proyeksi dari aljabar relasional. Operasi ini digunakan untuk mendaftar semua atribut yang diinginkan sebagai hasil suatu query.
Klausa From berhubungan dengan operasi Cartesian-product dari aljabar relasional. Operasi ini mencatat semua relasi yang di”scan” dalam evaluasi suatu query.
Klausa Where berhubungan dengan operasi predikat seleksi dari aljabar relasional. Operasi ini terdiri dari sebuah predikat yang menyangkut atributatribut dari relasi yang muncul dalam klausa from.
Sebuah query SQL biasanya mempunyai bentuk :
Select A1,A2,…..An
From r1,r2,….rn
Where P
5.2.1 Klausa Select
Contoh : “ Tentukan nama-nama dari semua cabang bank dalam relasi loan “
Query-nya :
select branch-name from loan
Hasil dari query tersebut adalah sebuah relasi yang berisi sebuah atribut tunggal dengan nama branch-name. Bahasa query formal bersifat matematis dimana relasi adalah sebuah himpunan sehingga tuple-tuple yang telah muncul tidak akan muncul lagi (tidak akan terjadi duplikasi tuple). Tapi dalam prakteknya untuk menghilangkan duplikasi tuple sangat memakan waktu. Oleh karenanya SQL memungkinkan terjadinya duplikasi tersebut. Dari contoh di atas, maka query-nya akan mencatat setiap branch-name setiap kali branch-name tersebut ditemukan dalam relasi loan.
Untuk kasus di atas jika diinginkan untuk menghilangkan duplikasi maka dapat disisipkan distinct setelah select. Query di atas ditulis ulang sebagai berikut :
Select distinct branch-name from loan
Jika tuple yang terduplikasi diinginkan hilang.
Klausa selest dapat juga mengandung operasi aritmatika yaitu operator : +, -, *, / dan operasi terhadap konstanta atau atribut dari tuple. Contoh query berikut :
Select branch-name, loan-number, amount * 100
From loan
Akan menghasilkan sebuah relasi yang sama dengan relasi loan, kecuali bahwa atribut amount dikalikan dengan 100. SQL-92 juga menyediakan tipe data spesial seperti tipe date, dan memungkinkan beberapa fungsi aritmatika untuk beroperasi pada tipe-tipe ini.
5.2.2 Klausa Where
Contoh query : “Temukan semua loan number untuk pinjaman-pinjaman yang dibuat pada cabang Perryridge dengan jumlah lebih besar dari $1200”.
Query-nya ditulis sebagai berikut :
Select loan-number
From loan
Where branch-name = “Perryridge” and amount >1200
SQL menggunakan konektivitas lojik and, or dan not dalam klausa where. SQL juga memasukkan perintah between untuk menentukan apakah suatu nilai lebih kecil daripada atau sama dengan suatu nilai lain dan lebih besar daripada atau sama dengan suatu nilai lain.
Contoh : jika diinginkan menemukan loan-number yang jumlah pinjamannya antara $90000 dan $100000, ditulis sebagai berikut :
Select loan-number
From loan
Where amount between 90000 and 100000
4.2.3 Klausa From
Contoh query : “Untuk semua customer yang mempunyai sebuah pinjaman dari bank, temukan nama dan loan number mereka”.
Dalam SQL ditulis :
Select distinct customer-name, borrower.loan-number
From borrower, loan
Where borrower.loan-number = loan.loan.number
5.2.4 Operasi Rename
SQL menyediakan mekanisme operasi rename untuk relasi dan atribut. Operasi rename dalam SQL menggunakan klausa as dengan bentuk :
Nama-lama as nama-baru
Contoh : Jika atribut dengan nama loan-number akan diganti dengan nama loan-id, dapat ditulis sebagai berikut :
Select distinct customer-name, borrower.loan-number as loan-id
From borrower,loan
Where borrower.loan-number = loan.loan-number andbranch-name = “Perryridge”
5.3 OPERASI HIMPUNAN
Operasi operasi himpunan pada SQL-92 meliputi : union, intersect, dan except. Union identik dengan ∪, intersect identik dengan ∩dan except identik dengan – pada aljabar relasional.
5.3.1 Operasi Union
Contoh : Untuk mendapatkan semua customer yang mempunyai pinjaman, rekening atau keduannya pada bank ditulis :
(select customer-name from depositor)
union
(select customer-name from borrower)
Operasi union secara otomatis akan menghilangkan duplikasi, tidak seperti klausa select. Sehingga pada query di atas, jika Jones (seorang customer) mempunyai beberapa rekening atau pinjaman (atau keduannya) pada bank, maka Jones hanya akan muncul sekali. Jika duplikasi diinginkan ada maka harus ditulis union all.
5.3.2 Operasi Intersect
Contoh : untuk mendapatkan semua customer yang memiliki pinjaman dan rekening pada bank, query-nya ditulis :
(select distinct customer-name from depositor)
intersect
(select distinct customer-name from borrower)
Operasi intersect secara otomatis menghilangkan duplikasi. Jika diinginkan duplikasi tetap ada ditulis intersect all.
5.3.3 Operasi Except
Contoh : untuk mendapatkan semua customer yang mempunyai sebuah rekening tetapi tidak memiliki pinjaman pada bank, ditulis :
(select distinct customer-name from depositor)
except
(select customer-name from borrower)
Operasi except secara otomatis menghilangkan duplikasi. Jika diinginkan ada maka ditulis : except all.
5.4 FUNGSI-FUNGSI AGREGASI
Yang termasuk fungsi-fungsi agregasi adalah :
- Average : avg
- Minimum : min
- Maximum : max
- Total : sum
- Count : count
Fungsi-fungsi di atas telah tersedia. Input untuk avg dan sum haruslah bertipe numerik. Untuk operator lainnya dapat non-numerik.
Contoh : untuk mendapatkan rata-rata saldo rekening pada cabang Perryridge Query-nya dapat ditulis :
Select avg(balance)
From account
where branch-name = “Perryridge”
Jika fungsi agregasi iningn diterapkan pada kelompok himpunan tuple, maka digunakan klausa group by. Nama atribut/kel. Atribut dalam klausa group by digunakan untuk membentuk grup/kelompok. Artinya tuple-tuple yang mempunyai nilai yang sama pada semua atribut dalam klausa group-by dimasukkan dalam satu grup/kelompok.
Contoh :
Select branch-name, avg(balance)
From account
Group by branch-name
Jika suatu fungsi diterapkan pada grup/kelompok yang dibentuk oleh group by maka digunakan klausa having setelah group by.
Contoh : ingin ditampilkan nama cabang yang mempunyai rata-rata saldo lebih dari 1200.
Query-nya :
Select branch-name, avg(balance)
From account
Group by branch-name having avg (balance)>1200
Fungsi agregrasi count sering digunakan untuk menghitung jumlah tuple dalam suatu relasi. Notasi fungsi ini dalam SQL adalah count (*). Jadi untuk menentukan jumlah tuple dalam relasi customer, ditulis :
Select count(*) from customer
5.5 SUBQUERI TERSARANG (NESTED SUBQUERYS)
Biasanya digunakan untuk melalukuan test keanggotaan himpunan, perbandingan himpunan dan kardinalitas himpunan.
5.5.1 Keanggotaan Himpunan
Digunakan in dan not in untuk melakukan test keanggotaan himpunan.
Contoh : untuk mendapatkan semua customer yang mempunyai pinjaman dan rekening pada bank.
Pertama : menemukan semua pemegang reeking dengan query :
(select customer-name from depositor)
Kedua : mencari semua customer yang merupakan peminjam dan yang muncul dalam daftar pemegang rekening. Maka dilakukan dengan “menyarangkan” subquery di atas dalam sebuah select luar (outer select), menjadi :
Select distinct customer-name
from borrower
Where customer-name
in (select customer-name from depositor)
5.5.2 Perbandingan Himpunan
Perhatikan query berikut : “Temukan semua nama cabang bank yang mempunyai asset lebih besar dari bank-bank yang mempunyai minimal satu cabang berlokasi di Brooklyn”.
Query-nya ditulis :
Select branch-name from branch where assets > all
(select assets from branch where branch-city = “Brooklyn”)
5.6 MODIFIKASI BASIS DATA
Meliputi menambah, menghapus dan mengubah informasi menggunakan SQL.
5.6.1 Penghapusan (Deletion)
Yang dapat dihapus (delete) hanyalah tuple bukan nilai pada suatu atribut tertentu.
Dalam SQL, deletion diekspresikan dengan
Delete from r where p
Dimana p menunjukkan predikat dan r adalah relasi.
Contoh :
- Hapus semua rekening Smith, ditulis :
Delete from depositor where costomer-name = “Smith”
- Hapus semua pinjaman dengan jumlah pinjaman antara $1300 dan $1500
Delete from loan where amount between 1300 and 1500
- Hapus semua rekening pada setiap cabang yang berlokasi di Perryridge
Delete from account where branch-name in
(select branch-name
from branch where branch-city = “Perryridge”)
5.6.2 Penyisipan (Insertion)
Untuk menambahkan satu tuple dalam relasi digunakan statement insert. Contoh :
Insert into account values (“Perryridge”,”A-9732”,1200)
Query ini identik dengan
Insert into account (branch-name, account-number,balance)
Values (“Perryridge”,”A-9732”,1200)
Insert juga dapat dilakukan untuk suatu hasil dari query yang lain.
Contoh :
Insert into account select branch-name, loan-number, 200
From loan where branch-name = “Perryridge”
5.6.3 Update
Dalam situasi tertentu, diinginkan untuk mengganti nilai dalam sebuah tuple tanpa harus mengganti semua nilai dalam tuple tersebut. Untuk tujuan ini dapat digunakan statement update.
Contoh :
- untuk menaikkan saldo para nasabah sebesar 5% ditulis query sebagai berikut :
Update account set balance = balance * 1.05
- untuk menaikkan saldo nasabah sebesar 6% bagi nasabah yang saldonya lebih
dari $10000, ditulis query sebagai berikut :
Update account set balance = balance *1.06
Where balance >10000
5.7 BAHASA DEFINISI DATA ( DATA – DEFINITION LANGUAGE)
DDL SQL memungkinkan dilakukannya spesifikasi tidak hanya pada himpunan relasi tetapi juga informasi untuk setiap relasi, yang meliputi :
Skema setiap relasi
Domain nilai setiap atribut relasi
Konstrain integritas
Himpunan indeks untuk setiap relasi
Sekuriti dan autorisasi setiap relasi
Struktur penyimpanan secara fisik untuk setiap relasi dalam disk.
5.7.1 Tipe-tipe Domain dalam SQL
SQL-92 standar mendukung bermacam-macam tipe domain yang built-in sebagai berikut:
char(n) : tipe karakter dengan panjang yang tetap (n) (fixed-length character)
varchar(n) : tipe karakter dengan panjang bervariasi. Maksimum panjang n.
int : integer
smallint : small integer
numeric (p,d) : p menunjukkan jumlah digit bilangan dan d menunjukkan jumlah digit dibelakang titik desimal.
real, double precision : floating-point dan double-precision floating point
float (n) : floating-point number
date : tipe kalender
time : tipe hari dalam jam,menit dan detik
SQL-92 menggunakan klausa create domain untuk mendefinisikan domain.
Contoh :
create domain person-name char(20)
5.7.2 Definisi Skema dalam SQL
Untuk mendefinisikan sebuah relasi dengan perintah create table :
Create table r(A1D1,A2D2,….AnDn,
……………,
Dimana r adalah nama relasi, setiap AI adalah nama atribut dalam skema relasi, dan DI
adalah tipe domain dari nilai dalam domain atribut Ai. Integrity constraint yang
diperbolehkan antara lain : primary key (Aj1, Aj2,….Ajn) dan check (P)
Contoh :
Create table customer
(customer-name char(20) not null,
customer-street char(30),
customer-city char(30),
primary key (customer-name))
create table branch
(branch-name char(15) not null,
branch-city char(30),
assets integer,
primary key (branch-name), check(assets >=0))
create table account
(account-number char(10) not null,
branch-name char(15),
balance integer, primary key (account-number),
check (balance >=0))
create table depositor
(customer-name char(20) not null,
account-number char(10) not null,
primary key (customer-name, account-number))
DAFTAR PUSTAKA
http://id.wikipedia.org/wiki/Basis_data
http://id.wikipedia.org/wiki/Sistem_manajemen_basis_data
http://id.wikipedia.org/wiki/Sistem_manajemen_basis_data_relasional
http://ilmukomputer.com/category/database/
http://zaki.web.ugm.ac.id/web/mod.php?mod=download&op=viewlink&cid=66