• Tidak ada hasil yang ditemukan

BAB IV Konsep Model Relasional

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB IV Konsep Model Relasional"

Copied!
29
0
0

Teks penuh

(1)

Basis Data – Darmawan Satyananda 45

BAB IV

MODEL RELASIONAL

Model E-R yang dibahas pada bab III adalah model konseptual, yang lebih disukai untuk melakukan perancangan basis data. Model E-R lebih menekankan kepada pembentukan entitas yang mewakili data dan hubungan antar entitas, serta visualisasinya menggunakan diagram E-R.

Model yang akan dibahas adalah model Relasional yang merupakan model lojik, yang lebih dekat hubungannya dengan implementasi fisik (bagaimana data disimpan dalam basis data). Model Relasional dikembangkan oleh E. F. Codd pada 1970. Sampai saat ini model relasional merupakan model yang paling banyak digunakan dalam berbagai aplikasi basis data mulai dari aplikasi di PC sampai mainframe.

Walaupun kemunculannya lebih awal dari model E-R, saat ini keduanya saling melengkapi untuk bisa menghasilkan rancangan basis data relasional yang tepat. Dalam pengembangan sistem basis data, setelah tahapan pemodelan data dengan model E-R adalah perancangan basis data secara lojik dengan model Relasional. Yang dilakukan adalah mentransformasi model E-R menjadi model data Relasional. Selain itu kita bisa menguji rancangan basis data dengan menggunakan DML yang tersedia dan mendapatkan rancangan yang lebih baik melalui proses Normalisasi.

4.1. Konsep Model Relasional

Pada model E-R, basis data dinyatakan sebagai sekumpulan himpunan entitas yang saling berelasi. Dalam model relasional, basis data direpresentasikan sebagai kumpulan relasi-relasi. Relasi (relation) adalah tabel dua dimensi dengan nama yang unik yang terdiri dari sejumlah baris dan kolom (hati-hati, konsep relation pada model Relasional berbeda dengan relationship pada model E-R). Relasi merupakan sekelompok entitas yang saling berkaitan (dengan kata lain, relasi menyatakan himpunan entitas). Baris menyatakan fakta yang terkait dengan entitas atau relationship tertentu, sedangkan kolom menyatakan atribut dari fakta yang disimpan. Nama tabel dan nama kolom membantu dalam mengartikan nilai yang ada pada setiap baris. Keterhubungan antar satu tabel dengan yang lain dinyatakan dengan penggunaan atribut yang bernilai sama dengan atribut sejenis di tabel lain. Pada beberapa buku teks basis data, relasi lebih dikenal dengan tabel (table).

Gambar 4.1 menunjukkan contoh tabel dengan nama MATAKULIAH. Setiap baris dalam tabel MATAKULIAH memberikan informasi tentang entitas mata kuliah tertentu. Nama kolom (Kode_MK, Nama_MK, SKS, JS, Prasyarat) digunakan untuk menginterpretasikan nilai data pada setiap baris, berdasar kolom tempat nilai tersebut

(2)

berada. Nilai dalam satu kolom memiliki tipe data dan domain yang sama. Struktur relasi MATAKULIAH bisa dinyatakan dengan MATAKULIAH(Kode_MK, Nama_MK, SKS, JS, Prasyarat). Relasi MATAKULIAH terhubung dengan relasi MATAKULIAH (rekursif) melalui kolom Prasyarat. Nilai kolom itu akan mengacu ke salah satu nilai yang ada di kolom Kode_MK.

atribut

MATAKULIAH Kode_MK Nama_MK SKS JS Semester Prasyarat

MAU401 Kalkulus I 3 4 1 Null

MAU402 Kalkulus II 3 4 2 MAU401

MAU485 Fisika Dasar 3 4 1 Null

MAU487 Kimia Dasar 2 4 1 null

MAU423 Metode Numerik 3 4 5 MAU402

Gambar 4.1. Contoh tabel MATAKULIAH

4.1.1. Domain, Tupel, Atribut, dan Relasi

Dalam pengertian basis data relasional, baris tabel disebut sebagai tupel (tuple), nama kolom disebut sebagai atribut, dan tabel disebut sebagai relasi (relation). Tabel pada Gambar 4.1 merupakan contoh sebuah relasi dengan 6 buah atribut yaitu Kode_MK, Nama_MK, SKS, JS, Semester, dan Prasyarat.

Domain adalah himpunan nilai yang diperbolehkan muncul dalam setiap kolomnya. Setiap domain memiliki deskripsi, tipe data dan format data tertentu. Nilai setiap atribut dalam tabel harus berada dalam domain tertentu. Contoh deskripsi, tipe data, dan format data untuk beberapa domain ada pada Tabel 4.1.

Tabel 4.1 Contoh deskripsi domain data

Nama domain Deskripsi Tipe data Format data

No_Telp_Lokai Himpunan nomor telepon lokal yang valid pada suatu daerah

11 karakter (dddd) dd-dddd

[d menyatakan digit angka dan 4 digit pertama menyatakan kode wilayah] Kode_MataKuliah Himpunan kode

matakuliah yang valid pada suatu jurusan perguruan tinggi

6 karakter CCC ddd

[C menyatakan alfabet dan d menyatakan digit angka] SKS_Matakuliah Himpunan nilai yang

mungkin untuk menyatakan SKS

1 digit integer [0..4]

(nilai yang sah untuk SKS bernilai dari 0 sampai 4) Skema relasi R, yang dinyatakan oleh R(A1, A2, ...., An), adalah himpunan atribut-atribut R={A1, A2, ..., An}. Skema relasi digunakan untuk menjelaskan struktur suatu relasi. R adalah nama relasi dan A adalah atribut relasi. Skema relasi dari tabel pada Gambar 4.1 bisa dituliskan sebagai:

(3)

Basis Data – Darmawan Satyananda 47 MATAKULIAH(Kode_MK, Nama_MK, SKS, JS, Semester, Prasyarat)

Skema relasi tersebut bernama MATAKULIAH dengan 6 atribut. Domain dari Ai dilambangkan dengan dom(Ai). Beberapa domain yang sesuai untuk relasi MATAKULIAH antara lain:

· dom(Kode_MK) = Kode_MataKuliah · dom(Prasyarat) = Kode_Matakuliah · dom(SKS) = SKS_Matakuliah

Derajat relasi adalah banyaknya atribut pada skema relasi. Jadi relasi MATAKULIAH memiliki derajat relasi 6.

Relasi r dari skema relasi R(A1, A2, ...., An) yang dilambangkan r(R), adalah himpunan n-tupel r = {t1, t2, ..., tm}. Setiap n-tupel t adalah daftar berurut (ordered list) dari n nilai t = <v1, v2, ..., vn>, di mana setiap nilai vi, 1<i<n, adalah elemen dari dom(Ai) atau null. Skema R disebut juga sebagai intension dan relasi r(R) disebut

extension.

Seperti halnya pada model E-R, skema R relatif jarang berubah, selama tidak dilakukan penambahan atau pengurangan atribut. Instance relasi lebih sering berubah seiring dengan perubahan pada dunia nyata yang direfleksikan oleh instance tersebut.

4.1.2. Karakteristik Relasi

Tidak semua tabel adalah relasi. Beberapa karakter relasi yang membedakannya dengan tabel non relasional adalah sebagai berikut:

1. Setiap relasi dalam basis data mempunyai nama yang unik.

2. Setiap tupel dalam relasi adalah unik, sehingga tidak mungkin ada dua tupel yang identik. Hal ini sesuai dengan sifat himpunan yang tidak memperbolehkan lebih dari satu anggota yang bernilai sama. Untuk membedakan satu tupel dengan tupel lain dalam suatu relasi, maka disyaratkan setiap relasi memiliki kunci primer. Kunci primer adalah atribut atau kombinasi atribut yang secara unik membedakan tupel-tupel dalam relasi.

3. Urutan tupel dalam relasi tidak dipentingkan. Pengubahan urutan tupel tidak akan mengubah semantik relasi. Hal ini juga sesuai dengan sifat himpunan yang tidak membedakan urutan anggotanya.

4. Setiap atribut dalam relasi selalu mempunyai nama yang unik

5. Setiap nilai atribut adalah atomik dan relasi tidak memperbolehkan atribut komposit dan yang bernilai banyak. Atribut bernilai banyak harus disajikan dalam relasi yang terpisah, dan atribut komposit disajikan dalam bentuk atribut komponen sederhana. 6. Urutan atribut dalam relasi tidaklah penting. Pengubahan urutan atribut tidak akan

(4)

(<atribut>, <nilai>), di mana setiap pasangan memberikan nilai dari pemetaan ari satu atribut Ai ke nilai vi dari dom(Ai). Urutan atribut tidak terlalu penting karena nama atribut ditulis dengan nilainya, sehingga 2 buah tupel akan identik selama banyaknya atribut dan nilainya sama walaupun dengan urutan yang berbeda.

4.1.3. Atribut Kunci pada Relasi

Sebuah relasi adalah himpunan tupel-tupel. Sesuai dengan sifat himpunan, maka semua tupel dalam relasi juga tidak ada yang sama. Juga karena tupel adalah himpunan atribut-atribut maka semua atribut dalam tupel juga berbeda. Dengan demikian tidak ada dua atau lebih tupel yang mempunyai kombinasi nilai yang sama untuk setiap atributnya. Secara umum, dalam setiap skema relasi R terdapat subset atribut-atribut dengan sifat bahwa tidak ada dua tupel dalam sembarang instance relasi r di R yang mempunyai kombinasi nilai yang sama untuk atribut-atribut ini. Bila subset tersebut dilambangkan dengan SK, maka untuk sembarang dua tupel t1 dan t2 yang berbeda dari instance relasi r di R dipunyai: t1[SK] ¹ t2[SK].

