7 perancangan database

21
Handout Pengantar Database Toto Suharto Perancangan Database Halaman VII-1 7 Perancangan Database erancangan database pada dasarnya merupakan proses untuk merepresentasikan dunia nyata (real world) yang dikehendaki kedalam sistem komputer, sehingga mudah dimengerti oleh pemakai dengan mempertimbangkan kemudahan implementasi dan pemrosesannya. Perancangan database dikerjakan setelah proses analisis dokumen, yang merupakan salah satu kegiatan dari perancangan sistem, selesai dilaksanakan. Database yang dirancang harus memiliki kemampuan untuk memberikan informasi yang diinginkan mengenai dunia nyata yang diwakilinya. Dengan demikian data tentang dunia nyata tersebut harus diorganisasi kemudian direpresentasikan dalam komputer, sehingga dapat diproses dengan efektif dan efisien. Beberapa tujuan yang ingin dicapai dari perancangan database diantaranya adalah: memenuhi kebutuhan informasi pada saat ini dan yang akan datang kemudahan pengembangan sesuai dengan perkembangan organisasi penerapan mekanisme pengamanan data Untuk mencapai tujuan tersebut, ada dua tahapan proses yang harus dikerjakan pada saat perancangan database ini, yaitu perancangan logika dan perancangan fisik. 7.1. Perancangan Logika Database Perancangan logika database merupakan proses pendefinisian entity dan relasi (relationship) dari dunia nyata yang dirancang, berdasarkan kebutuhan informasi dan pengolahan data dari organisasi yang bersangkutan. Entity adalah sesuatu (sekumpulan objek) yang dapat diidentifikasi dan dibedakan. Relasi adalah hubungan yang terjadi antara kelompok-kelompok entity. Perancangan logika database terdiri dari dari dua tahapan proses. Pertama, perancangan model konseptual atau model enterprise dari dunia nyata yang dirancang, disebut tahap pendeskripsian semantik. Kedua, perancangan model logika yaitu proses dekomposisi model konseptual untuk memperoleh model logika, disebut tahap dekomposisi skema basis data. Sasaran yang ingin dicapai dari P

Upload: others

Post on 23-Oct-2021

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-1

7 Perancangan Database

erancangan database pada dasarnya merupakan proses untuk merepresentasikan dunia nyata (real world) yang dikehendaki kedalam sistem

komputer, sehingga mudah dimengerti oleh pemakai dengan mempertimbangkan kemudahan implementasi dan pemrosesannya. Perancangan database dikerjakan setelah proses analisis dokumen, yang merupakan salah satu kegiatan dari perancangan sistem, selesai dilaksanakan. Database yang dirancang harus memiliki kemampuan untuk memberikan informasi yang diinginkan mengenai dunia nyata yang diwakilinya. Dengan demikian data tentang dunia nyata tersebut harus diorganisasi kemudian direpresentasikan dalam komputer, sehingga dapat diproses dengan efektif dan efisien. Beberapa tujuan yang ingin dicapai dari perancangan database diantaranya adalah:

• memenuhi kebutuhan informasi pada saat ini dan yang akan datang • kemudahan pengembangan sesuai dengan perkembangan organisasi • penerapan mekanisme pengamanan data Untuk mencapai tujuan tersebut, ada dua tahapan proses yang harus dikerjakan pada saat perancangan database ini, yaitu perancangan logika dan perancangan fisik.

7.1. Perancangan Logika Database Perancangan logika database merupakan proses pendefinisian entity dan relasi (relationship) dari dunia nyata yang dirancang, berdasarkan kebutuhan informasi dan pengolahan data dari organisasi yang bersangkutan. Entity adalah sesuatu (sekumpulan objek) yang dapat diidentifikasi dan dibedakan. Relasi adalah hubungan yang terjadi antara kelompok-kelompok entity. Perancangan logika database terdiri dari dari dua tahapan proses. Pertama, perancangan model konseptual atau model enterprise dari dunia nyata yang dirancang, disebut tahap pendeskripsian semantik. Kedua, perancangan model logika yaitu proses dekomposisi model konseptual untuk memperoleh model logika, disebut tahap dekomposisi skema basis data. Sasaran yang ingin dicapai dari

P

Page 2: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-2

perancangan logika database ini adalah fleksibilitas model data yang dihasilkan dan efisiensi pengimplementasiannya dalam komputer. Model data adalah suatu alat abstrak untuk merepresentasikan data dari dunia nyata yang akan diimplementasikan dalam sistem komputer tanpa tergantung kepada software maupun bentuk dan jenis komputer itu sendiri.

7.1.1. Perancangan Model Konseptual atau Enterprise Perancangan model konseptual atau enterprise bertujuan untuk menentukan entity dan relasi yang terbentuk diantaranya. Model konseptual yang dikembangkan ini harus bisa menyajikan semua entity dan relasi tanpa tergantung pada software DBMS, perangkat komputer yang digunakan, maupun model fisik data dalam media penyimpanan. Selain itu, model konseptual ini pun harus bebas dari aplikasi-aplikasi pemrosesan data secara individual. Penjelasan berikut akan membahas perancangan model konseptual dengan pendekatan relasional, tapi bukan berarti bahwa sistem database yang akan dibangun adalah sistem database model relasional. Hal ini dikarenakan metode pendekatan ini dapat juga diterapkan pada model-model data lainnya (jaringan maupun hirarki) dengan beberapa penyesuaian pada tahap pelaksanaannya.

7.1.2. Langkah-langkah Perancangan Model Konseptual Untuk menentukan entity dan relasi pada perancangan model konseptual ini, terlebih dahulu diperlukan analisis data yang didasarkan pada dokumen yang menjadi dasar dari kebutuhan pengolahan data, dan eksistensi aplikasi-aplikasi yang berlaku terhadap data pada dokumen tersebut. Hasil dari analisis data ini nantinya digunakan sebagai dasar untuk mengerjakan proses selanjutnya, yaitu:

1. Menentukan entity yang terlibat pada permasalahan yang akan dibuat sistem databasenya dengan melihat data atau fakta pada dokumen yang ada. Caranya:

a. Tentukan urut-urutan kejadian dari permasalahan dengan memperhatikan batasan waktu;

b. Gambarkan urut-urutan kejadian tersebut dalam bentuk model kejadian (event model);