Kunci super (superkey) skema relasi R adalah himpunan satu atau lebih atribut yang dapat digunakan untuk mengenali secara unik sebuah tupel dalam suatu relasi atau sebagai pembeda antara satu tupel dengan tupel lain. Kunci super memberikan batasan keunikan (unique constraints) bahwa tidak ada dua atau lebih tupel berbeda dengan nilai kunci super yang sama. Setiap relasi paling tidak mempunyai satu kunci super, yaitu himpunan semua atributnya. Pada skema MATAKULIAH, {Kode_MK} adalah kunci super karena tidak ada matakuliah yang mempunyai kode yang sama. Gabungan beberapa atribut yang salah satunya kunci super juga dapat disebut sebagai kunci super suatu relasi, seperti {Kode_MK, SKS, Prasyarat}.

Sebuah kunci (key) K dari skema relasi R adalah kunci super di R dengan ketentuan tambahan bahwa penghilangan sembarang atribut A dari K akan menghasilkan suatu himpunan atribut K' yang bukan kunci super di R. Jadi sebuah kunci adalah satu kunci super minimal, yaitu kunci super yang tidak dapat dihilangkan atributnya. {Kode_MK} selain sebagai kunci super juga bertindak sebagai kunci karena atribut tersebut tidak dapat dihilangkan. Atribut Kode_MK dalam {Kode_MK, SKS, Prasyarat} adalah kunci karena bila Kode_MK dihilangkan akan menyisakan {SKS, Prasyarat} yang bukan merupakan kunci super. Himpunan {Kode_MK, SKS, Prasyarat} sendiri bukanlah kunci dari MATAKULIAH karena penghilangan SKS atau Prasyarat, atau keduanya dari himpunan akan masih menyisakan kunci super yaitu Kode_MK. Untuk mudahnya, pengertian kunci bisa disamakan dengan kunci super, yaitu atribut yang bisa secara unik mengidentifikasi tupel dalam suatu relasi.

(5)

Basis Data – Darmawan Satyananda 49 kunci tersebut disebut sebagai kunci kandidat (candidate key). Contohnya adalah relasi MOBIL yang bisa mempunyai dua kunci yaitu NoPolisi dan NoMesin. Salah satu kunci tersebut dijadikan kunci primer (primary key), yaitu kunci yang digunakan untuk mengidentifikasi tupel dalam relasi. Kunci komposit (composite key) adalah kunci primer yang terdiri dari lebih dari satu atribut. Dalam pemilihan kunci primer dari sejumlah kunci kandidat sebaiknya dipilih kunci yang hanya mempunyai satu atau sesedikit mungkin atribut.

Dalam sebuah skema relasi harus ada himpunan atribut yang menjadi kunci untuk mengidentifikasi setiap tupel dalam relasi. Penentuan atribut yang menjadi kunci didasarkan pada makna atribut tersebut dalam skema, nilai atribut yang harus unik dan atribut harus tetap menjadi kunci apabila terdapat penambahan tupel baru (nilai atribut kunci pada tupel baru tidak boleh sama dengan atribut kunci yang lama).

Bila pada model E-R keterhubungan antara himpunan entitas dinyatakan dengan relationship, maka dalam model Relasional keterhubungan dinyatakan dengan penggunaan kunci tamu (foreign key). Kunci tamu adalah atribut yang ditambahkan pada suatu relasi, yang nilainya sesuai dengan kunci primer pada relasi lain yang berhubungan. Lebih lanjut tentang bagaimana menambahkan kunci tamu akan dibahas pada sub bab 4.2.2 tentang pengubahan diagram E-R menjadi skema Relasional.

4.2. Basis Data Relasional

Basis data relasional terdiri dari banyak relasi, dengan tupel-tupel di dalam relasi terhubung bersama dalam berbagai cara. Dalam bagian ini akan dibahas mengenai Basis data relasional, skema basis data relasional, dan aturan yang ada di dalamnya.

4.2.1. Skema dan Instance Basis Data Relasional

Skema basis data relasional S adalah himpunan skema relasi S = {R1, R2, ..., Rm} dan himpunan aturan integritas (Integrity Constraint) IC. Aturan integritas diterapkan untuk menjamin bahwa data yang disimpan akan tetap bernilai benar (aturan integritas akan dijelaskan pada sub bab 4.2.4). Instance atau state basis data relasional DB dari

skema S adalah himpunan instance relasi DB = {r1, r2, ..., rm}. Setiap ri adalah sebuah instance dari Ri dan ri memenuhi aturan integritas yang ditentukan oleh IC.

4.2.2. Pengubahan Skema E-R Menjadi Skema Relasional

Seperti yang telah disebutkan di awal bab, model Relasional bisa disusun dari model E-R. Untuk mengubah skema E-R (dalam bentuk diagram E-R) menjadi skema Relasional atau pemetaan Relasional (relational mapping) dapat dilakukan dalam beberapa tahapan sebagai berikut:

(6)

memuat semua atribut simpel E. Untuk atribut komposit, masukkan atribut komponen simpelnya saja (misal atribut Alamat terdiri dari Jalan, Kota, dan KodePos, maka yang digunakan sebagai atribut relasi baru adalah ketiga atribut simpel ini, bukan Alamat). Gunakan pengenal (identifier) E sebagai kunci primer R. Bila pengenalnya adalah komposit, maka himpunan atribut simpel secara bersama-sama menjadi kunci primer R.

Dari skema E-R basis data PERUSAHAAN pada bab III, buatlah relasi KARYAWAN, DEPARTEMEN, PROYEK sesuai dengan himpunan entitas KARYAWAN, DEPARTEMEN, PROYEK. Pilih atribut NIP dari himpunan entitas KARYAWAN, KodeDepartemen dari DEPARTEMEN, dan KodeProyek dari PROYEK, untuk dijadikan sebagai kunci relasi KARYAWAN, DEPARTEMEN, PROYEK. Atribut yang menjadi kunci tamu belum dimasukkan dulu, akan dilakukan pada tahap berikutnya.

2. Untuk setiap himpunan entitas lemah W dengan himpunan entitas pemilik E dibentuk relasi R yang memuat semua atribut simpel (atau komponen simpel dari atribut komposit) dari W sebagai atribut R. Tambahkan di R atribut baru yang sama dengan kunci primer himpunan entitas pemilik E, sebagai kunci tamu. Kunci primer R adalah kombinasi dari kunci primer himpunan entitas pemilik E dan kunci parsial himpunan entitas lemah W.

Kembali ke contoh, buatlah relasi TANGGUNGAN yang sesuai dengan himpunan entitas lemah TANGGUNGAN. Tambahkan di relasi TANGGUNGAN atribut baru berupa kunci primer KARYAWAN (himpunan entitas pemilik). Atribut baru ini digunakan sebagai kunci tamu, misal diberi nama sebagai NIP_Kar (perubahan nama atribut bukan suatu keharusan). Kunci primer relasi TANGGUNGAN adalah kombinasi {NIP_Kar, NamaTanggungan} karena NamaTanggungan adalah kunci parsial dari TANGGUNGAN.

3. Untuk setiap himpunan relasi biner R 1:1 dalam skema E-R tentukan salah satu relasi yang himpunan entitas asalnya berpartisipasi total di R sebagai relasi S, dan relasi pasangannya sebagai relasi T. Tentukan juga kunci primernya. Masukkan kunci primer T sebagai kunci tamu S. Masukkan semua atribut simpel (atau komponen simpel dari atribut komposit) himpunan relasi R sebagai atribut S.

Pada skema E-R terdapat himpunan relasi 1:1 MEMIMPIN antara himpunan entitas KARYAWAN dan DEPARTEMEN. Pilih DEPARTEMEN sebagai S karena partisipasinya yang total dalam MEMIMPIN. Masukkan kunci primer relasi KARYAWAN sebagai kunci tamu dalam relasi DEPARTEMEN, beri nama NIP_Manajer. Masukkan juga atribut TglMulaiManajer dari himpunan relasi MEMIMPIN ke dalam relasi DEPARTEMEN. Alternatif pemetaan himpunan relasi 1:1 dapat dilakukan dengan menggabungkan dua himpunan entitas dan relasi ke dalam suatu relasi tunggal. Hal ini berguna

(7)

Basis Data – Darmawan Satyananda 51 apabila kedua partisipasinya adalah total dan ada himpunan entitas yang tidak berpartisipasi di himpunan relasi yang lain.

4. Untuk setiap himpunan relasi biner R 1:N, tentukan relasi S sebagai himpunan entitas yang berpartisipasi pada sisi N dan relasi T sebagai yang berpartisipasi pada sisi 1, masing-masing tentukan juga kunci primernya. Kunci tamu relasi S adalah kunci primer relasi T. Hal ini karena setiap entitas di sisi N terhubung ke paling banyak 1 entitas pada himpunan entitas sisi 1. Masukkan sembarang atribut simpel (atau komponen simpel dari atribut komposit) dari himpunan relasi 1:N sebagai atribut S. Sebagai contoh adalah himpinan relasi 1:N MEMPUNYAI dan MENGAWASI. Pada MEMPUNYAI, yang berlaku sebagai S adalah KARYAWAN. Masukkan kunci primer relasi DEPARTEMEN sebagai kunci tamu relasi KARYAWAN, beri nama KodeDep_Kar. Untuk MENGAWASI masukkan kunci primer dari relasi KARYAWAN sebagai kunci tamu relasi KARYAWAN itu sendiri, beri nama NIP_Pengawas. Ubah relasi MENGONTROL dengan cara yang sama.

5. Untuk setiap himpunan relasi biner R M:N, buat sebuah relasi baru S yang menyatakan R. Kunci tamu S adalah kunci primer dari dua relasi yang menyatakan himpunan entitas yang berpartisipasi. Kombinasi kedua kunci ini juga sebagai kunci primer relasi S. Bila ada, masukkan sebarang atribut simpel (atribut penjelas) dari himpunan relasi M:N (atau komponen simpel dari atribut komposit) sebagai atribut S. Seandainya atribut penjelas itu merupakan identifier, maka dalam relasi S juga tetap sebagai kunci.

Kembali ke contoh, himpunan relasi M:N BEKERJA_DI diubah menjadi relasi BEKERJA_DI. Masukkan kunci primer relasi KARYAWAN dan PROYEK sebagai kunci tamu di BEKERJA_DI (misal diberi nama NIP_Kar dan NoProyek_Kar). Masukkan juga atribut penjelas JamKerja pada relasi BEKERJA_DI. Kunci primer dari relasi BEKERJA_DI adalah kombinasi dari atribut kunci tamu {NIP_Kar, NoProyek_Kar}. 6. Untuk setiap atribut bernilai banyak A, buat relasi baru R yang terdiri dari atribut

yang sesuai dengan A dan atribut kunci primer K dari relasi yang mempunyai atribut A. Kunci primer relasi R adalah kombinasi A dan K. Bila atribut bernilai banyak adalah komposit, masukkan komponen simpelnya.

Contoh atribut bernilai banyak adalah atribut LOKASI_DEP pada himpunan entitas DEPARTEMEN. Buat relasi LOKASI_DEP dengan 2 atribut: Lokasi dan KodeDep_Lok. Lokasi adalah atribut bernilai banyak dari relasi DEPARTEMEN, sementara KodeDep_Lok (sebagai kunci tamu) adalah kunci primer relasi DEPARTEMEN. Kunci primer relasi LOKASI_DEP adalah kombinasi dari {KodeDep_Lok, Lokasi}. Dengan demikian setiap lokasi yang dipunyai oleh DEPARTEMEN akan dinyatakan sebagai tupel yang terpisah di LOKASI_DEP.

(8)

7. Untuk himpunan relasi n-ary R, n>2, buatlah relasi baru S yang menyatakan R. Sebagai kunci tamu S adalah kunci primer dari relasi yang sesuai dengan himpunan entitas yang berpartisipasi. Masukkan juga semua atribut simpel himpunan relasi (atau komponen simpel dari atribut komposit) sebagai atribut S. Kunci primer S adalah kombinasi semua kunci tamu. Bila aturan partisipasi (min, max) dari salah satu himpunan entitas E yang berpartisipasi di R mempunyai nilai max=1, maka kunci primer S dapat berupa kunci tamu tunggal yang mengacu ke relasi E. Hal ini karena setiap entitas e di E akan berpartisipasi paling banyak dalam 1 instance relasi R sehingga dapat digunakan sebagai pengenal relasi tersebut.

Sebagai contoh adalah relasi terner MEMASOK pada Gambar 3.11.a. Dari ketiga himpunan relasi yang ada, bentuklah 3 buah relasi PEMASOK (dengan kunci primer Nama_Pemasok), PROYEK (dengan kunci primer Nama_Proyek), dan BARANG (dengan kunci primer Kode_Barang). Untuk himpunan relasi MEMASOK, bentuk relasi MEMASOK dengan atribut Nama_Pemasok, Nama_Proyek, Kode_Barang, Jumlah. Kunci primernya adalah kombinasi {Nama_Pemasok, Nama_Proyek, Kode_Barang}.

Gambar 4.2 menunjukkan skema basis data relasional PERUSAHAAN yang didapat dari diagram E-R pada bab 3, dan Gambar 4.3 menunjukkan instance basis data relasional yang berhubungan dengan skema PERUSAHAAN.

NamaKaryawan NIP TglLahir Alamat JenisKlm Gaji NIP_Pengawas KodeDep_Kar KARYAWAN

NamaDepartemen KodeDepartemen NIP_Manajer TglMulai_Manajer DEPARTEMEN

KodeDep_Lok Lokasi LOKASI_DEP

NamaProyek KodeProyek LokasiProyek KodeDep_Pryk PROYEK

NIP_Kar KodeProyek_Kar JamKerja BEKERJA_DI

NIP_Kar NamaTanggungan JenisKlm TglLahir TANGGUNGAN

Hubungan

(9)

KARYAWAN Karyawan Nama NIP TglLahir Alamat Jenis Klm Gaji Pengawas NIP_ KodeDep_Kar LOKASI_DEP KodeDep_Lok Lokasi Yasin 1234567 09-01-1965 Jl. Jombang 10 Malang L 400000 3334455 5 1 Surabaya Burhan 3334455 08-12-1975 Jl. Gadang 100 Malang L 500000 8886655 5 1 Malang Dewi Nur 9998877 19-07-1974 Jl. Rampal 444 Malang P 350000 9879879 4 4 Malang Wahyu N. 6668844 10-01-1970 Jl. Kediri 1 Malang P 375000 3334455 5 5 Malang Gatot 4534534 24-03-1970 Jl. Mergan 20 Malang L 250000 3334455 5 5 Madiun Rahmat 8886655 20-10-1973 Jl. Jetis 26 Surabaya L 400000 null 1

Nina 9879879 01-11-1974 Jl. Ldg.Sari Malang P 400000 null 2

DEPARTEMEN NamaDepartemen Departemen NIP_Manajer Kode TglMulai_ Manajer PROYEK NamaProyek KodeProyek LokasiProyek KodeDep_Proyek

Riset 5 3334455 20-05-1995 Komputerisasi 1 Jakarta 1

Keuangan 4 4534534 10-11-1996 Produk X 2 Surabaya 5

Teknik 1 8886655 01-01-1998 Produk Y 3 Malang 5

SDM 2 9879879 01-01-1999 Diklat 10 Malang 2

Pengawasan 3

BEKERJA_DI NIP_Kar KodeProyek_Kar JamKerja TANGGUNGAN NIP_Kar NamaTanggungan JenisKlm TglLahir Hubungan

1234567 1 32 1234567 Lia P 10-10-1970 Istri 1234567 2 30 1234567 Desi P 01-02-1990 Anak 6668844 3 40 9998877 Rudy L 04-05-1997 Anak 4534534 1 20 9998877 Hery L 06-07-1995 Anak 4534534 2 20 8886655 Rini P 01-10-1975 Istri 3334455 2 10 8886655 Wahyu L 02-04-1997 Anak 3334455 1 10 3334455 3 10

(10)

4.2.3. Kunci Tamu (Foreign Key)

Pada bagian sebelumnya sudah disinggung konsep kunci tamu (foreign key). Untuk dua skema relasi R1 dan R2, himpunan atribut FK dalam skema R1 adalah kunci tamu R1 bila memenuhi dua aturan berikut:

1. Atribut-atribut di FK mempunyai domain yang sama dengan atribut kunci primer PK dari skema relasi R2. Atribut FK dikatakan mengacu ke relasi R2.

2. Nilai FK dalam tupel t1 pada R1 adalah sebagai nilai PK untuk beberapa tupel t2 di R2 atau FK bisa bernilai null. Dapat dikatakan t1[FK] = t2[PK] dan tupel t1 mengacu ke tupel t2. R1 disebut sebagai relasi yang mengacu dan R2 disebut sebagai relasi yang diacu.

Sebagai contoh adalah Gambar 4.2. Dalam relasi KARYAWAN, atribut KodeDep_Kar mengacu ke departemen tempat karyawan bekerja. KodeDep_Kar adalah kunci tamu dari KARYAWAN yang mengacu kepada relasi DEPARTEMEN. Hal ini berarti bahwa sebuah nilai KodeDep_Kar dalam sembarang tupel t1 pada relasi KARYAWAN harus sesuai dengan nilai kunci primer DEPARTEMEN (atribut KodeDepartemen) dalam beberapa tupel t2 relasi DEPARTEMEN; atau nilai KodeDep_Kar dapat berupa Null yang menyatakan bahwa karyawan tersebut tidak bekerja untuk departemen manapun. Contohnya karyawan yang bernama Burhan yang bekerja pada departemen 5 (dep. Riset).

Sebuah kunci tamu dapat mengacu pada relasi itu sendiri. Contohnya adalah atribut NIP_Pengawas dalam relasi KARYAWAN yang mengacu kepada pengawas karyawan tersebut. Pengawas adalah karyawan yang lain yang dinyatakan oleh tupel dalam relasi KARYAWAN. Jadi NIP_Pengawas adalah kunci tamu yang mengacu kepada relasi KARYAWAN itu sendiri.

4.2.4. Aturan Integritas dalam Skema Basis Data Relasional

Aturan integritas adalah sejumlah aturan yang berlaku terhadap relasi, yang menjamin akurasi dan integritas data dalam basis data. Ada empat aturan integritas dalam skema basis data yang harus diikuti oleh setiap instance basis data untuk skema tersebut. Aturan tersebut adalah:

1. Aturan kunci (key constraints) yang menentukan kunci kandidat dari setiap skema relasi; nilai kunci kandidat harus unik untuk setiap tupel dalam sembarang relasi. 2. Aturan domain (domain constraints) yang menyatakan bahwa nilai atribut semua

tupel pada kolom yang sama harus dari domain yang sama.

3. Aturan integritas entitas (entity integrity constraints) yang menyatakan bahwa nilai atribut yang menjadi kunci primer tidak boleh null. Hal ini dikarenakan nilai kunci primer digunakan untuk mengenali tupel dalam suatu relasi dan juga digunakan oleh

(11)

Basis Data – Darmawan Satyananda 55 kunci tamu untuk melakukan pengacuan.

4. Aturan integritas referensial (referential integrity constraints) adalah aturan yang digunakan untuk menjaga konsistensi di antara tupel-tupel dalam dua relasi yang saling berhubungan. Aturan ini menyatakan bahwa bila nilai kunci tamu pada satu relasi harus sesuai dengan nilai kunci primer pada relasi yang lain yang diacu, atau kunci tamunya bernilai null untuk menunjukkan tidak adanya pengacuan.

Aturan integritas referensial dapat digambar dalam bentuk diagram, dengan menggambar sebuah garis yang menghubungkan setiap kunci tamu dengan atribut relasi yang diacu. Diagram untuk skema basis data PERUSAHAAN dapat dilihat pada gambar 4.4. Gambar 4.5 menunjukkan penggambaran aturan integritas referensial pada Microsoft Access.

NamaKaryawan NIP TglLahir Alamat JenisKlm Gaji NIP_Pengawas KodeDep_Kar

KARYAWAN