c. Tentukan objek atau pelaku, baik pelaku aktif maupun pasif, di setiap kejadian;

d. Kelompokkan (generalisasi) objek atau pelaku tersebut sesuai dengan sifat dan fungsinya. Calon entity adalah kelompok objek hasil generaliisasi yang mempunyai sifat dan fungsi yang sama.

Cara lain adalah dengan melakukan generalisasi item-item data yang ada pada kamus data hasil analisis sesuai dengan sifat dan fungsinya. Untuk cara ini, calon entity adalah hasil akhir generalisasi dari item-item data tersebut.

2. Menentukan atribut kunci dan atribut lainnya dari tiap entity berdasarkan dokumen hasil analisis.

3. Menentukan hubungan (relasi) antar entity yang terlibat berikut jenis relasinya dengan memperhatikan kebutuhan informasi dari sistem.

4. Menggambarkan entity dan relasinya dalam bentuk diagram E-R.

Page 3: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-3

7.1.3. Perancangan Model Logika Perancangan model logika adalah proses untuk mengambarkan hasil perancangan model konseptual ke dalam model logika database. Model logika database yang bisa digunakan untuk menyatakan hasil perancangan model logika ini adalah model relasi, model jaringan dan model hirarki. Penggambaran model logika ini ditentukan oleh software DBMS yang nantinya akan digunakan. Urutan prosedur untuk perancangan model logika dengan pendekatan terhadap model relasi adalah: 1. Transformasi bentuk model E-R menjadi model relasi. 2. Normalisasi skema relasi untuk mendapatkan skema relasi optimal. Proses dekomposisi (pemecahan) skema relasi untuk menghilangkan anomali-

anomali (penyimpangan) yang dikandung oleh skema relasi tersebut, yaitu: 3. Buat tabel dari skema relasi hasil normalisasi.

7.2. Perancangan Fisik Database Perancangan fisik database merupakan proses untuk mengimplementasikan hasil perancangan logika kedalam sistem komputer secara fisik. Perancangan fisik ini sangat tergantung kepada software DBMS yang dipilih. 1. Menentukan struktur untuk setiap tabel, meliputi nama field, jenis, lebar dan

field kuncinya 2. Menentukan nama database dan nama masing-masing tabel, dan lokasi

dimana database akan disimpan (drive, directory). 3. Menghitung perkiraan space yang dibutuhkan, a. untuk seluruh tabel St = jumlah tabel x panjang record x jumlah record + 10-20% toleransi b. untuk seluruh index 4. Implementasi

Page 4: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-4

7.3. Contoh Pelaksanaan Perancangan Database

7.3.1. Deskripsi Masalah Sesuai dengan semangat meningkatkan ekspor Indonesia, PT. Angin Ribut ingin membuat database bagi operasi bisnisnya yang menyangkut pengiriman peti kemas ke berbagai pelabuhan dunia. Pengiriman peti kemas yang dilayani oleh perusahan tersebut dilakukan dengan menggunakan kapal milik sendiri yang masing-masing mempunyai kapasitas tertentu. Peti kemas memiliki nomor (contoh TRLU 1234567), ukuran (20 feet atau 40 feet), dan tipe (Full, Reefer, dll.). Setiap kapal memiliki identifikasi seperti nama kapal, call sign, maksimum peti kemas yang dapat diangkut, dan sebagainya. Rute perjalanan dan jadwal labuh/berangkat sudah tetap, dan diumumkan dalam majalah Shipping Gazette. Perjalanan kapal dikenal dengan nama voyage. Berbeda dengan flight number pada angkutan udara, pada angkutan laut setiap kedatangan kapal mempunyai voyage yang berbeda sehingga sebuah kapal dapat mempunyai voyage number yang berbeda-beda. Sebagai contoh, kapal dengan nama Cape Jervis mempunyai voyage number 03S saat berlayar dengan tujuan Australia, tapi untuk tujuan yang sama di waktu lain voyage number untuk kapal tersebut mungkin S, 05S, dan sebagainya. Sebuah kapal dapat melayani tujuan pengiriman yang berbeda-beda, misalnya pada bulan ini melayani perjalanan ke Eropa, sedangkan bulan Juni ke Cina, dan sebagainya. Prosedur yang harus ditempuh oleh seorang ekportir untuk dapat mengirimkan barangnya dengan menggunakan peti kemas melalui PT. Angin Ribut adalah sebagai berikut:

1. Eksportir melakukan kontak dengan bagian Customer Support mengenai rencana pengiriman barang.

2. Jika sudah sepakat mengenai tarif pengiriman, maka informasi rencana pengiriman tersebut dicatat dalam buku booking seperti jumlah dan tipe peti kemas yang akan dikirim, kapal yang akan dipakai, tujuan pengiriman, tarif yang telah disetujui, dan lain-lain.

3. Setelah membayar sesuai dengan persetujuan (bisa sebagian) dan mengantongi nomor peti kemas yang akan dipakai, eksportir pergi ke tempat penyimpanan peti kemas untuk mengambil peti kemas kosongnya.

4. Di tempat eksportir, peti kemas tersebut diisi dengan barang yang akan dikirim. Setelah diperiksa oleh petugas Customs (Bea Cukai), peti kemas dikirim pada waktu yang telah ditentukan (sesuai dengan jadwal kapal yang telah disepakati) ke pelabuhan.

5. PT. Angin Ribut akan memuat peti kemas tersebut pada saat proses muat kapal dilakukan di pelabuhan, jika peti kemas milik eksportir sudah berada di pelabuhan pada saat itu.

6. Proses ekspor harus dilengkapi dengan dokumentasi agar si penerima barang di pelabuhan penerima dapat menerima barangnya. Oleh karena itu, setelah kapal pergi eksportir harus kembali ke PT. Angin Ribut untuk mengambil dokumen ekspor tersebut setelah membayar biaya dokumen.

Page 5: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-5

Beberapa informasi yang diperlukan oleh para petugas PT. Angin Ribut ketika bertugas adalah sebagai berikut:

• Daftar jadwal kapal beserta tujuannya

• Tujuan kapal tertentu (misalnya kapal Seven Seas Chariot)

• Kapal yang tersedia untuk pelabuhan tertentu (misalnya untuk pelabuhan Hobart)

• Kapal yang tersedia ke pelabuhan tertentu pada bulan tertentu