NamaDepartemen KodeDepartemen NIP_Manajer TglMulai_Manajer

DEPARTEMEN

KodeDep_Lok Lokasi

LOKASI_DEP

NamaProyek KodeProyek LokasiProyek KodeDep_Pryk

PROYEK

NIP_Kar KodeProyek_Kar JamKerja

BEKERJA_DI

NIP_Kar NamaTanggungan JenisKlm TglLahir

TANGGUNGAN

Hubungan

Gambar 4.4. Aturan integritas referensial untuk skema basis data PERUSAHAAN.

4.3. Operasi Update dalam Relasi

Ada tiga operasi update dasar dalam relasi, yaitu penyisipan (insert), penghapusan (delete) dan modifikasi (modify). Operasi penyisipan digunakan untuk menyisipkan tupel baru dalam sebuah relasi, delete untuk menghapus tupel dan modify untuk merubah nilai beberapa atribut. Bila suatu operasi update dijalankan, maka harus diguji apakah aturan integritas yang ada tidak dilanggar.

(12)

Gambar 4.5. Penggambaran integritas referensial pada Microsoft Access.

4.3.1. Operasi Penyisipan

Untuk operasi penyisipan yang diuji adalah aturan integritasnya. Contoh operasi penyisipan (bandingkan dengan data pada tabel):

1. Insert <'Ali Topan', '6678989', '05-04-60', 'Jl. Pisang 100 Jakarta', L, 300000, null, 4> Penyisipan ini bisa diterima karena memenuhi semua aturan.

2. Insert <'Ali Topan', '9998877', '05-04-60', 'Jl. Pisang 100 Jakarta', L, 300000, null, 4> Penyisipan melanggar aturan kunci karena sudah ada tupel dalam relasi KARYAWAN dengan nilai atribut NIP yang sama.

3. Insert <'Ali Topan', null, '05-04-60', 'Jl. Pisang 100 Jakarta', L, 300000, null, 4> Penyisipan ini melanggan aturan integritas entitas (mempunyai nilai null untuk kunci primer) sehingga tidak bisa diterima.

4. Insert <'Ali Topan', '6678989', '05-04-60', 'Jl. Pisang 100 Jakarta', L, 300000, null, 7> Penyisipan ini melanggar aturan integritas referensial karena tidak ada departemen dengan KodeDep_Kar = 7.

Bila ada pelanggaran, maka DBMS akan menempuh 2 cara: menolak penyisipan (dan menjelaskan alasan penolakan), dan membetulkan kesalahan (DBMS memintas pengguna untuk memasukkan nilai yang betul).

4.3.2. Operasi Penghapusan

Contoh operasi penghapusan:

1. Delete tupel BEKERJA_DI dengan NIP_Kar='1234567' dan KodeProyek_Kar=1 Penghapusan ini bisa diterima.

(13)

Basis Data – Darmawan Satyananda 57 2. Delete tupel KARYAWAN dengan NIP='4534534'

Penghapusan ini tidak bisa diterima karena dua tupel di BEKERJA_DI mengacu pada tupel ini, sehingga bila dihapus akan melanggar aturan integritas referensial.

Penghapusan hanya dapat melanggar aturan integritas referensial, karena dimungkinkan untuk menghapus suatu tupel yang sedang diacu oleh tupel lain. Ada 3 pilihan bila operasi ini melanggar aturan: (1) menolak penghapusan, (2) meneruskan penghapusan dengan menghapus tupel yang sedang mengacu pada tupel yang sedang dihapus (cascading), (3) membetulkan nilai atribut yang menyebabkan kesalahan (dirubah menjadi null atau mengacu pada tupel valid yang lain, kecuali untuk kunci primer karena akan melanggar aturan integritas entitas).

4.3.3. Operasi Modifikasi

Contoh perubahan:

1. Ubah Gaji dari tupel KARYAWAN dengan NIP='9998877' menjadi ‘400000’ Perubahan diterima

2. Ubah KodeDep_Kar dari tupel KARYAWAN dengan NIP '9998877' menjadi ‘7’ Perubahan ditolak karena melanggar integritas referensial

3. Ubah NIP dari tupel KARYAWAN dengan NIP '9998877' menjadi '9879879'

Perubahan ditolak karena melanggar aturan kunci primer dan aturan integritas referensial.

Merubah atribut yang bukan sebagai kunci primer atau kunci tamu tidak menjadi masalah, DBMS hanya perlu mengecek apakah nilainya mempunyai tipe data dan domain yang betul. Karena kunci primer digunakan untuk mengenali tupel, maka bila kunci tamu diubah, DBMS harus yakin apakah nilai yang baru mengacu pada sebuah tupel pada relasi yang diacu.

4.4. Aljabar Relasional

Seperti yang disebutkan di bab III, kelemahan model E-R adalah tidak adanya DML untuk memanipulasi basis data. Model E-R memiliki DML yang dinamakan dengan Aljabar Relasional. Di dalam model E-R, data dimodelkan dalam bentuk relasi yang merupakan himpunan, sehingga operasi aljabar relasional sebenarnya adalah operasi himpunan.

Aljabar relasional adalah bahasa query prosedural yang berbentuk sebagai sekumpulan operasi untuk memanipulasi keseluruhan relasi. Operasi-operasi ini digunakan untuk memilih tupel dalam satu relasi dan mengkombinasikan tupel yang berelasi (berhubungan) dari beberapa relasi untuk keperluan penentuan query tersebut. Hasilnya adalah relasi baru yang dapat dimanipulasi lebih jauh dengan operasi aljabar.

(14)

Aljabar relasional menjadi dasar dari konsep manipulasi data relasional pada bahasa basis data komersial (Hansen, 1992: 212).

Aljabar relasional dapat dibagi menjadi dua kelompok: (1) operasi khusus untuk basis data relasional, yaitu Select, Project, Join, dan Division, dan (2) operasi himpunan dari teori himpunan matematika (setiap relasi didefinisikan sebagai tupel) yaitu Union, Intersection, Difference, dan Cartesian Product.

Semua operasi yang dilakukan berikut mengacu kepada tabel basis data PERUSAHAAN yang diberikan pada Gambar 4.3.

4.4.1. Operasi Select dan Project

Kedua jenis operasi ini sama-sama digunakan untuk mendapatkan sejumlah tupel dari satu atau lebih relasi yang memenuhi kriteria tertentu.

4.4.1.1. Operasi Select

Operasi Select digunakan untuk memilih tupel-tupel dalam relasi yang memenuhi kondisi seleksi tertentu (memenuhi predikat tertentu). Operasi ini dinyatakan dengan:

s

<kondisi seleksi> (<nama relasi>)

Simbol

s

(sigma) melambangkan operator SELECT, <kondisi seleksi> adalah ekspresi Boolean yang dinyatakan dalam atribut relasi. Relasi hasil operasi ini mempunyai atribut yang sama dengan atribut relasi dalam <nama relasi>.

Ekspresi Boolean bisa tersusun dari sejumlah klausa dengan bentuk: <nama atribut> <operator perbandingan> <nilai konstan>, atau <nama atribut> <operator perbandingan> <nama atribut>

<nama atribut> adalah salah satu nama atribut dalam relasi yang disebutkan. <operator perbandingan> bisa berupa {=, <, <, >, >, ¹}, dan <nilai konstan> adalah sebuah nilai konstanta. Ekspresi Boolean ini juga dapat dihubungkan dengan ekspresi Boolean lain dengan operator logika AND, OR, atau NOT.

Sebagai contoh, untuk memilih subhimpunan dari KARYAWAN yang bekerja di departemen 4, operasinya adalah:

s

KodeDep_Kar=4 (KARYAWAN)

Relasi hasil ditunjukkan pada Gambar 4.6 (beberapa atribut tidak dapat dituliskan karena keterbatasan tempat)

NamaKaryawan NIP Tgl Lahir .... NIP_ Pengawas KodeDep_ Kar

Dewi Nur 9998877 19-07-1974 .... 9879879 4

(15)

Basis Data – Darmawan Satyananda 59 Untuk memilih tupel semua karyawan yang bekerja di departemen 4 dan gajinya>350000 atau bekerja di departemen 5 dan gajinya>300000 operasinya adalah:

s

(KodeDep_Kar=4 AND Gaji>350000) OR (KodeDep_Kar=5 AND Gaji>300000) (KARYAWAN)

NamaKaryawan NIP .... Gaji NIP_ Pengawas KodeDep_ Kar

Yasin 1234567 .... 400000 3334455 5

Burhan 3334455 .... 500000 8886655 5

Wahyu N. 6668844 .... 375000 3334455 5

Gambar 4.7. Hasiloperasi

s

(KodeDep_Kar=4 AND Gaji>350000) OR (KodeDep_Kar=5 AND Gaji>300000) (KARYAWAN)

Operator perbandingan hanya berlaku untuk atribut yang domainnya mempunyai nilai terurut, seperti domain tanggal, numerik, dan huruf. Bila domainnya adalah himpunan dari nilai yang tidak terurut, operatornya hanya {=, ¹}, seperti domain dari himpunan warna yang tidak memiliki urutan yang pasti di antara anggotanya.

Operator SELECT adalah uner (unary), hanya bisa diterapkan pada relasi tunggal. Operasi seleksi dikenakan pada setiap tupel secara individual, tidak untuk lebih dari 1 tupel. Derajat relasi yang dihasilkan operasi ini adalah sama dengan relasi asli R yang dikenai operasi, karena jumlah atribut yang sama di antara keduanya. Banyaknya tupel dalam relasi hasil lebih kecil atau sama dengan jumlah tupel dalam relasi asli R. Urutan atribut relasi hasil sama dengan relasi asalnya.

Sifat operasi SELECT adalah komutatif, sehingga:

s

<kondisi1>(

s

<kondisi2>(R)) =

s

<kondisi2>(

s

<kondisi1>(R))

Relasi yang dihasilkan dari operasi tersebut adalah sama. Operasi SELECT yang bertumpuk (cascade) dapat dipecah menjadi beberapa operasi sebagai berikut:

s

<kondisi1>(

s

<kondisi2>(...(

s

<kondisin>(R)))) =

s

<kondisi1>AND <kondisi2>AND ... AND <kondisin>(R)

4.4.1.2. Operasi Project

Bila operasi SELECT memilih beberapa tupel, maka operasi PROJECT akan memilih beberapa atribut (kolom) tertentu. Bentuk umum operasi ini:

p

<daftar atribut>(<nama relasi>)

p

(pi) adalah simbol operasi PROJECT, <daftar atribut> adalah daftar atribut-atribut relasi pada <nama relasi>. Relasi hasil hanya mempunyai atribut seperti yang ditentukan pada <daftar atribut> dengan nama dan urutan yang sama. Derajat relasi hasil sama dengan banyaknya atribut dalam <daftar atribut>.

Sebagai contoh, operasi untuk mencari nama semua karyawan dan gajinya adalah:

(16)

p

NamaKaryawan, Gaji(KARYAWAN) NamaKaryawan Gaji Yasin 400000 Burhan 500000 Dewi Nur 350000 Wahyu N. 375000 Gatot 250000 Rahmat B. 400000 Nina 400000

Gambar 4.8. Hasil operasi

p

NamaKaryawan, Gaji (KARYAWAN)

Bila atribut yang didaftar adalah atribut yang bukan kunci, maka dimungkinkan akan muncul tupel ganda (duplikat) yang identik. Operasi PROJECT akan menghilangkan duplikasi yang ada sehingga hasilnya adalah tupel dan relasi yang valid. Contohnya adalah pada operasi untuk mencari jenis kelamin dan gaji semua karyawan, tupel yang sama akan dihilangkan berikut ini:

p

JenisKlm, Gaji(KARYAWAN)

JenisKlm Gaji L 400000 L 500000 P 350000 P 400000 P 375000 L 250000

Gambar 4.9. Hasil operasi

p

JenisKlm, Gaji (KARYAWAN)

Banyaknya tupel dalam relasi hasil operasi akan lebih kecil atau sama dengan relasi aslinya, kecuali bila hasil proyeksi menyertakan kunci relasi maka jumlah tupel yang dihasilkan akan sama dengan relasi asli.

Perhatikan bahwa:

p

<daftar1>(

p

<daftar2>(R)) =

p

<daftar1>(R)

selama <daftar2> berisi atribut dalam <daftar1>. Bila tidak, maka pernyataan di atas tidak berlaku. Sifat komutatif tidak berlaku dalam operasi ini.

4.4.1.3. Urutan Operasi

Bila beberapa operasi aljabar relasional dilakukan secara sekaligus, operasi tersebut dapat dituliskan dalam 2 cara: (1) sebagai ekspresi aljabar relasional tunggal dengan menyusun operasi-operasi tersebut menjadi satu (nesting), dan (2) menjalankan setiap operasi pada satu waktu dan membuat relasi sementara (relasi antara). Pada cara kedua, dibentuk relasi baru untuk menyimpan hasil operasi secara sementara.

(17)

Basis Data – Darmawan Satyananda 61 Pembentukan relasi baru dilakukan dengan operasi assignment yang menggunakan operator ¬, dan menyebutkan nama relasi baru di sebelah kiri operator ¬.

Misalkan untuk mendapatkan nama dan gaji semua karyawan yang bekerja di departemen 5, operasinya dapat dituliskan dengan cara pertama sebagai:

p

NamaKaryawan, Gaji(

s

KodeDep_Kar=5 (KARYAWAN))

sedangkan dengan cara kedua dibentuk relasi antara, sehingga operasinya menjadi: T1 ¬

s

KodeDep_Kar=5 (KARYAWAN))

HASIL ¬

p

NamaKaryawan, Gaji (T1)

Relasi antara T1 berisi semua karyawan yang bekerja pada departemen 5, sedangkan HASIL berisi proyeksi atribut NAMA dan GAJI dari T1.

4.4.1.4. Penamaan Atribut

Atribut relasi hasil operasi mempunyai nama dan urutan yang sama dengan relasi asli, yang kadangkala kurang informatif, sehingga diperlukan penamaan ulang atribut tersebut. Untuk menamai atribut tersebut dalam relasi, atribut baru dituliskan dalam kurung setelah nama relasinya sebagai berikut:

TEMP ¬

s

KodeDep_Kar=5 (KARYAWAN))

R(Nama_Karyawan, Gaji_Per_Bulan) ¬

p

NamaKaryawan, Gaji(TEMP)

TEMP Karyawan Nama NIP TglLahir .... Pengawas NIP_ KodeDep_Kar Yasin 1234567 09-01-1965 .... 3334455 5 Burhan 3334455 08-12-1975 .... 8886655 5 Wahyu N. 6668844 10-01-1970 .... 3334455 5 Gatot 4534534 24-03-1970 .... 3334455 5 R Nama_Karyawan Gaji_Per_Bulan Yasin 400000 Burhan 500000 Wahyu N. 375000 Gatot 250000

Gambar 4.10. Relasi hasil penamaan

Seperti yang tampak pada gambar, TEMP berisi semua karyawan yang bekerja pada departemen 5. R berisi dua atribut, yang bila tidak dinamai ulang maka namanya sama dengan nama atribut pada relasi asal.

4.4.2. Operasi Himpunan

Karena relasi merupakan himpunan tupel-tupel, maka kepada relasi ini dapat dikenakan operasi himpunan. Ada empat operasi himpunan yang bisa dikenakan yaitu UNION, INTERSECTION, DIFFERENCE, dan CARTESIAN PRODUCT. Semuanya merupakan operasi biner yang dikenakan kepada dua himpunan.

(18)

Terdapat syarat yang harus dipenuhi untuk operasi UNION, INTERSECTION, dan DIFFERENCE yaitu dua relasi yang dikenai operasi harus mempunyai tipe tupel yang sama (union compatibility). Dua buah relasi R(A1, A2, ..., An) dan S(B1, B2, ..., Bn) dikatakan union compatible bila mempunyai derajat yang sama dan dom(Ai)=dom(Bi) untuk 1<i<n (Kedua relasi mempunyai jumlah atribut yang sama dan tiap pasang atribut yang berkorespondensi mempunyai domain yang sama, atau mempunyai aritas yang sama).

Definisi dari masing-masing operasi untuk dua relasi R dan S adalah:

1. UNION: Dilambangkan dengan R È S, hasil dari operasi ini adalah relasi yang mempunyai tupel yang ada di R atau di S atau pada keduanya. Tupel yang ganda (duplikat) dihilangkan.

2. INTERSECTION: Dilambangkan dengan R Ç S, hasil dari operasi ini adalah relasi yang meliputi semua tupel di yang ada di R dan di S.

3. DIFFERENCE: Dilambangkan dengan R ÷ S, hasil dari operasi ini adalah tupel yang hanya ada di R tapi tidak di S.

4. CARTESIAN PRODUCT: Dilambangkan dengan R ´ S (cross), hasil dari operasi ini adalah setiap tupel di R dipasangkan dengan semua tupel di S.

Misalkan untuk mencari NIP semua karyawan yang bekerja di departemen 5 atau mengawasi karyawan yang bekerja di departemen 5, maka operasinya dengan UNION adalah:

KAR_DEP5 ¬

s

KodeDep_Kar=5 (KARYAWAN))

HASIL1 ¬

p

NIP (KAR_DEP5)

HASIL2(NIP) ¬

p

NIP_Pengawas(KAR_DEP5)

HASIL ¬ HASIL1 È HASIL2

Mula-mula dicari semua karyawan yang bekerja pada departemen 5 (relasi KAR_DEP5). Selanjutnya relasi HASIL1 berisi semua karyawan yang bekerja di departemen 5, dan HASIL2 berisi semua NIP pengawas setiap karyawan departemen 5. HASIL berisi gabungan dari HASIL1 dan HASIL2. Tupel yang dihasilkan bisa dilihat pada gambar 4.11.

HASIL1 NIP HASIL2 NIP HASIL NIP

1234567 3334455 3334455

3334455 8886655 8886655

6668844 1234567

4534534 6668844

4534534 Gambar 4.11. Contoh operasi UNION.

Gambar 4.12 menunjukkan contoh lengkap operasi himpunan dan hasilnya. Terdapat dua buah relasi, SIMPAN dan PINJAM yang menyatakan nasabah yang menyimpan dan meminjam uang pada suatu cabang bank.

(19)

Basis Data – Darmawan Satyananda 63

SIMPAN Nama_Nasabah PINJAM Nama_Nasabah

Jeffri Joni Suparman Suparman Heru Heru Tony Junaidi Lina Chandra Gunadi Tony Anton Jeffri Bambang (a)

Nama_Nasabah Nama_Nasabah Nama_Nasabah Nama_Nasabah

Jeffri Jeffri Lina Joni

Suparman Suparman Gunadi Junaidi

Heru Heru Chandra

Tony Tony Anton

Lina Bambang Gunadi Joni Junaidi Chandra Anton Bambang (b)

Gambar 4.12. Operasi himpunan UNION, INTERSECTION, DIFFERENCE. (a) Dua Relasi yang union compatible, (b) SIMPAN È PINJAM, (c) SIMPAN Ç PINJAM, (d) SIMPAN – PINJAM, (e) PINJAM – SIMPAN.

INTERSECTION dapat dinyatakan dengan UNION dan DIFFERENCE, yaitu: R Ç S º (R È S) – ((R – S) È (S – R))

º R – (R – S)

Beberapa sifat yang berlaku bagi operasi himpunan: 1. UNION dan INTERSECTION mempunyai sifat komutatif.

R È S = S È R, dan R Ç S = S Ç R 2. UNION dan INTERSECTION mempunyai sifat asosiatif.

R È (S È T) = (R È S) È T, dan (R Ç S) Ç T = R Ç (S Ç T) 3. UNION dan INTERSECTION dapat diterapkan kepada sebarang jumlah relasi. 4. DIFFERENCE mempunyai sifat tidak komutatif.

R – S ¹ S – R

Operasi CARTESIAN PRODUCT adalah operasi himpunan biner, tetapi relasi yang dikenai operasi ini tidak harus union compatible. Gunanya adalah untuk menggabungkan tupel-tupel dari dua relasi.

Hasil dari relasi R(A1, A2, ..., An) ´ S(B1, B2, ..., Bm) adalah relasi Q dengan n+m

(d) (c)

(20)

atribut, dan dengan urutan atribut Q(A1, A2, ..., An, B1, B2, ..., Bm). Relasi hasil Q mempunyai sebuah tupel untuk setiap kombinasi tupel-tupel, masing-masing sebuah dari R dan sebuah dari S. Bila R mempunyai nR tupel dan S mempunyai nS tupel, maka Q mempunyai nR * nS tupel.

Query untuk mencari nama tanggungan dari karyawan perempuan adalah: KAR_PEREMP ¬

s

JenisKlm=’P’ (KARYAWAN)

NAMA_KAR ¬

p

NamaKaryawan, NIP (KAR_PEREMP)

TANGG_KAR ¬ NAMA_KAR ´ TANGGUNGAN TANGG_SBNRNYA ¬

s

NIP=NIP_Kar (TANGG_KAR)

HASIL ¬

p

NamaKaryawan, NamaTanggungan (TANGG_SBNRNYA)

KAR_ PEREMP Karyawan Nama NIP TglLahir NIP_ Pengawas KodeDep_ Kar Dewi Nur 9998877 19-07-1974 9879879 4

Wahyu N. 6668844 10-01-1970 3334455 5

Nina 9879879 01-11-1974 Null 2

NAMA_KAR NamaKaryawan NIP

Dewi Nur 9998877 Wahyu N. 6668844

Nina 9879879

TANGG_KAR Karyawan Nama NIP NIP_Kar Tanggungan Nama Hubungan Dewi Nur 9998877 1234567 Lia Istri

Dewi Nur 9998877 1234567 Desi Anak Dewi Nur 9998877 9998877 Rudy Anak Dewi Nur 9998877 9998877 Hery Anak Dewi Nur 9998877 8886655 Rini Istri Dewi Nur 9998877 8886655 Wahyu Anak Wahyu N. 6668844 1234567 Lia Istri Wahyu N. 6668844 1234567 Desi Anak Wahyu N. 6668844 9998877 Rudy Anak Wahyu N. 6668844 9998877 Hery Anak Wahyu N. 6668844 8886655 Rini Istri Wahyu N. 6668844 8886655 Wahyu Anak

Nina 9879879 1234567 Lia Istri

Nina 9879879 1234567 Desi Anak

Nina 9879879 9998877 Rudy Anak

Nina 9879879 9998877 Hery Anak

Nina 9879879 8886655 Rini Istri

Nina 9879879 8886655 Wahyu Anak

TANGG_ SBNRNYA

Nama

Karyawan NIP NIP_Kar NamaTanggungan Hubungan

Dewi Nur 999888777 999888777 Rudy Anak Dewi Nur 999888777 999888777 Hery Anak HASIL NamaKaryawan NamaTanggungan

Dewi Nur Rudy Dewi Nur Hery

(21)

Basis Data – Darmawan Satyananda 65 Relasi yang terbentuk dapat dilihat pada Gambar 4.13. Pertama kali, dicari semua karyawan perempuan (karyawan yang atribut JenisKlm bernilai “P”), lihat pada KAR_PEREMP. Karena atribut lain tidak diperlukan, maka hanya diambil atribut NamaKaryawan dan NIP pada relasi NAMA_KAR. Selanjutnya dengan operasi Cartesian Product, setiap karyawan perempuan dipasangkan dengan semua tanggungan, hasilnya bisa dilihat pada TANGG_KAR. Berikutnya harus dicari semua tanggungan yang nilai kunci tamu NIP_Kar sama dengan NIP, yang menunjukkan karyawan penanggung sebenarnya (lihat pada TANGG_SBNRNYA). Akhirnya ditampilkan nama karyawan dan nama tanggungannya pada relasi HASIL.

4.4.3. Operasi JOIN

Umumnya operasi CARTESIAN PRODUCT tidak digunakan sendiri, tapi digabungkan dengan operasi SELECT atau PROJECT. Gabungan operasi SELECT atau PROJECT dan CARTESIAN PRODUCT adalah operasi JOIN. Operasi ini dilambangkan dengan ⋈, yang menggabungkan tupel-tupel dari dua relasi yang saling berhubungan menjadi sebuah tupel tunggal. Operasi ini sangat penting untuk basis data relasional yang mempunyai lebih dari sebuah relasi. Bentuk umum operasi JOIN untuk dua relasi R(A1, A2, ..., An) dan S(B1, B2, ..., Bm) adalah:

R <kondisi join> S

Hasil dari operasi ini adalah relasi Q dengan n+m atribut, dan dengan urutan atribut Q(A1, A2, ..., An, B1, B2, ..., Bm). Q mempunyai satu tupel untuk setiap kombinasi tupel-tupel, satu dari R dan satu dari S, apabila memenuhi kondisi join yang disebutkan. Atribut yang dievaluasi disebut sebagai atribut join. Adanya kondisi join inilah yang membedakan dengan operasi CARTESIAN PRODUCT. Dalam JOIN hasil operasi yang ditampilkan adalah hanya tupel yang memenuhi kondisi join yang ditentukan, sedangkan dalam CARTESIAN PRODUCT semua kombinasi tupel dimunculkan sebagai hasil. Apabila tidak ada kombinasi tupel-tupel yang memenuhi kondisi join, maka hasil JOIN adalah relasi kosong (tanpa tupel). Bila R mempunyai nR tupel dan S mempunyai nS tupel maka tupel yang dihasilkan dari operasi JOIN adalah antara nol dan nR*nS tupel.

JOIN umumnya dilakukan untuk mendapatkan data dari relasi lain, misalkan mencari nama manajer setiap departemen. Karena data tentang nama manajer ada di relasi KARYAWAN, sedangkan relasi DEPARTEMEN hanya menyimpan NIP karyawan yang menjadi manajer maka keduanya dijoinkan. Perintah untuk masalah tersebut adalah sebagai berikut:

DEP_MNJR ¬ DEPARTEMEN NIP_Manajer=NIP KARYAWAN

HASIL ¬

p

NamaDepartemen, NamaKaryawan(DEP_MNJR)

(22)

DEP_MNJR Departemen Nama Departemen NIP_Manajer .... Kode Karyawan Nama NIP ....

Riset 5 3334455 .... Burhan 3334455 ....

Keuangan 4 4534534 .... Gatot 4534534 ....

Teknik 1 8886655 .... Rahmat B. 8886655 ....

SDM 2 9879879 .... Nina 9879879 ....

Gambar 4.14. Contoh hasil operasi JOIN.

Mula-mula dicari nama manajer dengan cara JOIN relasi DEPARTEMEN dan KARYAWAN dengan kondisi kunci tamu NIP_MNJR pada DEPARTEMEN harus sama dengan atribut NIP pada KARYAWAN. Karena hanya ada 4 manajer, maka relasi DEP_MNJR hanya mempunyai 4 tupel. Selanjutnya DEP_MNJR dikenai PROJECT untuk menampilkan nama departemen dan nama manajernya. Departemen ”Pengawasan” tidak diikutkan dalam hasil karena NIP pengawasnya tidak ada.

Operasi JOIN dapat dinyatakan sebagai CARTESIAN PRODUCT yang diikuti dengan SELECT:

R <kondisi> S º

s

<kondisi> (R ´ S)

Operasi untuk tabel pada Gambar 4.14 di atas dapat ditulis menjadi: DEP_MNJR ¬

s

NIP_Manajer=NIP (DEPARTEMEN ´ KARYAWAN)

Kondisi join bisa beberapa, dengan dihubungkan operator AND atau OR: <kondisi> AND <kondisi> AND ... AND <kondisi>

<kondisi> berupa Ai q Bj, Ai adalah atribut R, Bj adalah atribut S (keduanya mempunyai domain yang sama), dan q adalah operator perbandingan (<, £, >, ³, =,¹). Operasi JOIN dengan yang melibatkan kondisi join disebut juga dengan THETA JOIN. Tupel yang atribut joinnya bernilai null tidak ditampilkan.

JOIN yang operator perbandingannya hanya ‘=’ disebut sebagai EQUIJOIN (contoh JOIN pada gambar 4.14 adalah EQUIJOIN). Hasil dari EQUIJOIN selalu mempunyai 1 atau lebih pasangan atribut yang nilainya identik di dalam setiap tupelnya. Untuk menghindari hal tersebut maka dapat digunakan operasi NATURAL JOIN, yang akan menghapus atribut kedua yang sama. Operasi NATURAL JOIN dinyatakan dengan *, dan merupakan EQUIJOIN yang ditambah dengan penghilangan atribut join lain yang sama dengan atribut join pertama (hanya atribut join pertama yang digunakan di relasi hasil).

Bentuk umum NATURAL JOIN adalah:

Q ¬ R *(<daftar 1>), (<daftar 2>) S

<daftar 1> adalah daftar atribut dari R dan <daftar 2> adalah daftar atribut-atribut dari S. NATURAL JOIN dapat ditulis sebagai operasi CARTESIAN PRODUCT yang

(23)

Basis Data – Darmawan Satyananda 67 diikuti oleh operasi SELECT dan PROJECT.

R *(<daftar 1>), (<daftar 2>)S º

p

<daftar atribut>(

s

<kondisi> (R ´ S))

Contoh NATURAL JOIN adalah untuk mencari nama manajer setiap departemen: DEP_MNJR¬ DEPARTEMEN * NIP_Manajer=NIP KARYAWAN

Hasil dari operasi ini adalah relasi DEP_MNJR seperti pada Gambar 4.14, hanya saja atribut NIP dihilangkan karena bernilai sama dengan atribut NIP_MNJR.