• Daftar peti kemas yang harus dimuat ke kapal tertentu (dari hasil booking)

• Daftar petik emas beserta pemiliknya yang sudah siap dimuat ke atas kapal tertentu (sudah ada di pelabuhan)

• Daftar peti kemas yang sudah dimuat ke atas kapal tertentu (realisasi rencana)

• Daftar peti kemas tipe tertentu untuk tujuan Melbourne yang ada di kapal tertentu

• Daftar eksportir yang telah mengambil peti kemas tapi peti kemasnya tidak terangkut di pelabuhan (terlambat tiba di pelabuhan)

• Daftar booking untuk bulan Juni 1999

• Daftar pendapatan untuk kapal tertentu Beberapa asumsi yang digunakan untuk menyederhanakan permasalahan pada saat merancang database untuk masalah pengiriman peti kemas di atas adalah:

1. Pengiriman barang eksportir selalu merujuk pada tanggal labuh/berangkat kapal di setiap pelabuhan tujuan.

2. Peti kemas selalu tersedia saat terjadi transaksi pemesanan (booking). 3. Satu nomor booking hanya untuk satu tujuan pengiriman per voyage. 4. Barang yang dikirim seorang eksportir mungkin memerlukan lebih dari satu

peti kemas dengan berbagai tipe yang berbeda. 5. Jadwal perjalanan kapal selalu sudah tersusun (dibuat) pada saat terjadi

transaksi booking. 6. Kapal tidak akan berangkat berlayar jika tidak ada peti kemas yang akan

dikirim (status voyage empty), dan perusahaan akan menjadwal ulang kapal tersebut untuk pelayaran berikutnya.

7. Jadwal perjalanan kapal untuk satu pelayaran pada tanggal tertentu mempunyai status penuh (full) jika tonase atau kapasitas maksimum kapal sudah digunakan seluruhnya.

8. Transaksi booking mempunyai status unready (peti kemas belum datang di pelabuhan), ready (peti kemas sudah ada di pelabuhan), loaded (peti kemas sudah diangkut ke kapal) dan completed (peti kemas sudah diterima di tujuan). Status booking tersebut akan diubah sesuai dengan perkembangan kejadian yang selalu diinformasikan ke petugas PT. Angin Ribut.

9. Peti kemas yang sudah berada di pelabuhan mendapat jaminan terangkut di kapal tertentu sesuai dengan jadwal. Bila terjadi keterlambatan maka uang muka yang sudah dibayarkan akan hangus, dan peti kemas tersebut akan diangkut pada voyage berikutnya setelah dilakukan order baru.

10. Pendapatan kapal tidak termasuk uang muka yang hangus dikarenakan keterlambatan pengiriman peti kemas ke pelabuhan.

Page 6: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-6

7.3.2. Pembuatan Model Entity-Relationship (Model E-R) Model data entity-relationship (model E-R) adalah model data yang pembuatannya didasarkan pada anggapan bahwa dunia nyata terdiri dari kumpulan objek dasar yang disebut entity dan relasi diantaranya. Pada model E-R ini struktur logika database secara keseluruhan digambarkan dengan menggunakan diagram E-R.

1. Identifikasi Entitas Dan Hubungan-Antar-Entitas

Entity adalah sebuah objek yang bisa dibedakan dari objek lainnya berdasarkan sekumpulan atribut yang spesifik. Relasi adalah hubungan diantara beberapa entity. Berdasarkan analisis (pengamatan) terhadap deskripsi permasalahan yang diberikan, entitas yang terlibat dapat diidentifikasi sebagai berikut:

• SHIP Mewakili objek kapal yang menjadi sarana pengangkutan peti kemas.

• SHIPTYPE Mewakili jenis dan spesifikasi kapal.

• VOYAGE Mewakili objek dari perjalanan kapal.

• PORT Mewakili objek pelabuhan yang menjadi tujuan pengiriman.

• BOOKING Mewakili proses pemesanan (booking) pengiriman ke tujuan tertentu.

• CONTAINER Mewakili objek peti kemas yang akan dikirim.

• EXPORTER Mewakili objek eksportir yang akan mengirim peti kemas. Sedangkan hubungan-antar-entitas yang ada adalah:

• TYPE, yaitu hubungan antara entitas SHIP dengan SHIPTYPE yang menyatakan suatu kapal mempunyai spesifikasi jenis tertentu.

• SCHEDULE, yaitu hubungan antara entitas SHIP dan VOYAGE yang menyatakan suatu kapal dijadwalkan untuk perjalanan tertentu.

• ROUTE, yaitu hubungan antara entitas VOYAGE dengan PORT yang menyatakan suatu voyage akan mempunyai rute pelayaran ke pelabuhan tertentu.

• ASSIGN, yaitu hubungan antara entitas BOOKING, SHIP, dan PORT yang menyatakan suatu transaksi booking untuk kapal tertentu ke pelabuhan tertentu.

• BRING, yaitu hubungan antara entitas BOOKING dan CONTAINER yang menyatakan suatu transaksi booking akan “membawa” peti kemas tertentu.

• ORDERED, yaitu hubungan antara entitas BOOKING dan EXPORTER yang menyatakan suatu transaksi booking yang telah dilakukan oleh eksportir tertentu.

Page 7: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-7

2. Pembuatan Diagram E-R

Diagram E-R adalah suatu media untuk menggambarkan model data E-R dalam bentuk diagram. Berdasarkan hasil identifikasi entitas dan hubungan-antar-entitas di atas, maka diagram E-R untuk masalah pengiriman peti kemas adalah sebagai berikut:

SHIPTYPE SHIPTYPE VOYAGESCHEDULE

PORT

ROUTE

BOOKING

ASSIGN

CONTAINER BRING

EXPORTER

ORDERED

Deposit

Amount

OrderStatus

Departure Status

Date_of_AD

7.3.3. Pembuatan Model Data Relasi

Model data relasi adalah suatu model logika database yang menggambarkan entitas dan hubungan-antar-entitas dalam bentuk tabel-tabel yang disebut relasi. Kelompok entitas digambarkan dengan suatu relasi yang kolom-kolomnya menunjukkan identifikasi dari entitas tersebut. Demikian juga untuk hubungan-antar-entitas, kolom-kolomnya menunjukkan identifikasi dari entitas-entitas yang berhubungan, dan informasi tentang hubungan tersebut. Setiap tabel relasi dideskipsikan dalam suatu skema yang disebut skema relasi. Skema relasi ialah kumpulan nama-nama atribut dari suatu relasi (deskripsi suatu relasi). Skema relasi dapat diperoleh dari tranformasi model data E-R menjadi model data relasi. Berdasarkan beberapa aturan tranformasi, skema relasi yang dapat diturunkan dari diagram E-R untuk masalah pengiriman peti kemas adalah:

1. Dari SHIPTYPE TYPE SHIP Kedua entitas wajib ada, tetapi data SHIP adalah participants total sehingga:

SHIP (ShipName , Callsign, Type) SHIPTYPE (Type , Tonage, MaxCapacity)

M

1 N M N

1

N

1

M

N

N

1

N

Page 8: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-8

2. Dari SHIP SCHEDULE VOYAGE Kedua entitas wajib ada, dan ada atribut baru yang muncul pada hubungan-

antar-entitas SCHEDULE sehingga: SHIP (ShipName , Callsign, Type) VOYAGE (Voyage# , Destination) SCHEDULE (ShipName , Voyage# , Departure , Status) Atribut ShipName dan Voyage# pada skema relasi SCHEDULE tidak cukup

unik untuk mengidentifikasi jadwal suatu kapal, oleh karena itu perlu satu atribut tambahan, yaitu Departure, untuk melengkapi kedua atribut tersebut sehingga membentuk sebuah primary key (hubungan-antar-entitas SCHEDULE adalah sebuah weak relationship).

3. Dari VOYAGE ROUTE PORT Kedua entitas wajib ada, dan ada atribut baru yang muncul pada hubungan-

antar-entitas ROUTE sehingga: VOYAGE (Voyage# , Destination) PORT (PortName , Country) ROUTE (Voyage# , PortName , Date_of_AD )

Seperti pada kasus nomor dua, atribut Voyage# dan PortName pada skema

relasi ROUTE tidak cukup unik untuk mengidentifikasi rute perjalanan suatu kapal, oleh karena itu perlu satu atribut tambahan, yaitu Date_of_AD, untuk melengkapi kedua atribut tersebut sehingga membentuk sebuah primary key (hubungan-antar-entitas ROUTE adalah sebuah weak relationship).

4. Dari BOOKING ASSIGN SHIP PORT Ketiga entitas wajib ada walaupun tidak ada atribut baru yang muncul pada

hubungan-antar-entitas ASSIGN sehingga: BOOKING (Booking# , BookDate, BookStatus) SHIP (ShipName , Callsign, Type) PORT (PortName , Country) ASSIGN (Booking# , ShipName , PortName )

5. Dari BOOKING BRING CONTAINER Salah satu entitas wajib ada, yaitu BOOKING, dan walaupun tidak ada atribut

baru yang muncul pada hubungan-antar-entitas BRING tetapi hubungan yang terbentuk adalah many-to-many sehingga:

BOOKING (Booking# , BookDate, BookStatus) CONTAINER (Container# , Type, Dimension) BRING (Booking# , Container# )

6. Dari EXPORTER ORDERED BOOKING Salah satu entitas wajib ada, yaitu BOOKING, dan ada atribut baru yang

muncul pada hubungan-antar-entitas ORDERED sehingga:

Page 9: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-9

BOOKING (Booking# , BookDate, BookStatus) EXPORTER (Exporter# , ExpName, Address, Phone) ORDERED (Booking# , Exporter# , Deposit, Amount, OrderStatus) Dari hasil pembentukan skema relasi di atas, skema database yang didapat

untuk masalah pengiriman peti kemas adalah SHIP (ShipName , Callsign, Type) SHIPTYPE (Type , Tonage, MaxCapacity) VOYAGE (Voyage# , Destination) SCHEDULE (ShipName , Voyage# , Departure , Status) ROUTE (Voyage# , PortName , Date_of_AD ) PORT (PortName , Country) BOOKING (Booking# , BookDate, BookStatus) ASSIGN (Booking# , ShipName , PortName ) BRING (Booking# , Container# ) ORDERED (Booking# , Exporter# , Deposit, Amount, OrderStatus) CONTAINER (Container# , Type, Dimension) EXPORTER (Exporter# , ExpName, Address, Phone)

7.3.4. Analisis Ketergantungan Fungsional dan Normalisasi Ketergantungan adalah suatu bentuk kendala yang harus selalu dipenuhi oleh data yang disimpan berdasarkan suatu skema database tertentu. Dalam perancangan database, teori ketergantungan dapat dipergunakan untuk memperoleh skema relasi yang baik dari skema basis data yang dirancang, ditinjau dari anomali-anomali yang dikandungnya dimana anomali-anomali tersebut nantinya dapat dihilangkan dengan memecah skema relasi menjadi beberapa skema relasi. Pemecahan suatu skema relasi menjadi beberapa skema relasi disebut proses normalisasi.

1. Analisis Ketergantungan Fungsional

Ketergantungan fungsional dapat didefinisikan sebagai berikut:

Y secara fungsional tergantung kepada X, ditulis X → Y, dalam suatu skema

relasi R = ( A1, A2, ..., An) dimana X, Y ⊆ { A1, A2, ..., An} jika untuk setiap dua atau lebih tuple dalam R dan ditemukan nilai yang sama pada X, maka akan ditemukan nilai yang sama pula pada Y dari tuple-tuple tersebut.

Untuk setiap skema relasi pada skema database untuk masalah pengiriman peti kemas didapat ketergantungan fungsional sebagai berikut:

1. Pada skema relasi SHIP

ShipName → Callsign, Type 2. Pada skema relasi SHIPTYPE

Type → Tonage, MaxCapacity 3. Pada skema relasi VOYAGE

Voyage# → Destination

Page 10: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-10

4. Pada skema relasi SCHEDULE

ShipName, Voyage#, Departure → Status 5. Pada skema relasi ROUTE

Voyage#, PortName, Date_of_AD → ∅ 6. Pada skema relasi PORT

PortName → Country 7. Pada skema relasi BOOKING

Booking# → BookDate, BookStatus 8. Pada skema relasi ASSIGN

Booking#, ShipName, PortName → ∅ 9. Pada skema relasi BRING

Booking#, Container# → ∅ 10. Pada skema relasi ORDERED

Booking#, Exporter# → Deposit, Amount, OrderStatus 11. Pada skema relasi CONTAINER

Container# → Type, Dimension 12. Pada skema relasi EXPORTER

Exporter# → ExpName, Address, Phone

2. Normalisasi

Normalisasi adalah proses memecah (dekomposisi) suatu skema relasi untuk menghilangkan anomali proses update. Proses normalisasi akan melibatkan beberapa langkah transformasi untuk membuat suatu relasi menjadi konsisten secara internal dan non-redundant. Berikut adalah proses normalisasi yang dilakukan untuk semua skema relasi pada skema database masalah pengiriman peti kemas:

First Normal Form (1NF)

Relasi R ada dalam keadaan 1NF jika dan hanya jika semua nilai-nilai atribut yang menjadi domain R mempunyai nilai atomik (tidak ada atribut repetitif dan semua tuplenya mempunyai harga (tidak kosong).

Karena semua skema relasi pada skema database tidak mempunyai atribut repetitif dan semua tuplenya mempunyai harga, maka skema relasi sudah ada dalam keadaan 1NF.

Page 11: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-11

Second Normal Form (2NF) Relasi R ada dalam keadaan 2NF jika dan hanya jika R ada dalam 1NF dan

semua atribut bukan kunci pada relasi tersebut hanya tergantung kepada semua atribut yang merupakan kuncinya (tidak ada ketergantungan parsial).

Ketergantungan parsial A terhadap X terjadi jika X → A dan ada Y ⊂ X sehingga Y → A.

Berdasarkan analisis ketergantungan fungsional, terlihat bahwa semua skema relasi pada skema database tidak mempunyai ketergantungan parsial sehingga skema relasi sudah ada dalam keadaan 2NF.

Third Normal Form (3NF) Relasi R ada dalam keadaan 3NF jika dan hanya jika R ada dalam 2NF dan

semua atribut bukan kunci pada relasi tersebut tidak memiliki ketergantungan transitif terhadap atribut-atribut yang merupakan kuncinya. Ketergantungan transitif A terhadap X dalam suatu relasi terpenuhi jika ada Y

→ A, X → Y tetapi X → A.

Berdasarkan analisis ketergantungan fungsional, terlihat bahwa semua skema relasi pada skema database tidak mempunyai ketergantungan transisitf sehingga skema relasi sudah ada dalam keadaan 3NF.

7.3.5. Perancangan Fisik Database Perancangan fisik database merupakan proses untuk mengimplementasikan hasil perancangan logika kedalam sistem komputer secara fisik. Pada tugas kuliah ini, aktivitas perancangan fisik yang dikerjakan dibatasi hanya untuk penentuan struktur untuk setiap tabel yang akan dibuat meliputi nama atribut, jenis, lebar dan atribut kuncinya, dan penentuan batasan integritas (integrity contraints). Secara rinci hasil dari perancangan fisik untuk masalah yang diberikan adalah:

1. Penentuan Struktur Data

a. Tabel Ship Digunakan untuk menyimpan data kapal yang digunakan untuk

mengangkut peti kemas. Struktur data untuk tabel ini adalah:

Nama Tabel : SHIP Primary Key: ShipName Foreign Key: Type No. Nama Atribut Jenis Lebar Keterangan 1 ShipName CHAR 20 Nama kapal 2 CallSign CHAR 10 Nama (tanda) pan ggilan 3 Type NUMBER 2 Kode jenis kapal

b. Tabel ShipType Digunakan untuk menyimpan data jenis (spesifikasi) kapal. Struktur

data untuk tabel ini adalah:

Page 12: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-12

Nama Tabel : SHIPTYPE Primary Key: ShipName Foreign Key: - No. Nama Atribut Jenis Lebar Keterangan 1 Type NUMBER 2 Kode jenis kapal 2 Tonage NUMBER 8 Kapasitas (tonas e) kapal c. Tabel Voyage Digunakan untuk menyimpan data daerah tujuan perjalanan kapal.

Struktur data untuk tabel ini adalah:

Nama Tabel : VOYAGE Primary Key: Voyage# Foreign Key: - No. Nama Atribut Jenis Lebar Keterangan 1 Voyage# CHAR 7 Nomor voyage 2 Destination CHAR 20 Daerah tujuan pe rjalanan d. Tabel Schedule Digunakan untuk menyimpan data inisialisasi jadwal perjalanan awal

kapal. Struktur data untuk tabel ini adalah:

Nama Tabel : SCHEDULE Primary Key: ShipName, Voyage#, Departure Foreign Key: ShipName, Voyage# No. Nama Atribut Jenis Lebar Keterangan 1 ShipName CHAR 20 Nama kapal 2 Voyage# CHAR 7 Nomor voyage 3 Departure DATE Tanggal berangka t 4 Status CHAR 10 Status jadwal (Empty, Availabl e, Full) e. Tabel Route Digunakan untuk menyimpan data rute perjalanan awal kapal yang

sudah dijadwalkan. Struktur data untuk tabel ini adalah:

Nama Tabel : ROUTE Primary Key: Voyage#, PortName, Date_of_AD Foreign Key: Voyage#, PortName No. Nama Atribut Jenis Lebar Keterangan 1 Voyage# CHAR 7 Nomor voyage 2 PortName CHAR 20 Nama pelabuhan t ujuan 3 Date_of_AD DATE Tanggal labuh/be rangkat f. Tabel Port Digunakan untuk menyimpan data pelabuhan yang menjadi tujuan (rute)

perjalanan kapal. Struktur data untuk tabel ini adalah:

Nama Tabel : PORT Primary Key: PortName Foreign Key: - No. Nama Atribut Jenis Lebar Keterangan 1 PortName CHAR 20 Nama pelabuhan 2 Country CHAR 20 Negara dari pela buhan

Page 13: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-13

g. Tabel Booking Digunakan untuk menyimpan data identitas transaksi booking yang

sudah dipesan eksportir. Struktur data untuk tabel ini adalah:

Nama Tabel : BOOKING Primary Key: Booking# Foreign Key: - No. Nama Atribut Jenis Lebar Keterangan 1 Booking# CHAR 20 Nomor booking 2 BookDate DATE Tanggal booking 3 BookStatus CHAR 10 Status booking 1 = unready 2 = ready 3 = loaded 4 = completed h. Tabel Assign Digunakan untuk menyimpan data identitas kapal dan pelabuhan tujuan

yang dicatat pada transaksi booking. Struktur data untuk tabel ini adalah:

Nama Tabel : ASSIGN Primary Key: Booking#, ShipName, PortName Foreign Key: Booking#, ShipName, PortName No. Nama Atribut Jenis Lebar Keterangan 1 Booking# CHAR 20 Nomor booking 2 ShipName CHAR 20 Nama kapal 3 PortName CHAR 20 Nama pelabuhan

i. Tabel Bring Digunakan untuk menyimpan data identitas peti kemas yang digunakan

(dibawa) pada suatu transaksi booking. Struktur data untuk tabel ini adalah:

Nama Tabel : BRING Primary Key: Booking#, Container# Foreign Key: Booking#, Container# No. Nama Atribut Jenis Lebar Keterangan 1 Booking# CHAR 20 Nomor booking 2 Container# CHAR 15 Nomor peti kemas j. Tabel Order Digunakan untuk menyimpan data order transaksi booking yang

dilakukan oleh eksportir tertentu. Struktur data untuk tabel ini adalah:

Nama Tabel : ORDER Primary Key: Booking#, Container# Foreign Key: Booking#, Container# No. Nama Atribut Jenis Lebar Keterangan 1 Booking# CHAR 20 Nomor booking 2 Exporter# CHAR 10 Kode eksportir 3 Deposit NUMBER 15 Jumlah uang muka 4 Amount NUMBER 15 Jumlah total ord er 5 OrderStatus CHAR 11 Status order (Paid, Not Paid)

Page 14: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-14

k. Tabel Container Digunakan untuk menyimpan data peti kemas. Struktur data untuk

tabel ini adalah:

Nama Tabel : CONTAINER Primary Key: Container# Foreign Key: - No. Nama Atribut Jenis Lebar Keterangan 1 Container# CHAR 15 Nomor peti kemas 2 Type CHAR 8 Jenis peti kemas 3 Dimension CHAR 9 Ukuran peti kema s l. Tabel Exporter Digunakan untuk menyimpan data eksportir. Struktur data untuk tabel

ini adalah:

Nama Tabel : EXPORTER Primary Key: Exporter# Foreign Key: - No. Nama Atribut Jenis Lebar Keterangan 1 Exporter# CHAR 10 Kode ekportir 2 ExpName CHAR 20 Nama eksportir 3 Address CHAR 20 Alamat eksportir 4 Phone CHAR 12 Nomor telepon ek sportir

2. Penentuan Batasan Integritas (Integrity Constraints)

Secara umum ada 4 jenis aturan integritas (integrity rules) yang harus diperhatikan pada saat merancang sebuah basis data, yaitu domain rule, attribute rule, relation rule dan database rule. Berikut adalah penjelasan masing-masing aturan integritas yang diberlakukan untuk setiap tabel relasi yang dibuat di atas untuk masalah pengiriman peti kemas:

a. Domain Rule Domain rule adalah aturan integritas yang membatasi nilai-nilai apa saja

yang diperkenankan untuk domain yang sudah ditentukan. Pada tugas ini, aturan integritas domain rule dipergunakan untuk atribut-atribut:

No. Nama Atribut Jenis Nilai Domain 1 Type NUMBER 1, 2, 3 dan 4 2 Status CHAR ‘Empty’, ‘Available’ d an ‘Full’ 3 BookStatus CHAR ‘1’, ‘2’, ‘3’, dan ‘4’ 4 Deposit NUMBER ≥ 0 5 Amount NUMBER ≥ 0 6 OrderStatus CHAR ‘Paid’ dan ‘Not paid’

b. Attribute Rule Atribut rule adalah aturan integritas yang membatasi nilai-nilai apa saja

yang diperkenankan untuk atribut yang sudah ditentukan. Pada tugas ini, aturan integritas attribut rule yang dibuat adalah:

Page 15: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-15

• setiap nilai atribut kunci (primary key) harus unik

• nilai atribut yang ada pada setiap tabel boleh bernilai kosong (null)

• nilai atribut Phone harus unik c. Relation Rule Relation rule adalah aturan integritas yang membatasi nilai-nilai apa saja

yang diperkenankan untuk relasi yang sudah ditentukan. Pada tugas ini, aturan integritas relation rule yang digunakan hanya ditujukan untuk atribut-atribut Amount dan Deposit pada tabel Order dimana nilai

Amount ≥ Deposit. d. Database Rule Database rule adalah aturan integritas yang membatasi nilai-nilai apa

saja yang diperkenankan untuk database yang sudah ditentukan. Pada tugas ini, aturan integritas database rule yang digunakan ditujukan untuk tabel Booking dan Order dimana jika atribut BookStatus pada tabel Booking bernilai ‘3’ atau ‘4’, maka atribut OrderStatus pada tabel Order harus bernilai ‘Paid’.

7.3.6. Implementasi

1. Pembuatan Tabel-tabel Database

Tabel-tabel database yang dibuat merujuk kepada hasil perancangan fisik seperti yang ditunjukkan pada bagian 7.3.5 di atas. Adapun pelaksanaannya dikerjakan dengan menggunakan perintah CREATE TABLE setelah database untuk tabel-tabel tersebut dibuat. Perintah pembentukan untuk setiap tabelnya adalah sebagai berikut:

a. Tabel Ship CREATE TABLE Ship (ShipName CHAR (20) NOT NULL, CallSign CHAR (10) NOT NULL, Type NUMBER (2) NOT NULL, PRIMARY KEY (ShipName), FOREIGN KEY (Type) REFERENCES ShipType ON DELETE CASCADE); b. Tabel ShipType CREATE TABLE ShipType (Type NUMBER (2) NOT NULL, Tonage NUMBER (8) NOT NULL, PRIMARY KEY (Type), CHECK (Type > 0 AND TYPE < 5));

c. Tabel Voyage CREATE TABLE Voyage (Voyage# CHAR (7) NOT NULL, Destination CHAR (20 ), PRIMARY KEY (Voyage#));

Page 16: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-16

d. Tabel Schedule CREATE TABLE Schedule (ShipName CHAR (20) NOT NULL, Voyage# CHAR (7) N OT NULL, Departure DATE NOT NULL, Status CHAR (10) NOT NU LL, PRIMARY KEY (ShipName, Voyage#, Departure), FOREIGN KEY (ShipName) REFERENCES Ship, FOREIGN KEY (Voyage#) REFERENCES Voyage ON DELET E CASCADE, CHECK (Status IN (‘Empty’, ‘Available’, ‘Full))) ;

e. Tabel Route CREATE TABLE Route (Voyage# CHAR (7) NOT NULL, PortName CHAR (20) N OT NULL, Date_of_AD DATE NOT NULL, PRIMARY KEY (Voyage#, PortName, Date_of_AD), FOREIGN KEY (Voyage#) REFERENCES Voyage, FOREIGN KEY (PortName) REFERENCES Port);

f. Tabel Port CREATE TABLE Port (PortName CHAR (20) NOT NULL, Country CHAR (20) NOT NULL, PRIMARY KEY (PortName));

g. Tabel Booking CREATE TABLE Booking (Booking# CHAR (20) NOT NULL, BookDate DATE NOT NULL, BookStatus CHAR (10) NOT NULL, PRIMARY KEY (Booking#), CHECK (BookStatus IN (‘1’, ‘2’, ‘3’, ‘4’));

h. Tabel Assign CREATE TABLE Assign (Booking# CHAR (20) NOT NULL, ShipName CHAR (20) NOT NULL, PortName CHAR (20) NOT NULL, PRIMARY KEY (Booking#, ShipName, PortName), FOREIGN KEY (Booking#) REFERENCES Booking, FOREIGN KEY (ShipName) REFERENCES Ship, FOREIGN KEY (PortName) REFERENCES Port);

i. Tabel Bring CREATE TABLE Bring (Booking# CHAR (20) NOT NULL,Container# CHAR (15 ) NOT NULL, PRIMARY KEY (Booking#, Container#), FOREIGN KEY (Booking#) REFERENCES Booking, FOREIGN KEY (Container#) REFERENCES Container);

j. Tabel Order CREATE TABLE Order (Booking# CHAR (20) NOT NULL, Exporter# CHAR (10 ) NOT NULL, Deposit NUMBER (15), Amount NUMBER (15) NOT NULL , OrderStatus CHAR (11), PRIMARY KEY (Booking#, Exporter#), FOREIGN KEY (Booking#) REFERENCES Booking, FOREIGN KEY (Exporter#) REFERENCES Exporter) CHECK (OrderStatus IN ('Paid', 'Not Paid') AND Deposit <= Amount));

Page 17: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-17

k. Tabel Container CREATE TABLE Container (Container# CHAR (15) NOT NULL, Type CHAR (8) NO T NULL, Dimension CHAR (9) NOT NULL, PRIMARY KEY (Conta iner#));

l. Tabel Exporter CREATE TABLE Exporter (Exporter# CHAR (10) NOT NULL, ExpName CHAR (20) NOT NULL, Address CHAR (20) NOT NULL, Phone CHAR (12) NOT NULL, PRIMARY KEY (Exporter#));

2. Pembuatan Integrity Constraints

Dalam bahasa SQL*Plus pada paket aplikasi Oracle 8.0, pembuatan batasan integritas dilakukan melalui perintah CREATE TABLE dengan menyertakan constraint clause pada perintah tersebut atau dengan perintah ALTER TABLE dengan menyertakan clause ADD CONTRAINT. Untuk perintah CREATE TABLE (lihat rincian perintahnya pada butir 1 di atas), implementasi keempat aturan integritas dapat dinyatakan sebagai berikut:

1. Domain Rule Dinyatakan melalui CHECK misalnya CHECK (TYPE > 1 AND TYPE <5))

untuk membatasi nilai TYPE pada domain nilai 1, 2, 3 dan 4. 2. Attribute Rule Dinyatakan melalui clause NOT NULL untuk menyatakan bahwa nilai

atribut tidak boleh kosong, dan UNIQUE untuk menyatakan nilai atribut harus unik.

3. Relation Rule Dinyatakan dengan clause CHECK seperti halnya atrutan integritas

domain rule, misalnya CHECK (Amount >= Deposit) untuk menyatakan bahwa nilai atribut Amount lebih besar atau sama dengan Deposit.

4. Database Rule Secara teoritis, seharusnya aturan integritas database rule bisa

dinyatakan dengan clause CHECK dan sub-queries tetapi sampai saat laporan ini dibuat kombinasi clause CHECK dan sub-queries tersebut masih belum dapat diimplementasikan.

Perintah ALTER TABLE dengan clause ADD CONTRAINT digunakan untuk

menyatakan aturan integritas jika aturan tersebut belum dibuat saat proses pembentukan tabel. Sebagai contoh, perintah:

ALTER TABLE Schedule, ADD CONTRAINT Stat_Value, CHECK (Status IN (‘Empty’, ‘Available’, ‘Full’)); digunakan untuk membatasi nilai atribut Status.

Page 18: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-18

3. Pengisian Tabel-tabel Database

Dilaksanakan dengan menggunakan perintah INSERT dengan nilai data (values) diketikkan melalui keyboard. Secara rinci, masing-masing perintah pengisian tabel-tabel database adalah sebagai berikut:

a. Tabel Ship INSERT INTO Ship (ShipName, CallSign, Type) VALUES (&ShipName, &CallSign, &Type);

b. Tabel ShipType INSERT INTO ShipType (Type, Tonage) VALUES (&Type, &Tonage);

c. Tabel Voyage INSERT INTO Voyage (Voyage#, Destination) VALUES (&Voyage, &Destination);

d. Tabel Schedule INSERT INTO Schedule (ShipName, Voyage#, Departur e, Status) VALUES (&ShipName, &Voyage, &Departure, &Status) ;

e. Tabel Route INSERT INTO Route (Voyage#, PortName, Date_of_AD) VALUES (&Voyage, &PortName, &Date_of_AD);

f. Tabel Port INSERT INTO Port (PortName, Country) VALUES (&PortName, &Country);

g. Tabel Booking INSERT INTO Booking (Booking#, BookDate, BookStat us) VALUES (&Booking#, &BookDate, &BookStatus);

h. Tabel Assign INSERT INTO Assign (Booking#, ShipName, PortName) VALUES (&Booking#, &ShipName, &PortName);

i. Tabel Bring INSERT INTO Bring (Booking#, Container#) VALUES (&Booking#, &Container#);

j. Tabel Order INSERT INTO Order (Booking#, Exporter#, Deposit, Amount, OrderStatus) VALUES (&Booking#, &Exporter#, &Deposit, &Amount , &OrderStatus);

k. Tabel Container INSERT INTO Container (Container#, Type, Size) VALUES (&Container, &Type, &Size);

l. Tabel Exporter INSERT INTO Exporter (Expoter#, ExpName, Address, Phone) VALUES (&Expoter#, &ExpName, &Address, &Phone);

Page 19: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-19

4. Update Isi Tabel

Update terhadap isi tabel database adalah proses untuk menyisip (menambah), memperbaiki dan menghapus data ke/dari tabel database. Dalam SQL*Plus pada paket aplikasi Oracle 8.0, ketiga proses tersebut dapat dinyatakan dengan perintah INSERT, UPDATE dan DELETE.

Contoh: Mengubah tonage kapal menjadi 250000 untuk kapal Cape Howe. UPDATE Ship SET Tonage = 250000 WHERE ShipName = ‘ Cape Howe’;

5. Query Informasi Tertentu a. Query Seluruh Isi Tabel

Perintah query seluruh isi tabel adalah SELECT * FROM <tablename>. Secara rinci perintah-perintah query tersebut untuk seluruh tabel yang sudah dibuat adalah:

SET PAGESIZE 100; SELECT * FROM Ship; SELECT * FROM ShipType; SELECT * FROM Voyage; SELECT * FROM Schedule; SELECT * FROM Route; SELECT * FROM Port; SELECT * FROM Booking; SELECT * FROM Assign; SELECT * FROM Bring; SELECT * FROM Order; SELECT * FROM Container; SELECT * FROM Exporter;

b. Query Informasi Tertentu dengan Formula/Kondisi

1. Kapal yang tersedia untuk pelabuhan tertentu (misalnya untuk Rio De Janeiro)

SELECT Sc.ShipName, R.PortName FROM Schedule Sc, Route R WHERE Sc.Voyage# = R.Voyage# AND Sc.Status <> ' Full' AND R.PortName = 'Rio De Janeiro' AND Sc.Departure >= SYSDATE;

2. Kapal yang tersedia ke pelabuhan tertentu pada bulan tertentu SELECT Sc.ShipName, R.PortName FROM Schedule Sc, Route R WHERE Sc.Voyage# = R.Voyage# AND Sc.Status <> ' Full' AND R.PortName = 'Brisbane' AND TRUNC(R.Date_Of_AD, 'MM') = TO_DATE('01/0 5/1999');

Page 20: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-20

3. Daftar petikemas yang sudah dimuat ke atas kapal tertentu (realisasi rencana)

BREAK ON ShipName; SELECT A.ShipName, Br.Container#, B.BookStatus FROM Assign A, Bring Br, Booking B WHERE B.Booking# = A.Booking# AND B.Booking# = Br.Booking# AND B.BookStatus = '3';

4. Daftar petikemas tipe tertentu untuk Melbourne yang ada di kapal tertentu BREAK ON ShipName ON Type; SELECT A.ShipName, Br.Container#, C.Type, B.Book Status FROM Assign A, Bring Br, Booking B, Container C WHERE B.Booking# = A.Booking# AND B.Booking# = Br.Booking# AND Br.Container# = C.Container# AND A.PortName = 'Melbourne' AND B.BookStatus = '3';

5. Daftar eksportir yang telah mengambil peti kemas tapi peti kemasnya tidak

terangkut di pelabuhan (terlambat tiba di pelabuhan) SELECT E.ExpName, B.BookStatus, A.ShipName FROM Exporter E, Booking B, Order O, Assign A , Schedule Sc WHERE B.Booking# = O.Booking# AND E.Exporter# = O.Exporter# AND A.Booking# = B.Booking# AND Sc.ShipName = A.ShipName AND B.BookStatus = '1' AND Sc.Departure < SYSDATE;

6. Daftar booking untuk bulan Juni 1999 SELECT B.Booking#,B.BookDate, E.ExpName,A.ShipNa me,A.PortName FROM Booking B, Order O, Assign A, Exporter E WHERE B.Booking# = O.Booking# AND E.Exporter# = O.Exporter# AND A.Booking# = B.Booking# AND TRUNC(B.BookDate, 'MM') = TO_DATE('01/06/ 1999');

c. Query Informasi Tertentu dengan WHERE, ORDER dan GROUP

1. Daftar jadwal kapal beserta tujuannya BREAK ON ShipName ON Voyage# ON Departure; SELECT Sc.ShipName,Sc.Voyage#,Sc.Departure,R.PortName, r.Date_of_AD FROM Schedule Sc, Route R WHERE Sc.Voyage# = R.Voyage# ORDER BY Sc.ShipName, R.Date_of_AD;

2. Tujuan kapal tertentu (misalnya kapal Seven Seas Chariot) BREAK ON ShipName; SELECT Sc.ShipName, R.PortName FROM Schedule Sc, Route R WHERE Sc.Voyage#=R.Voyage# AND Sc.ShipName='Sev enseas Chariot' ORDER BY R.Date_Of_AD;

Page 21: 7 Perancangan Database

Handout Pengantar Database Toto Suharto

Perancangan Database Halaman VII-21

3. Daftar petikemas yang harus dimuat ke kapal tertentu (dari hasil booking) SELECT A.ShipName, Br.Container#, B.BookStatus FROM Assign A, Bring Br, Booking B WHERE B.Booking# = A.Booking# AND B.Booking# = Br. Booking# AND B.BookStatu s = '1' ORDER BY A.ShipName;

4. Daftar petikemas beserta pemiliknya yang sudah siap dimuat ke atas kapal

tertentu (sudah ada di pelabuhan) BREAK ON ShipName ON ExpName; SELECT A.ShipName, E.ExpName, Br.Container#, B.B ookStatus FROM Assign A, Bring Br, Booking B, Exporter E, Order O WHERE (B.Booking# = A.Booking# AND B.Booking# = Br.Booking# AND B.Booking#=O.Booking#) AND (O.Exporter# = E.Exporter#) AND B.BookSta tus = '2' ORDER BY A.ShipName, E.ExpName;

5. Daftar pendapatan untuk kapal tertentu SELECT A.ShipName, SUM(O.Amount) FROM Order O, Assign A WHERE A.Booking# = O.Booking# AND O.OrderStatus = 'Paid' GROUP BY A.ShipName;