Karena operator dalam NATURAL JOIN selalu =, maka operator dapat dihilangkan sehingga ekspresinya menjadi:

DEP_MNJR¬ DEPARTEMEN

*

(NIP_Manajer), (NIP) KARYAWAN

Bila kedua atribut dalam operasi tersebut mempunyai nama yang sama, maka keduanya bisa tidak dituliskan. Contohnya adalah untuk menampilkan tanggungan dari karyawan yang bekerja pada suatu proyek adalah:

TANGG_KAR ¬ BEKERJA_DI * TANGGUNGAN Kedua relasi mempunyai atribut yang sama yaitu NIP_Kar.

4.4.4. Operasi DIVISION

Operasi DIVISION yang dilambangkan dengan ¸ digunakan untuk query yang mempunyai pernyataan “semua” di dalamnya. Bentuk umum operasi ini:

T ¬ R ¸ S

Bila dipunyai operasi T(Z) ¬ R(X) ¸ S(Y), X dan Y masing-masing adalah atribut relasi R dan S, dan Y Í X. T(Z) mempunyai atribut Z = X – Y, Z adalah himpunan atribut R yang bukan atribut S. Sebuah tupel t ada di dalam T(Z) bila untuk setiap tupel tS di S terdapat tupel tR di R yang memenuhi:

tR[Y] = tS[Y] tR[X-Y] = t[X-Y]

Artinya bahwa dua buah tupel tR dan tS akan mempunyai sejumlah atribut yang sama dan tupel t akan mempunyai atribut dari R yang tidak ada di S.

Sebagai contoh, untuk mencari nama semua karyawan yang bekerja pada semua proyek yang sama dengan tempat Yasin bekerja, maka bila operasinya adalah:

YASIN ¬

s

NamaKaryawan = ’Yasin’ (KARYAWAN)

PRYK_YASIN ¬

p

KodeProyek_Kar( BEKERJA_DI NIP_Kar = NIP YASIN)

PRYK_LAIN ¬

p

NIP_Kar, KodeProyek_Kar (BEKERJA_DI)

Operasi pertama adalah untuk mencari tupel dari karyawan yang bernama Yasin, sedangkan operasi kedua adalah untuk mencari tupel proyek tempat Yasin bekerja. Operasi ketiga adalah untuk mencari proyek tempat karyawan lain bekerja. Operasi selanjutnya adalah operasi DIVISION yang mencari karyawan yang mempunyai proyek

(24)

yang sama dengan Yasin:

NIP_PRYK(NIP) ¬ PRYK_LAIN ¸ PRYK_YASIN

HASIL ¬

p

NamaKaryawan (NIP_PRYK * NIP_Kar=NIP KARYAWAN)

Hasil operasi ditunjukkan pada Gambar 4.15.

Singkatnya, relasi R dibagi dengan relasi S menghasilkan relasi T. Atribut yang ada di relasi T adalah atribut yang ada di relasi R dan tidak ada di relasi S. Nilai tupel t yang terdapat dalam relasi hasil T harus muncul di R, dan bisa dikombinasikan dengan setiap tupel di S. Dengan kata lain, nilai atribut yang berbeda di relasi S harus terhubung dengan setiap nilai di relasi R. Semua atribut selain yang dibandingkan masing-masing harus bernilai sama agar tupelnya bisa terpilih sebagai hasil.

Sebagai contoh, penentuan tupel untuk NIP_PRYK dilakukan dengan melihat tupel di PRYK_LAIN yang nilai atributnya sama dengan di PRYK_YASIN (yaitu KodeProyek_Kar dengan nilai ‘1’ dan ‘2’), dan atribut NIP_Kar nilainya harus sama untuk setiap tupel yang sesuai (misalnya NIP_Kar= ’4534534’ terlibat di proyek dengan kode ‘1’ dan ‘2’ sehingga ’4534534’ terpilih menjadi tupel hasil).

YASIN NamaKaryawan NIP ... KodeDep_ Kar

Yasin 1234567 ... 5

PRYK_YASIN KodeProyek_Kar PRYK_LAIN NIP_Kar KodeProyek_Kar

1 1234567 1 2 1234567 2 6668844 3 4534534 1 4534534 2 3334455 2 3334455 1 3334455 3

NIP_PRYK NIP_Kar HASIL NamaKaryawan

1234567 Yasin

4534534 Gatot.

3334455 Burhan

Gambar 4.15. Contoh operasi DIVISION.

Suatu operasi DIVISION dapat disusun dari beberapa operasi lainnya, yaitu: T1 ¬

p

Z (R)

T2 ¬

p

Z ((S ´ T1) – R)

T3 ¬ T1 – T2

4.5. Operasi Relasional Tambahan

Operasi relasional tambahan disediakan untuk beberapa hal yang tidak ditangani operator biasa, misalnya untuk keperluan pengelompokan (group) dan penghitungan matematis sederhana. Aljabar Relasional menyediakan operator FUNCTION, serta OUTER

(25)

Basis Data – Darmawan Satyananda 69 JOIN untuk menampilkan tupel yang tidak memenuhi kondisi join.

4.5.1. Fungsi Agregat Matematis

Salah satu operasi yang tidak bisa dilakukan dengan operator standar adalah fungsi matematis terhadap sekumpulan nilai, seperti menghitung rata-rata, nilai maksimum, dan sebagainya. Hal lain yang tidak bisa dilakukan adalah pengelompokan tupel berdasar kriteria tertentu, misalnya berdasar kode departemen karyawan.

Aljabar Relasional menyediakan operasi FUNCTION untuk keperluan itu. FUNCTION dilambangkan dengan operator

Á

, dengan bentuk umum sebagai berikut:

<kelompok atribut>

Á

<daftar fungsi>(<nama relasi>)

<kelompok atribut> adalah daftar atribut yang digunakan sebagai dasar pengelompokan tupel dari relasi yang disebutkan dalam <nama relasi>. <daftar fungsi> adalah daftar dari pasangan (<fungsi> <atribut>). <fungsi> terdiri dari SUM (menjumlahkan nilai tupel), AVERAGE (menghitung rata-rata nilai tupel-tupel), MAXIMUM (menghitung nilai maksimum tupel-tupel-tupel), MINIMUM (menghitung nilai minimum tupel-tupel), COUNT (menghitung banyaknya tupel). <atribut> adalah atribut dari <nama relasi>. Fungsi-fungsi ini dikenakan terhadap kelompok tupel yang disebutkan dalam <kelompok atribut>.

Banyaknya atribut relasi hasil sesuai dengan banyaknya kelompok atribut dan daftar fungsi yang dinyatakan. Banyaknya tupel sesuai dengan banyaknya kelompok yang ada. Hasil dari fungsi agregat adalah relasi, bukan berupa bilangan.

Contoh penggunaannya adalah untuk mencari banyaknya karyawan per departemen dan gaji rata-ratanya. Operasinya adalah sebagai berikut:

T ¬ KodeDep_Kar

Á

COUNT NIP, AVERAGE Gaji (KARYAWAN)

HASIL(KodeDep_Kar, Jumlah_Karyawan, Gaji_Ratarata) ¬ T

Operasi pertama mengelompokkan semua tupel relasi KARYAWAN menurut kode departemen tempat karyawan bekerja. Untuk setiap kelompok dihitung banyaknya karyawan yang ada (berdasar atribut NIP) dan rata-rata gaji karyawan (berdasar atribut GAJI). Dengan demikian relasi hasil mempunyai tiga buah atribut, sebuah dari kelompok atribut dan dua buah dari daftar fungsi. Bila nama atribut relasi hasil tidak ditentukan, maka nama atribut dari relasi hasil adalah nama kelompok atribut serta penggabungan dari nama fungsi dan nama atribut dalam bentuk <fungsi>_<atribut>. Contoh relasi hasil bisa dilihat pada Gambar 4.16.

Fungsi matematika dikenakan terhadap kelompok tupel, bukan tupel tunggal. Bila kelompok atribut tidak dinyatakan dalam FUNCTION, maka fungsi dikenakan terhadap semua tupel dalam relasi, sehingga relasi hasil hanya mempunyai satu buah tupel

(26)

(semua tupel dalam relasi dianggap sebagai satu kelompok). Contohnya untuk menghitung gaji rata-rata semua karyawan:

Á

COUNT NIP, AVERAGE Gaji (KARYAWAN)

T KodeDep_Kar COUNT_NIP AVERAGE_Gaji

5 4 381250

4 2 375000

1 1 400000

2 1 400000

HASIL KodeDep_Kar Jum_Karyawan Gaji_Ratarata

5 4 381250 4 2 375000 1 1 400000 2 1 400000 (a) COUNT_NIP AVERAGE_Gaji 8 384375 (b)

Gambar 4.16. Relasi hasil operasi FUNCTION. (a) Menghitung banyaknya karyawan yang ada di setiap departemen dan gaji rata-ratanya, (b) Menghitung banyaknya semua karyawan dan gaji rata-ratanya.

4.5.2. Operasi OUTER JOIN

Operasi JOIN hanya menggabungkan tupel-tupel yang memenuhi kondisi join dan mengabaikan tupel yang tidak memenuhi kondisi join. Hasil operasinya adalah tupel dari dua relasi yang saling berhubungan, dan tupel yang tidak berhubungan akan dihilangkan. JOIN semacam ini disebut juga dengan INNER JOIN. Untuk tetap menampilkan tupel yang tidak berhubungan bisa digunakan operasi OUTER JOIN. Hasil operasi ini adalah relasi yang berisi semua tupel di R atau S atau keduanya dan mengabaikan apakah suatu tupel berhubungan dengan tupel di relasi lainnya atau tidak. Operasi OUTER JOIN terdiri dari dua langkah: (1) mengeksekusi natural join, (2) bila sembarang tupel di satu relasi tidak berhubungan dengan tupel di relasi lainnya, maka tupel yang tidak berhubungan itu ditambahkan ke dalam relasi join dan atributnya diisi dengan nilai null. Ada tiga macam operasi OUTER JOIN yaitu LEFT OUTER JOIN, RIGHT OUTER JOIN, dan FULL OUTER JOIN.

Operasi LEFT OUTER JOIN dilambangkan dengan , akan menampilkan setiap tupel pada relasi sebelah kiri dari R S (dalam hal ini adalah relasi R). Bila tidak ada tupel S yang sesuai dengan tupel di R, maka atribut S diisi dengan nilai null. Contohnya adalah untuk menampilkan semua nama karyawan dan departemen yang dipimpinnya bila karyawan tersebut adalah seorang manajer:

(27)

Basis Data – Darmawan Satyananda 71 KARDEP ¬ KARYAWAN NIP = NIP_Manajer DEPARTEMEN

HASIL ¬

p

NamaKaryawan, NamaDepartemen (KARDEP)

Relasi hasil operasi dapat dilihat pada Gambar 4.17. Pada gambar dapat dilihat relasi yang tidak sesuai (hasil operasi LEFT OUTER JOIN antara KARYAWAN dan DEPARTEMEN) akan berisi nilai null.

HASIL NamaKaryawan NamaDepartemen

Yasin Null

Burhan Riset

Dewi Nur Null Wahyu N. Null

Gatot Keuangan

Rahmat B. Teknik

Nina SDM

Gambar 4.17 Relasi hasil operasi LEFT OUTER JOIN.

Operasi lain yang serupa adalah RIGHT OUTER JOIN yang dilambangkan dengan . Operasi ini akan menampilkan setiap tupel pada relasi sebelah kanan R S (relasi S). Tupel di sebelah kiri (relasi R) yang tidak berhubungan dengan tupel relasi S akan diisi dengan nilai null.

Operasi FULL OUTER JOIN, yang dilambangkan dengan , akan menampilkan semua tupel dari kedua relasi. Bila kedua tupel tidak ada yang berhubungan maka atributnya akan diisi dengan nilai null.

4.6. Rangkuman

Bab ini membahas mengenai model relasional. Model relaisional didasarkan pada sekumpulan tabel-tabel dan relasi yang ada di antaranya. Dalam model ini digunakan istilah tupel (untuk menyatakan record atau entitas dalam E-R), atribut (untuk menyatakan field), dan relasi (untuk menyatakan tabel atau himpunan relasi). Relasi adalah himpunan tupel-tupel, sehingga kepada relasi bisa dikenakan operasi himpunan. Skema relasi adalah sekumpulan atribut yang menjelaskan struktur suatu basis data.

Atribut kunci suatu relasi adalah atribut yang digunakan untuk mengenali tupel-tupel dalam relasi secara unik. Ada beberapa jenis atribut kunci yaitu kunci super, kunci kandidat, dan kunci primer. Penentuan atribut yang menjadi kunci didasarkan pada makna atribut tersebut dalam relasi.

Juga dijelaskan mengenai basis data relasional dan skema basis data relasional, serta tahapan yang harus dilakukan bila mengubah skema E-R menjadi skema basis data Relasional. Ada 3 aturan dalam skema relasional:

· aturan kunci: nilai kunci kandidat harus unik

· aturan integritas entitas: nilai kunci primer tidak boleh null

(28)

kepada tupel yang benar-benar ada.

Selain kunci yang telah disebutkan di atas juga ada kunci tamu yang digunakan untuk mengubungkan 2 buah relasi.

Tiga macam operasi update dalam model relasional: insert, delete, modify. Bila suatu operasi update dijalankan, harus diuji apakah operasi tersebut tidak melanggar aturan yang ada.

Aljabar relasional, salah satu bahasa query prosedural, adalah sekumpulan operasi yang digunakan untuk memanipulasi relasi. Aljabar relasional dapat dibagi menjadi 2 macam:

· operasi himpunan: Union, Intersection, Difference, Cartesian Product · operasi khusus basis data relasional: Select, Project, Join, Division

Selain itu terdapat operasi relasional tambahan, berupa fungsi-fungsi matematis, yaitu SUM, AVERAGE, MAXIMUM, MINIMUM, COUNT. Operasi tambahan lain adalah OUTER JOIN, yang terdiri dari LEFT OUTER JOIN, RIGHT OUTER JOIN, dan FULL OUTER JOIN.

4.7. Soal Latihan

1. Jelaskan mengenai aturan integritas.

2. Mengapa tupel yang duplikat tidak diperbolehkan dalam relasi? 3. Apa beda kunci dan kunci super?

4. Ubahlah skema E-R pada soal latihan bab III nomor 4 dan 5 menjadi skema relasional.

5. Buktikan dengan contoh bahwa operasi DIVISION bisa digantikan dengan operasi yang lain seperti pada halaman 69!

6. Bila diketahui skema sebagai berikut:

KARYAWAN(NamaKaryawan, AlamatKaryawan, KotaKaryawan) BEKERJA(NamaKaryawan, NamaPerusahaan, Gaji)

LOKASI(NamaPerusahaan, KotaPerusahaan) MEMIMPIN(NamaKaryawan, NamaManajer)

Susunlah ekspresi aljabar relasional untuk query berikut:

a. Cari nama dan kota semua karyawan yang bekerja di ‘PT. ABC’.

b. Cari nama, alamat, dan kota semua karyawan yang mempunyai gaji di atas Rp. 500.000.

c. Siapa saja karyawan yang tinggal di kota yang sama dengan tempat kerjanya? d. Cari semua karyawan yang tinggal di kota yang sama dengan manajernya. e. Cari semua karyawan yang tidak bekerja di ‘PT. ABC’.

f. Cari semua perusahaan yang ada di kota yang sama dengan kota ‘Bank XYZ’ berada.

(29)

Basis Data – Darmawan Satyananda 73 g. Cari perusahaan yang memberikan gaji terkecil.

h. Untuk setiap perusahaan, tampilkan rata-rata gaji karyawannya. i. Perusahaan mana yang mempunyai karyawan terbanyak?

7. Diketahui skema relasional untuk permasalahan tentang perkuliahan pada Jurusan Matematika sebagai berikut:

MATAKULIAH (KodeMK, NamaMK, SKS, JS, Prasyarat) MAHASISWA (NIM, NamaMahasiswa, Alamat)

DOSEN (KodeDosen, NamaDosen, NIP) RUANGAN (NoRuang, Kapasitas, Jenis)

OFFERING (KodeMK, KodeOff, Hari, Jam, Ruangan, KodeDosen) MENGAMBIL (NIM, KodeMK, KodeOff, Semester, Tahun, Nilai)

Gunakan skema di atas untuk menuliskan query dalam aljabar relasional untuk permasalahan berikut:

a. Tampilkan kode dan nama matakuliah yang diajar oleh Pak Imam b. Tampilkan kode dosen dan nama dosen yang mengajar Kalkulus Lanjut

c. Tampilkan nama dan nilai mahasiswa yang mengambil matakuliah MAU 432 pada offering AA.

d. Tampilkan nama dan nilai mahasiswa yang tidak mengambil matakuliah MAU 432.

e. Tampilkan nama dosen yang mengajar matakuliah Kalkulus I tetapi tidak mengajar Kalkulus II.

f. Berapakah mahasiswa yang mengambil matakuliah dengan kode MAP 444 offering AA pada semester I-2004/2005?

g. Siapakah mahasiswa yang tidak mengambil kuliah pada semester II-2004/2005? h. Tuliskan nama matakuliah dan kode offering yang menggunakan ruangan M-101

pada hari Senin.

i. Untuk setiap ruangan, tuliskan banyaknya offering yang menggunakan ruangan tersebut pada hari Jumat.

j. Untuk setiap hari (Senin sampai Jumat) dan pada setiap ruangan, tuliskan banyaknya offering yang menggunakan ruangan itu.

k. Siapa saja yang mengambil matakuliah MAU401, MAU434 dan MAU439 bersamaan?

Gambar

Gambar 4.1.  Contoh tabel MATAKULIAH
Gambar 4.2 menunjukkan skema basis data relasional PERUSAHAAN yang didapat  dari  diagram  E-R  pada  bab  3,  dan  Gambar  4.3  menunjukkan  instance  basis  data  relasional yang berhubungan dengan skema PERUSAHAAN
Gambar 4.3.  Contoh instance basis data PERUSAHAAN.
Gambar 4.4.  Aturan integritas referensial untuk skema basis data PERUSAHAAN.
+7

Referensi

Dokumen terkait

Judul Publikasi ditulis dalam Bahasa Indonesia dan Bahasa Inggris. Penulisan judul Bahasa Indonesia ALLCAPS + Bold. Judul Bahasa Inggris ALLCAPS + Italic dengan Font

Puji syukur kepada panjatkan kepada Tuhan Yang Maha Esa atas rahmat, yang selalu mendampingi, bimbing dan penjagaan-Nya selama ini sehingga penulis dapat menyelesaikan proyek

Dengan ini saya menyatakan bahwa skripsi dengan judul: PENGARUH STRATEGI PEMASARAN TERHADAP PENINGKATAN JUMLAH PESERTA ASURANSI (Penelitian pada PT. Asuransi Takaful

3. Budaya &gt;Y-&lt;I hingga kini terus dijalankan oleh pihak #$. !an hasil kinerja dari budaya &gt;Y-&lt;I ini pada perusahaan nampak dari prestasi yang telah diraih oleh

Cipta, 2014), h.. membuat siswa bisa lebih terfokus pada kegiatan belajar mengajar di kelasnya, sehingga curah perhatiannya akan lebih tinggi. Tingginya tingkat curah

Dalam penelitian yang dilakukan oleh Ambarinanti (2007) mengenai analisis faktor-faktor yang mempengaruhi produksi dan impor beras Indonesia menggunakan metode

Untuk itu petugas reservasi yang merangkap segala aktifitas di department front office harus mencatat di dalam buku (Log Book) segala kejadian penting yang akan ataupun yang telah

Pengukuran menggunakan model nilai wajar akan menjadi sulit dan kemungkinan akan memerlukan biaya yang lebih mahal dari pada manfaatnya untuk aset biologis yang belum menghasilkan.