Anda di halaman 1dari 36

bab 5

The Relational Model Data


dan Relational Kendala
database

T bab membuka Bagian 3 dari buku, yang meliputi


database relasional. Model data relasional adalah
pertama kali diperkenalkan oleh Ted Codd dari IBM Research pada tahun 1970
dalam sebuah makalah klasik (Codd, 1970), dan itu menarik perhatian segera
karena kesederhanaan dan dasar matematika. Model ini menggunakan konsep
hubungan-yang matematika terlihat agak seperti tabel nilai-sebagai blok bangunan
dasar, dan memiliki landasan teori di set teori dan orde pertama logika predikat.
Dalam bab ini kita membahas karakteristik dasar dari model dan kendala.
Implementasi komersial pertama dari model relasional menjadi tersedia di awal
1980-an, seperti SQL sistem / DS pada sistem operasi MVS oleh IBM dan Oracle
DBMS. Sejak itu, model telah diterapkan di sejumlah besar sistem komersial, serta
sejumlah sistem open source. populer DBMS relasional komersial saat ini
(RDBMSs) termasuk DB2 (dari IBM), Oracle (dari Oracle), Sybase DBMS
(sekarang dari SAP), dan SQLServer dan Microsoft Access (dari Microsoft).
Selain itu, beberapa sistem open source, seperti MySQL dan PostgreSQL, yang
tersedia.
Karena pentingnya model relasional, semua Bagian 2 dikhususkan untuk model
ini dan beberapa bahasa yang terkait dengan itu. Dalam Bab 6 dan 7, kita
menguraikan beberapa aspek SQL, yang merupakan model yang komprehensif
dan bahasa yang standar untuk DBMS relasional komersial. (Aspek tambahan dari
SQL akan ered cov- dalam bab-bab lainnya.) Bab 8 meliputi operasi aljabar
relasional dan memperkenalkan relasional kalkulus-ini adalah dua bahasa resmi
terkait dengan model relasional. Kalkulus relasional dianggap menjadi dasar untuk
bahasa SQL, dan aljabar relasional digunakan dalam internal banyak implementasi
database untuk pengolahan query dan optimasi (lihat Bagian 8 buku).
149
5.1 Konsep Relational Model 150

Fitur lain dari model relasional disajikan dalam bagian berikutnya dari buku ini.
Bab 9 berkaitan relasional struktur model data untuk konstruksi dari ER dan EER
model (disajikan dalam Bab 3 dan 4), dan menyajikan algoritma untuk merancang
skema database relasional dengan pemetaan skema konseptual dalam ER atau
EER model menjadi representasi relasional . pemetaan ini dimasukkan ke dalam
banyak desain database dan case1 alat. Bab 10 dan 11 di Bagian 4 membahas
teknik pemrograman yang digunakan untuk mengakses sistem database dan
gagasan menghubungkan ke database relasional melalui ODBC dan JDBC
protokol standar. Kami juga memperkenalkan topik pemrograman database Web
dalam Bab 11. Bab 14 dan 15 di Bagian 6 ini aspek lain dari model relasional,
yaitu kendala formal dependensi fungsional dan multivalued;
Dalam bab ini, kami berkonsentrasi pada menjelaskan prinsip-prinsip dasar dari
model relasional data. Kita mulai dengan mendefinisikan konsep pemodelan dan
notasi dari model relasional dalam Bagian 5.1. Bagian 5.2 dikhususkan untuk
diskusi tentang kendala relasional yang dianggap bagian penting dari model
relasional dan secara otomatis diberlakukan di sebagian besar DBMS relasional.
Bagian 5.3 mendefinisikan operasi update dari model relasional, membahas
bagaimana pelanggaran kendala integritas ditangani, dan memperkenalkan konsep
transaksi. Bagian 5.4 merangkum bab ini.
Bab ini dan Bab 8 fokus pada dasar-dasar formal dari model relasional, sedangkan
Bab 6 dan 7 fokus pada SQL model relasional praktis, yang merupakan dasar dari
yang paling komersial dan open source DBMS relasional. Banyak konsep yang
umum antara model formal dan praktis, tetapi beberapa ada perbedaan bahwa
kami akan tunjukkan.

5.1 Relational Konsep Model


Model relasional merupakan database sebagai kumpulan hubungan. Secara
informal, setiap relasi menyerupai tabel nilai atau, sampai batas tertentu, flat file
catatan. Hal ini disebut flat file karena setiap record memiliki struktur linear atau
flat sederhana. Untuk ple exam-, database file yang ditunjukkan pada Gambar 1.2
adalah sama dengan dasar eratnya tional representasi model. Namun, ada
perbedaan penting antara hubungan dan file, seperti yang akan kita lihat.
Ketika relasi dianggap sebagai tabel nilai, setiap baris dalam tabel merupakan
kumpulan nilai-nilai data terkait. Sebuah baris mewakili sebuah fakta yang
biasanya berkaitan dengan entitas dunia nyata atau hubungan. Nama tabel dan
nama kolom yang digunakan untuk membantu menafsirkan makna nilai-nilai
dalam setiap baris. Sebagai contoh, tabel pertama dari Gambar 1.2 disebut
STUDENT karena setiap baris mewakili fakta tentang entitas mahasiswa tertentu.
Nama-nama-nama kolom, Student_number,
1KASUS singkatan dibantu komputer rekayasa perangkat lunak.
5.1 Konsep Relational Model 151

Kelas, dan Mayor menentukan bagaimana menafsirkan nilai-nilai data di setiap baris,
berdasarkan pada kolom setiap nilai dalam. Semua nilai-nilai dalam kolom adalah dari jenis
data yang sama.
Dalam terminologi model relasional formal, berturut-turut disebut tuple, header
kolom disebut atribut, dan meja disebut relasi. Tipe data yang menggambarkan
jenis nilai-nilai yang dapat muncul di setiap kolom diwakili oleh domain dari nilai
yang mungkin. Kita sekarang mendefinisikan istilah-istilah-domain, tuple, atribut,
dan hubungan-formal.

5.1.1 Domain, Atribut, Tuple, dan Hubungan


Sebuah domain D adalah seperangkat nilai-nilai atom. Dengan atom kita berarti
bahwa setiap nilai dalam domain tersebut terbagi sejauh model relasional formal
bersangkutan. Sebuah metode umum menentukan domain adalah untuk
menentukan tipe data dari mana nilai data yang membentuk domain diambil. Hal
ini juga berguna untuk menentukan nama untuk domain, untuk membantu dalam
menafsirkan nilai-nilainya. Beberapa contoh domain ikuti:
■ Usa_phone_numbers. Himpunan nomor telepon sepuluh digit berlaku di
Amerika Serikat.
■ Local_phone_numbers. Himpunan nomor telepon tujuh digit berlaku di dalam
kode area tertentu di Amerika Serikat. Penggunaan nomor telepon lokal
dengan cepat menjadi usang, digantikan oleh nomor standar sepuluh digit.
■ Social_security_numbers. Himpunan sembilan digit nomor Jaminan Sosial
yang valid. (Ini adalah pengenal unik ditugaskan untuk setiap orang di
Amerika Serikat untuk tujuan pekerjaan, pajak, dan manfaat.)
■ nama: The set string karakter yang mewakili nama orang.
■ Grade_point_averages. nilai yang mungkin dari dihitung rata-rata indeks
prestasi; masing-masing harus menjadi nyata (floating-point) angka antara
0 dan 4.
■ Employee_ages. usia mungkin karyawan di sebuah perusahaan; masing-
masing harus menjadi nilai integer antara 15 dan 80.
■ Academic_department_names. Set nama departemen akademik di universitas,
seperti Ilmu Komputer, Ekonomi, dan Fisika.
■ Academic_department_codes. Set kode departemen akademik, seperti 'CS',
'ECON', dan 'Phys'.
mendahului disebut definisi logis dari domain. Sebuah tipe data atau format juga
ditentukan untuk setiap domain. Sebagai contoh, tipe data untuk
Usa_phone_numbers domain dapat dinyatakan sebagai karakter string dari bentuk
(ddd) ddd-dddd, di mana setiap d adalah angka (desimal) digit dan tiga digit
pertama membentuk kode area telepon valid. Jenis data untuk Employee_ages
adalah angka integer antara 15 dan 80. Untuk Academic_department_names, tipe
data adalah himpunan semua string karakter yang mewakili nama-nama
departemen yang valid. Sebuah domain sehingga diberi nama, tipe data, dan
format. Informasi tambahan untuk menafsirkan nilai-nilai domain juga dapat
diberikan; misalnya, domain numerik seperti Person_weights harus memiliki unit
pengukuran, seperti pon atau kilogram.
5.1 Konsep Relational Model 152

Sebuah skema relasi2R, Dinotasikan dengan R (A1, A2, ..., An), terdiri dari nama
relasi R dan daftar atribut, A1, A2, ..., An. Setiap atribut Ai adalah nama dari
sebuah peran yang dimainkan oleh beberapa domain D dalam skema relasi R. D
disebut domain dari Ai dan dilambangkan dengan dom (Ai). Sebuah skema relasi
digunakan untuk menggambarkan relasi; R disebut nama dari relasi ini. Tingkat
(atau arity) dari relasi adalah jumlah atribut n dari skema relasi-nya.
Sebuah hubungan tingkat tujuh, yang menyimpan informasi tentang mahasiswa,
akan berisi tujuh atribut yang menjelaskan setiap siswa sebagai berikut:
STUDENT (Nama, SSN, Home_phone, Alamat, Office_phone, Umur, Gpa)
Menggunakan tipe data setiap atribut, definisi ini kadang-kadang ditulis sebagai:
Nama siswa: tali, SSN: tali, Telepon rumah: tali, Alamat: tali, Office_phone:
tali, Umur: bilangan bulat, Gpa: nyata)
Untuk skema relasi ini, SISWA adalah nama dari relasi, yang memiliki tujuh
atribut. Dalam definisi sebelumnya, kami menunjukkan tugas dari jenis
generik seperti string atau integer untuk atribut. Lebih tepatnya, kita dapat
menentukan berikut domain ditetapkan sebelumnya untuk beberapa atribut
dariSISWA hubungan: dom (Nama) = nama; dom (ssn) = Social_security_numbers;
dom (Telepon rumah ) = USA_phone_numbers3, Dom (Office_phone) =
USA_phone_numbers , Dan dom (Gpa) = Grade_point_averages . Hal ini juga
memungkinkan untuk merujuk kepada atribut dari skema relasi dengan posisi
mereka dalam relasi; dengan demikian, atribut kedua SISWA tion eratnya
adalahssn, Sedangkan atribut keempat adalah Alamat.
Suatu relasi (atau negara bagian hubungan)4rdari skema relasi R (A1, A2, ..., An),
juga dinotasikan dengan r (R), adalah satu set n-tupel r = {t1, t2, ..., tm}. Setiap t
n-tuple adalah daftar ordered n nilai t = v1, v2, ..., vn , dimana setiap nilai vi, 1
i ≤ n, merupakan elemen dari dom (Ai) atau khususBATAL nilai. (BATAL nilai-nilai
dibahas lebih lanjut di bawah ini dan dalam Bagian 5.1.2.) Nilai engan di tuple t,
yang sesuai dengan atribut Ai, disebut sebagai t [Ai] atau t.Ai (atau t [i] jika kita
menggunakan notasi posisional ). Istilah hubungan kehebatan untuk skema R dan
perluasan hubungan untuk r relasi negara (R) juga sering digunakan.
Angka 5.1 menunjukkan contoh hubungan STUDENT, yang sesuai dengan
skema STUDENT hanya ditentukan. Setiap tuple dalam relasi merupakan
entitas mahasiswa tertentu (atau objek). Kami menampilkan relasi sebagai
tabel, dimana setiap tupel ditampilkan sebagai baris dan setiap atribut sesuai
dengan header kolom menunjukkan peran atau interpretasi dari nilai-nilai
dalam kolom tersebut. nilai NULL mewakili atribut yang nilainya tidak
diketahui atau tidak ada untuk beberapa tuple STUDENT individu.
2Sebuah skema relasi kadang-kadang disebut skema relasi.
3Dengan peningkatan besar dalam nomor telepon yang disebabkan oleh proliferasi ponsel, paling
metropol- daerah Itan di Amerika Serikat sekarang memiliki beberapa kode area, sehingga tujuh-digit
panggilan lokal telah dihentikan di sebagian besar wilayah. Kami mengubah domain ini untuk
Usa_phone_numbers bukan nomor Local_phone_, yang akan menjadi pilihan yang lebih umum. Ini
menggambarkan bagaimana persyaratan database dapat berubah dari waktu ke waktu.
4Inijuga telah disebut hubungan misalnya. Kami tidak akan menggunakan istilah ini karenacontoh
juga digunakan untuk merujuk kepada tupel atau baris.
5.1 Konsep Relational Model 153

hubungan atribut
Nama

SISWA
Nama ssn Telepon rumah Alamat Office_phone Usia Gpa
Benjamin Bayer 305-61-2435 (817)373-1616 2918 Bluebonnet Lane BATAL 19 3.21
Chung-cha Kim 381-62-1245 (817)375-4409 125 Kirby Jalan BATAL 18 2,89
tupel Dick Davidson 422-11-2320 BATAL 3452 Elgin Jalan (817)749-1253 25 3.53
Rohan Panchal 489-22-1100 (817)376-9821 265 Lark Lane (817)749-6492 28 3,93
Barbara Benson 533-69-1238 (817)839-8461 7384 Fontana Lane BATAL 19 3,25

Gambar 5.1
Atribut dan tuple dari relasi STUDENT.

Definisi sebelumnya relasi dapat disajikan kembali secara lebih formal


menggunakan konsep teori ditetapkan sebagai berikut. Suatu relasi (atau negara
bagian hubungan) r (R) adalah relasi matematika derajat n pada domain dom (A1),
dom (A2), ..., dom (An), yang merupakan bagian dari produk Cartesian
(dilambangkan dengan × ) dari domain yang mendefinisikan R:
r(R) (dom (A1) dom (A2) ... (dom (An))
Produk Cartesian menentukan semua kemungkinan kombinasi dari nilai-nilai dari
domain berbaring di bawah-. Oleh karena itu, jika kita menunjukkan jumlah total
nilai, atau kardinalitas, dalam domain D oleh | D | (Dengan asumsi bahwa semua
domain yang terbatas), jumlah tupel dalam produk Cartesian adalah
| Dom (A1) | | dom (A2) | ... | dom (An) |
produk ini dari kardinalitas dari semua domain mewakili jumlah total
kemungkinan kasus atau tupel yang dapat pernah ada dalam setiap r relasi negara
(R). Dari semua kombinasi ini mungkin, keadaan hubungan pada waktu tertentu-
hubungan saat ini negara-hanya mencerminkan tupel yang valid yang mewakili
negara tertentu dari dunia nyata. Secara umum, sebagai negara dunia nyata
berubah, begitu juga dengan negara relasi, dengan berubah menjadi negara relasi
lain. Namun, skema R relatif statis dan perubahan yang sangat jarang-misalnya,
sebagai akibat dari penambahan atribut untuk mewakili informasi baru yang
awalnya tidak disimpan dalam relasi.
Hal ini dimungkinkan karena beberapa atribut memiliki domain yang sama.
Nama-nama atribut puncak-peran cate yang berbeda, atau interpretasi, untuk
domain. Sebagai contoh, di SISWA relasi, domain yang
samaUSA_phone_numbersmemainkan perandariTelepon rumah, merujukke telepon
rumah dari mahasiswa, dan peran Office_phone, Mengacu pada telepon kantor
siswa. Kemungkinan Atribut ketiga (tidak ditampilkan) dengan domain yang
sama bisaTelepon genggam.

5.1.2 Karakteristik Hubungan


Definisi awal hubungan menyiratkan karakteristik tertentu yang membuat tion
eratnya berbeda dari sebuah file atau tabel. Kita sekarang membahas beberapa
karakteristik ini.
5.1 Konsep Relational Model 154

Pemesanan tupel dalam Hubungan a. Suatu relasi didefinisikan sebagaiset tupel.


Math- ematically, elemen suatu himpunan tidak memiliki urutan di antara mereka;
maka, tupel dalam relasi tidak memiliki urutan tertentu. Dengan kata lain, relasi
tidak sensitif terhadap urutan tupel. Namun, dalam sebuah file, catatan fisik
disimpan pada disk (atau memori), sehingga selalu ada perintah di antara catatan.
pemesanan ini menunjukkan pertama, kedua, engan, dan catatan terakhir dalam
file. Demikian pula, ketika kita menampilkan hubungan sebagai tabel, baris
ditampilkan dalam urutan tertentu.
tupel memesan bukan bagian dari definisi hubungan karena relasi mencoba untuk
mewakili keadaan fakta membenci pada tingkat logis atau abstrak. Banyak
pesanan tuple dapat ditentukan pada relasi yang sama. Sebagai contoh, tupel
dalam relasi STUDENT pada Gambar 5.1 bisa dipesan oleh nilai-nilai dari Nama,
SSN, Umur, atau atribut lainnya. Definisi tion eratnya tidak menentukan urutan
apapun: Tidak ada preferensi untuk satu pemesanan di atas yang lain. Oleh karena
itu, hubungan yang ditampilkan dalam Gambar 5.2 dianggap identik dengan yang
ditunjukkan pada Gambar 5.1. Ketika relasi diimplementasikan sebagai file atau
ditampilkan sebagai meja, memesan tertentu dapat ditentukan pada catatan file
atau deretan meja.

Memerintah Nilai-Nilai dalam Tuple dan Definisi Alternatif Hubungan a. Menurut


definisi sebelumnya dari hubungan, sebuahn-tuple adalah daftar ordered nilai n,
sehingga pemesanan nilai dalam sebuah tuple-dan karenanya atribut dalam relasi
skema-penting. Namun, pada tingkat yang lebih abstrak, urutan atribut dan nilai-
nilai mereka tidak begitu penting selama korespondensi antara atribut dan nilai-
nilai dipertahankan.
Definisi alternatif dari suatu relasi dapat diberikan, membuat pemesanan nilai
dalam sebuah tuple yang tidak perlu. Dalam definisi ini, sebuah skema relasi R =
{A1, A2, ..., An} adalah satu set atribut (bukan daftar memerintahkan atribut), dan
r hubungan negara (R) adalah himpunan berhingga dari pemetaan r = { t1, t2, ...,
tm}, di mana setiap ti tuple adalah pemetaan dari R ke D, dan D adalah gabungan
(dilambangkan dengan ) dari domain atribut; yaitu, D = dom (A1) dom (A2)
... dom (An). Dalam definisi ini, t [Ai] harus dalam dom (Ai) untuk 1 i ≤ n
untuk setiap t pemetaan di r. Setiap ti pemetaan disebut tupel.
Menurut definisi ini dari tuple sebagai pemetaan, tupel dapat dianggap sebagai
satu set (<atribut>, <value>) pasangan, di mana setiap pasangan memberikan nilai
pemetaan dari atribut Ai ke vi nilai dari dom ( ai). Urutan atribut tidak penting,
karena nama atribut muncul dengan nilainya. Dengan definisi ini,

Gambar 5.2
Relasi STUDENT dari Gambar 5.1 dengan urutan yang berbeda dari tupel.

SISWA
Nama ssn Telepon rumah Alamat Office_phone Usia Gpa
Dick Davidson 422-11-2320 BATAL 3452 Elgin Jalan (817)749-1253 25 3.53
Barbara Benson 533-69-1238 (817)839-8461 7384 Fontana Lane BATAL 19 3,25
Rohan Panchal 489-22-1100 (817)376-9821 265 Lark Lane (817)749-6492 28 3,93
Chung-cha Kim 381-62-1245 (817)375-4409 125 Kirby Jalan BATAL 18 2,89
Benjamin Bayer 305-61-2435 (817)373-1616 2918 Bluebonnet Lane BATAL 19 3.21
5.1 Konsep Relational Model 155

t = <(Nama, Dick Davidson), (SSN, 422-11-2320), (Home_phone, NULL), (Alamat, 3452 Elgin
Jalan), (Office_phone, (817) 749-1253), (Umur, 25), (GPA, 3,53)>

t = <(Alamat, 3452 Elgin Jalan), (Nama, Dick Davidson), (SSN, 422-11-2320), (Umur,
25), (Office_phone, (817) 749-1253), (GPA, 3,53), (Home_phone,
NULL)>

Gambar 5.3
Dua tupel identik ketika urutan atribut dan nilai-nilai bukan merupakan bagian dari definisi hubungan.

dua tupel yang ditunjukkan pada Gambar 5.3 adalah identik. Ini masuk akal pada
tingkat abstrak, karena benar-benar ada alasan untuk lebih memilih memiliki satu
nilai atribut muncul sebelum lain dalam sebuah tuple. Ketika nama atribut dan
nilai termasuk bersama-sama dalam sebuah tuple, diketahui sebagai data self-
describing, karena deskripsi setiap nilai (atribut nama) termasuk dalam tupel.
Kami sebagian besar akan menggunakan definisi pertama dari hubungan, di mana
atribut diperintahkan dalam skema relasi dan nilai-nilai dalam tuple yang sama
memerintahkan, karena menyederhanakan banyak notasi. Namun, definisi
alternatif yang diberikan di sini lebih general.5

Nilai-nilai dan NULLs di tupel. Setiap nilai dalam tuple adalahatom nilai; yaitu,
tidak dibagi menjadi komponen-komponen dalam kerangka model relasional
dasar. Oleh karena itu, atribut komposit dan multivalued (lihat Bab 3) tidak
diperbolehkan. Model ini kadang-kadang disebut model relasional datar. Banyak
teori di balik model relasional dikembangkan dengan asumsi ini dalam pikiran,
yang disebut normal pertama bentuk assumption.6 Oleh karena itu, multivalued
atribut harus diwakili oleh hubungan yang terpisah, dan atribut komposit diwakili
hanya oleh komponen sederhana mereka atribut di .7 relasional dasar
Sebuah konsep penting adalah bahwa dari nilai-nilai NULL, yang digunakan untuk mewakili
nilai-nilai atribut yang mungkin tidak diketahui atau mungkin tidak berlaku untuk tupel. Sebuah
nilai khusus, yang disebut NULL, digunakan dalam kasus ini. Sebagai contoh, pada Gambar 5.1,
beberapa tupel SISWA harus NULL untuk ponsel kantor mereka karena mereka tidak memiliki
kantor (yaitu, telepon kantortidak berlaku kepada siswa tersebut). Siswa lain
memilikiNULL untuk telepon rumah, presum- cakap karena baik dia tidak
memiliki telepon rumah atau dia memiliki satu tapi kita tidak tahu itu (nilai tidak
diketahui). Secara umum, kita dapat memiliki beberapa arti nilai-nilai NULL,
seperti nilai yang tidak diketahui, nilai ada tapi tidak tersedia, atau atribut tidak
berlaku untuk tuple ini (juga dikenal sebagai nilai terdefinisi). Contoh dari jenis
terakhir NULL akan terjadi jika kita menambahkan atribut Visa_status untuk
hubungan STUDENT yang hanya berlaku untuk tupel repre- mahasiswa asing
senting. Hal ini dimungkinkan untuk merancang kode yang berbeda untuk arti
yang berbeda dari
5Kami akan menggunakan definisi alternatif hubungan ketika kita membahas pemrosesan query dan
optimasi pada Bab 18.
6Kami membahas asumsi ini secara lebih rinci dalam Bab 14.
7Ekstensi dari model relasional menghapus pembatasan ini.Sebagai contoh, sistem objek-relasional (Bab
12) memungkinkan atribut kompleks terstruktur, seperti melakukan bentuk normal non-pertama atau
model relasional bersarang.
5.1 Konsep Relational Model 156

nilai-nilai NULL. Menggabungkan berbagai jenis nilai NULL ke dalam model relasional tions
opera- telah terbukti sulit dan berada di luar lingkup presentasi kami.
Makna yang tepat dari nilai NULL mengatur bagaimana tarif selama aritmatika
tions aggrega- atau perbandingan dengan nilai-nilai lain. Sebagai contoh,
perbandingan dua nilai NULL menyebabkan ambiguitas-jika kedua Nasabah A
dan B memiliki alamat NULL, itu tidak berarti mereka memiliki alamat yang
sama. Selama desain database, yang terbaik adalah untuk menghindari nilai-nilai
NULL sebanyak mungkin. Kami akan membahas ini lebih lanjut dalam Bab 7 dan
8 dalam konteks operasi dan query, dan dalam Bab 14 dalam konteks desain
database dan normalisasi.

Interpretasi (Arti) Hubungan a. The skema relasi dapat diartikan sebagai deklarasi
atau jenistuntutan. Sebagai contoh, skema relasi STUDENT dari Gambar 5.1
menegaskan bahwa, secara umum, entitas mahasiswa memiliki Nama, SSN,
Home_phone, Alamat, Office_phone, Umur, dan Gpa. Setiap tuple dalam relasi
kemudian dapat diartikan sebagai fakta atau contoh khusus dari pernyataan.
Sebagai contoh, tuple pertama pada Gambar 5.1 menegaskan fakta bahwa ada
STUDENT yang Nama adalah Benjamin Bayer, SSN adalah 305-61-2435, Umur
19, dan seterusnya.
Perhatikan bahwa beberapa hubungan dapat mewakili fakta tentang entitas,
sedangkan hubungan lain mungkin mewakili fakta tentang hubungan. Sebagai
contoh, sebuah skema relasi JURUSAN (Student_ssn, Department_code)
menegaskan bahwa siswa utama dalam disiplin akademis. Sebuah tuple dalam
relasi ini berkaitan siswa untuk disiplin utama nya. Oleh karena itu, model
relasional merupakan fakta tentang kedua entitas dan hubungan seragam sebagai
hubungan. Hal ini terkadang kompromi dimengerti karena salah satu harus
menebak apakah relasi merupakan tipe entitas atau tipe hubungan. Kami
memperkenalkan relasi entitas (ER) Model secara rinci dalam Bab 3, di mana
entitas dan hubungan konsep yang dijelaskan secara rinci. Prosedur pemetaan
dalam Bab 9 menunjukkan bagaimana konstruksi yang berbeda dari ER / EER
model data konseptual (lihat Bagian 2) bisa dikonversi ke hubungan.
Interpretasi alternatif dari skema relasi adalah sebagai predikat; dalam hal ini,
nilai-nilai dalam setiap tuple diinterpretasikan sebagai nilai-nilai yang
memenuhi predikat. Misalnya, predikat STUDENT (Nama, SSN, ...) adalah
benar untuk lima tupel dalam kaitannya STUDENT dari Gambar 5.1. tupel ini
mewakili lima proposisi yang berbeda atau fakta di dunia nyata. Penafsiran ini
cukup berguna dalam konteks pemrograman logis
bahasa, seperti Prolog, karena memungkinkan model relasional untuk
digunakan dalambahasa ini (lihat Bagian 26,5).Asumsi yang disebut asumsi dunia
tertutup menyatakan bahwa satu-satunya fakta yang benar di alam semesta adalah
mereka yang hadir dalam ekstensi (negara) dari hubungan (s). Kombinasi lainnya
dari nilai-nilai yang membuat palsu predikat. Penafsiran ini berguna ketika kita
mempertimbangkan pertanyaan tentang hubungan berdasarkan kalkulus relasional
dalam Bagian 8.6.

5.1.3 Relational Model Notasi


Kami akan menggunakan notasi berikut dalam presentasi kami:
5.1 Konsep Relational Model 157
■ Sebuah skema relasi R dari tingkat n dilambangkan dengan R (A1, A2, ..., An).
■ Huruf besar Q, R, S menunjukkan nama relasi.
■ Huruf kecil q, r, s menunjukkan negara relasi.
■ Surat-surat t, u, v menunjukkan tupel.
■ Secara umum, nama sebuah skema relasi seperti SISWA juga menunjukkan
set saat tupel dalam relasi-relasi saat ini negara-sedangkanSISWA(Nama. ssn,
...) hanya merujuk pada skema relasi.
■ Sebuah atribut A dapat memenuhi syarat dengan nama relasi R mana ia
berasal dengan menggunakan notasi titik RA-misalnya,Nama siswa atau
STUDENT.Age. Hal ini karena nama yang sama dapat digunakan untuk dua
butes attri- dalam hubungan yang berbeda. Namun, semua nama atribut
dalam relasi tertentu harus berbeda.
■ Sebuah t n-tuple dalam relasi r (R) dilambangkan dengan t = v1, v2, ...,
vn , di mana vi adalah nilai yang sesuai dengan atribut Ai. Notasi berikut
mengacu pada nilai-nilai komponen tupel:
 Kedua t [Ai] dan t.Ai (dan kadang-kadang t [i]) mengacu pada nilai vi di
t untuk attri- bute Ai.
 Kedua t [Au, Aw, ..., Az] dan t. (Au, Aw, ..., Az), di mana Au, Aw, ...,
Az adalah daftar atribut dari R, mengacu pada subtuple nilai vu, vw ,
..., vz dari t sesuai dengan atribut yang ditetapkan dalam daftar.
Sebagai contoh, mempertimbangkan tupel t = < 'Barbara Benson', '533-69-1238',
'(817) 839-8461', '7384 Fontana Lane', NULL, 19, 3,25> dari hubungan
STUDENT di angka yang cukup 5.1; kita memiliki t [Nama] = < 'Barbara
Benson'>, dan t [SSN, GPA, Umur] = < '533-69-1238', 3,25, 19>.

5.2 Kendala Model relasional


dan Relational Skema database
Sejauh ini, kita telah membahas karakteristik hubungan tunggal. Dalam basis data-
relasional, ada biasanya akan banyak hubungan, dan tupel dalam hubungan
mereka biasanya terkait dengan berbagai cara. Keadaan seluruh database akan
sesuai dengan negara-negara dari semua hubungan yang pada titik tertentu dalam
waktu. Ada umumnya banyak pembatasan atau kendala pada nilai yang
sebenarnya dalam keadaan basis data. Kendala ini berasal dari aturan dalam
miniworld bahwa database mewakili, seperti yang kita didiskusikan dalam Bagian
1.6.8.
Pada bagian ini, kita membahas berbagai pembatasan pada data yang dapat
ditentukan pada database relasional dalam bentuk kendala. Kendala pada database
dapat Star Excursion Balance Test sekutu dibagi menjadi tiga kategori utama:
1. Kendala yang melekat dalam model data. Kami menyebutnya melekat
kendala model berbasis atau kendala implisit.
2. Kendala yang dapat langsung dinyatakan dalam skema model data, Cally typi-
dengan menentukan mereka dalam DDL (data bahasa definisi, lihat Bagian
2.3.1). Kami menyebutnya kendala berbasis skema ini atau kendala eksplisit.
3. Kendala yang tidak bisa langsung dinyatakan dalam skema model data, dan
karenanya harus dinyatakan dan ditegakkan oleh aplikasi gram pro atau
dalam beberapa cara lain. Kami menyebutnya kendala aplikasi berbasis
atau semantik ini atau aturan bisnis.
Karakteristik hubungan yang kita bahas dalam Bagian 5.1.2 adalah kendala yang
melekat pada model relasional dan termasuk dalam kategori pertama. Sebagai
contoh, kendala yang relasi tidak dapat memiliki duplikat tupel adalah kendala
yang melekat. Kendala kita bahas dalam bagian ini adalah dari kategori kedua,
yaitu, kendala yang dapat dinyatakan dalam skema model relasional melalui DDL.
Kendala dalam kategori ketiga adalah lebih umum, berhubungan dengan makna
serta perilaku atribut, dan sulit untuk mengekspresikan dan menegakkan dalam
model data, sehingga mereka biasanya diperiksa dalam program aplikasi yang
melakukan update database. Dalam beberapa kasus, kendala-kendala tersebut
dapat ditetapkan sebagai pernyataan di SQL (lihat Bab 7).
Kategori lain yang penting dari kendala adalah dependensi data, yang meliputi
dependensi fungsional dan multivalued dependensi. Mereka digunakan terutama
untuk menguji “kebaikan” dari desain database relasional dan digunakan dalam
proses yang disebut normalisasi, yang dibahas dalam Bab 14 dan 15.
Kendala berbasis skema termasuk kendala domain, kendala utama, kendala pada
NULLs, kendala integritas entitas, dan batasan integritas referensial.

5.2.1 Kendala domain


kendala domain menentukan bahwa dalam setiap tuple, nilai masing-masing atribut
A harus menjadi nilai atom dari domain dom (A). Kita telah membahas cara-cara
di mana domain dapat ditentukan dalam Bagian 5.1.1. Jenis data yang terkait
dengan domain biasanya mencakup standar tipe data numerik untuk bilangan bulat
(seperti integer pendek, integer, dan integer panjang) dan bilangan real (float dan
double-presisi float). Karakter, Booleans, string tetap-panjang, dan string variabel-
panjang juga avail- mampu, seperti tanggal, waktu, timestamp, dan tipe data
khusus lainnya. Domain juga dapat digambarkan oleh subrange dari nilai-nilai dari
tipe data atau sebagai tipe data enumerated di mana semua nilai yang mungkin
secara eksplisit tercantum. Daripada menjelaskan ini secara rinci di sini, kita
membahas tipe data yang ditawarkan oleh SQL standar relasional dalam Bagian
6.1.

5.2.2 Kendala utama dan Kendala Nilai NULL


Dalam model relasional formal, relasi didefinisikan sebagai himpunan tupel.
Menurut definisi, semua elemen dari suatu himpunan yang berbeda; oleh karena
itu, semua tupel dalam relasi juga harus berbeda. Ini berarti bahwa tidak ada dua
tupel dapat memiliki kombinasi yang sama dari nilai-nilai untuk semua atribut
mereka. Biasanya, ada subset lain atribut dari skema relasi R dengan properti yang
tidak ada dua tupel dalam r kaitannya keadaan R harus memiliki kombinasi yang
sama dari nilai-nilai untuk atribut ini. Misalkan kita nyatakan salah satu bagian
seperti atribut oleh SK; maka untuk setiap dua tupel yang berbeda t1 dan t2 dalam
r relasi keadaan R, kita memiliki kendala bahwa:
t1 [SK] t2 [SK]
Setiap set seperti atribut SK disebut superkey dari skema relasi R. A superkey SK
menentukan kendala keunikan yang tidak ada dua tupel yang berbeda di setiap r
keadaan R dapat memiliki nilai yang sama untuk SK. Setiap hubungan memiliki
setidaknya satu standar superkey- himpunan semua atributnya. Sebuah superkey
dapat memiliki atribut berlebihan, bagaimanapun, jadi konsep yang lebih berguna
adalah bahwa dari kunci, yang tidak memiliki redundansi. Sebuah k kunci dari
skema relasi R adalah superkey dari R dengan properti tambahan yang menghapus
setiap bute attri- A dari K meninggalkan satu set atribut K yang bukan
merupakan superkey dari R lagi. Oleh karena itu, kunci memenuhi dua sifat:
1. Dua tupel berbeda dalam setiap keadaan relasi tidak dapat memiliki nilai
yang identik untuk (semua) atribut dalam kunci. Properti Keunikan ini juga
berlaku untuk superkey.
2. Ini adalah minimal superkey-yaitu, sebuah superkey dari mana kita tidak
dapat menghapus atribut apapun dan masih memiliki kendala terus
keunikan. Properti minimalitas ini diperlukan untuk kunci tetapi opsional
untuk superkey.
Oleh karena itu, kunci adalah superkey namun tidak sebaliknya. Sebuah superkey
mungkin kunci (jika minimal) atau mungkin tidak kunci (jika tidak minimal).
Pertimbangkan hubungan STUDENT dari Gambar 5.1. Atribut set {SSN} adalah
kunci dari SISWA karena tidak ada dua tupel siswa dapat memiliki nilai yang
sama untuk Ssn.8 Setiap set atribut yang termasuk SSN-misalnya, {SSN, Nama,
Umur} -adalah superkey. Namun, superkey yang {SSN, Nama, Umur} bukan
merupakan kunci dari SISWA karena menghilangkan Nama atau Umur atau
keduanya dari set masih meninggalkan kita dengan superkey. Secara umum, setiap
superkey terbentuk dari atribut tunggal juga kunci. Kunci dengan beberapa atribut
harus membutuhkan semua atributnya bersama-sama untuk memiliki properti
keunikan.
Nilai dari atribut kunci dapat digunakan untuk mengidentifikasi secara unik setiap
tuple di tion eratnya. Sebagai contoh, nilai SSN 305-61-2435 mengidentifikasi
secara unik tuple sponding corre- ke Benjamin Bayer dalam hubungan
STUDENT. Perhatikan bahwa satu set atribut yang merupakan kunci adalah
properti dari skema relasi; itu merupakan kendala yang harus berpegang pada
setiap negara bagian hubungan yang sah dari skema. Kunci ditentukan dari ing
mean dari atribut, dan properti adalah waktu-invarian: Ini harus terus memegang
ketika kita memasukkan tupel baru dalam hubungan. Sebagai contoh, kita tidak
bisa dan tidak menunjuk atribut Nama relasi STUDENT pada Gambar 5.1 sebagai
kunci karena ada kemungkinan bahwa dua siswa dengan nama-nama yang identik
akan ada di beberapa titik dalam state.9 valid
Secara umum, skema relasi dapat memiliki lebih dari satu kunci. Dalam hal ini,
masing-masing tombol disebut kunci kandidat. Misalnya, hubungan CAR pada
Gambar 5.4 memiliki dua tombol kandidat: License_number dan
Engine_serial_number. Hal ini umum untuk menunjuk salah satu kunci kandidat
sebagai primary key dari relasi. Ini adalah kunci kandidat yang nilainya digunakan
untuk mengidentifikasi tupel dalam relasi. Kami menggunakan konvensi bahwa
atribut yang membentuk kunci utama dari skema relasi digarisbawahi, seperti
yang ditunjukkan pada Gambar 5.4. Perhatikan bahwa ketika skema relasi
memiliki beberapa kunci kandidat,
8Perhatikan bahwa SSN juga superkey.
9Nama kadang-kadang digunakan sebagai tombol, tetapi kemudian beberapa artefak-seperti
menambahkan ordinal nomor harus digunakan untuk membedakan antara orang dengan nama yang
sama.
MOBIL
Nomor lisensi Engine_serial_number Membuat Tahu
Model
n
Texas ABC-739 A69352 Mengarungi mustang 02
Florida TVP-347 B43696 Oldsmobile Pedang 05
Gambar 5.4
pendek
CAR hubungan, dengan
New York MPO-22 X83554 Oldsmobile Delta 01
dua tombol kandidat:
License_number dan California 432-TFY C43742 Mercedes 190-D 99
Engine_serial_number. California RSK-629 Y82935 Toyota Camry 04
Texas RSK-629 U028365 Jaguar XJS 04
pilihan seseorang untuk menjadi kunci utama adalah agak sewenang-wenang;
Namun, biasanya lebih baik untuk memilih primary key dengan atribut tunggal
atau sejumlah kecil atribut. Kunci kandidat lainnya yang ditunjuk sebagai kunci
unik dan tidak digarisbawahi.
Kendala lain pada atribut menentukan apakah nilai-nilai NULL berada atau
tidak per- mitted. Misalnya, jika setiap STUDENT tuple harus memiliki, non-
NULL nilai yang valid untuk atribut Nama, maka Nama dari STUDENT
dibatasi menjadi NOT NULL.

5.2.3 Database relasional dan relasional


Skema database
Definisi dan batasan yang telah kita bahas sejauh berlaku untuk hubungan tunggal
dan atribut mereka. Sebuah database relasional biasanya berisi banyak hubungan,
dengan tupel dalam hubungan yang terkait dengan berbagai cara. Pada bagian ini,
kita mendefinisikan database relasional dan skema database relasional.
Sebuah relasional skema database S adalah satu set hubungan skema S = {R1, R2,
..., Rm} dan satu set kendala integritas IC. Sebuah database state10 DB relasional
dari S adalah satu set hubungan menyatakan DB = {r1, r2, ..., rm} sehingga setiap
ri adalah keadaan Ri dan sehingga negara-negara relasi ri memenuhi batasan
integritas yang ditetapkan dalam IC. Gambar 5.5 menunjukkan skema database
relasional yang kita sebut PERUSAHAAN = {KARYAWAN, DEPARTEMEN,
DEPT_LOCATIONS, PROYEK, WORKS_ON, TERGANTUNG}. Dalam setiap
skema relasi, atribut yang digarisbawahi merupakan kunci utama. Gambar 5.6
menunjukkan keadaan database relasional yang sesuai dengan skema
PERUSAHAAN. Kami akan menggunakan skema ini dan negara database dalam
bab ini dan dalam Bab 4 sampai 6 untuk mengembangkan permintaan sampel
dalam bahasa relasional yang berbeda.
Ketika kita merujuk ke database relasional, kita secara implisit mencakup skema
dan kondisi saat ini. Sebuah negara database yang tidak mematuhi semua kendala
integritas adalah
10Sebuah database relasional negara kadang-kadang disebut database relasional foto atau contoh.
Namun, seperti yang telah disebutkan sebelumnya, kami tidak akan menggunakan istilahcontohkarena
itu juga berlaku untuk tupel tunggal.
EMPLOYEE
fname Minit lname ssn Bdate Alamat Seks Gaji Super_ssn DNO

BERANGKATMTHT
dname Dnumber Mgr_ssn Mgr_start_dat
e

DEPT_LOCATIONS
Dnumber Dlocation

PROYEK
pname Pnumber Plocation Dnum

WORKS_ON
Essn PNO Jam
Gambar 5.5
TERGANTUN diagram skema untuk
GEssn PERUSAHAAN relasional
Dependent_name Seks Bdate Hubungan skema database.

disebut tidak sah, dan negara yang memenuhi semua kendala di set didefinisikan
kendala integritas IC disebut keadaan valid.
Pada Gambar 5.5, Dnumber atribut di kedua DEPARTMENT dan
DEPT_LOCATIONS singkatan yang sama dunia nyata konsep-nomor yang
diberikan kepada departemen. Itu konsep yang sama disebut DNO di EMPLOYEE
dan Dnum di PROJECT. Atribut yang mewakili konsep dunia nyata yang sama
mungkin atau mungkin tidak memiliki nama identik dalam hubungan ferent dif-.
Atau, atribut yang mewakili konsep yang berbeda mungkin memiliki nama yang
sama dalam hubungan yang berbeda. Sebagai contoh, kita bisa menggunakan
nama atribut Nama untuk kedua pname dari PROYEK dan DNAME dari
DEPARTMENT; dalam hal ini, kita akan memiliki dua atribut yang memiliki
nama yang sama tetapi mewakili berbagai nama dunia nyata konsep-proyek dan
nama departemen.
Dalam beberapa versi awal dari model relasional, asumsi dibuat bahwa konsep
dunia nyata yang sama, ketika diwakili oleh atribut, akan memiliki nama atribut
identik dalam semua hubungan. Hal ini menciptakan masalah ketika konsep dunia
nyata yang sama digunakan dalam peran yang berbeda (makna) dalam hubungan
yang sama. Misalnya, konsep nomor Jaminan Sosial muncul dua kali dalam relasi
EMPLOYEE dari Gambar 5.5: sekali dalam peran SSN karyawan, dan sekali
dalam peran SSN supervisor. Kita dituntut untuk memberi mereka nama-SSN
atribut yang berbeda dan Super_ssn, masing-masing-karena mereka muncul dalam
relasi yang sama dan untuk membedakan makna mereka.
Setiap DBMS relasional harus memiliki bahasa definisi data (DDL) untuk
mendefinisikan skema database relasional. DBMSs relasional saat ini sebagian
besar menggunakan SQL untuk tujuan ini. Kami menyajikan SQL DDL dalam
Bagian 6.1 dan 6.2.
5.2 Kendala Model Relasional dan Relational Skema database 163

Gambar 5.6
Salah satu negara database mungkin untuk PERUSAHAAN relasional skema database.
EMPLOYEE
fname Minit lname ssn Bdate Alamat Seks Gaji Super_ssn DN
O
John B pandai 123456789 1965/01/09 731Fondren, Houston, TX M 30000 333445555 5
besi
Franklin T wong 333445555 1955/12/08 638 Voss, Houston, TX M 40000 888665555 5
Alicia J Zelaya 999887777 1968/01/19 3321 Castle, Spring, TX F 25000 987654321 4
Jennifer S wallace 987654321 1941/06/20 291 Berry, Bellaire, TX F 43000 888665555 4
Ramesh K Narayan 666884444 1962/09/15 975 Fire Oak, Humble, TX M 38000 333445555 5
Joyce SEBU Inggris 453453453 1972/07/31 5631 Beras, Houston, TX F 25000 333445555 5
AH
Ahmad V Jabbar 987987987 1969/03/29 980 Dallas, Houston, TX M 25000 987654321 4
James E Borg 888665555 1937/11/10 450 Batu, Houston, TX M 55000 BATAL 1

BERANGKATMTHT DEPT_LOCATIONS
dname Dnumber Mgr_ssn Mgr_start_dat Dnumber Dlocation
e 1 Houston
Penelitian 5 333445555 1988/05/22
4 Stafford
Administrasi 4 987654321 1995/01/01
5 Bellaire
Markas besar 1 888665555 1981/06/19
5 Sugarland
5 Houston

Essn PNO Jam pname Pnumber Plocation Dnum


123456789 1 32,5 ProductX 1 Bellaire 5
123456789 2 7,5 ProductY 2 Sugarland 5
666884444 3 40.0 ProductZ 3 Houston 5
453453453 1 20,0 Komputerisasi 10 Stafford 4
453453453 2 20,0 Reorganisasi 20 Houston 1
333445555 2 10,0 Newbenefits 30 Stafford 4
333445555 3 10,0
333445555 10 10,0 TERGANTUNG
333445555 20 10,0 Essn Seks Bdate Hubungan
999887777 30 30.0 Dependent_name

999887777 10 333445555 Alice F 1986/04/05 Putri


10,0
10 333445555 Theodore M 1983/10/25 Putra
987987987 35,0
333445555 Kegembiraan F 1958/05/03 Pasangan
987987987 30 5.0
987654321 Abner M 1942/02/28 Pasangan
987654321 30 20,0
123456789 Michael M 1988/01/04 Putra
987654321 20 15.0
123456789 Alice F 1988/12/30 Putri
888665555 20 BATA
L 123456789 Elizabeth F 1967/05/05 Pasangan
5.2 Kendala Model Relasional dan Relational Skema database 163

kendala integritas yang ditetapkan pada skema database dan diharapkan untuk
berpegang pada setiap negara bagian database yang valid dari skema itu. Selain
domain, kunci, dan TIDAK kendala NULL, dua jenis kendala dianggap sebagai
bagian dari model relasional: integritas entitas dan integritas referensial.

5.2.4 Entitas Integritas, Referential Integrity, dan Foreign Keys


Batasan integritas entitas menyatakan bahwa tidak ada nilai kunci primer dapat
menjadi NULL. Hal ini karena nilai kunci primer digunakan untuk
mengidentifikasi tupel individu dalam relasi. Hav- ing nilai NULL untuk kunci
utama menyiratkan bahwa kita tidak dapat mengidentifikasi beberapa tupel.
Sebagai contoh, jika dua atau lebih tuple memiliki NULL untuk kunci utama
mereka, kami mungkin tidak dapat membedakan mereka jika kita mencoba untuk
referensi mereka dari hubungan lainnya.
kendala utama dan kendala integritas entitas ditetapkan pada hubungan individu.
Batasan integritas referensial ditentukan antara dua relasi dan digunakan untuk
menjaga konsistensi antara tupel dalam dua relasi. Informal, yang referen- esensial
batasan integritas menyatakan bahwa tuple dalam satu relasi yang mengacu pada
hubungan lain harus mengacu ke tuple yang ada dalam hubungan itu. Sebagai
contoh, pada Gambar 5.6, atribut DNO dari EMPLOYEE memberikan jumlah
departemen yang setiap karyawan bekerja; maka, nilainya di setiap tuple
EMPLOYEE harus sesuai dengan nilai Dnumber dari beberapa tuple dalam relasi
DEPARTMENT.
Untuk menentukan integritas referensial lebih formal, pertama kita mendefinisikan
konsep kunci asing. Kondisi untuk kunci asing, diberikan di bawah, tentukan
batasan integritas referensial antara dua relasi skema R1 dan R2. Satu set atribut
FK di skema relasi R1 adalah kunci asing dari R1 yang merujuk hubungan R2 jika
memenuhi aturan berikut:
1. Atribut dalam FK memiliki domain yang sama (s) sebagai atribut kunci
utama PK dari R2; atribut FK dikatakan referensi atau mengacu pada
hubungan R2.
2. Sebuah nilai FK dalam t1 tuple dari negara saat r1 (R1) baik terjadi sebagai
nilai PK untuk beberapa tuple t2 dalam r2 kondisi saat ini (R2) atau NULL.
Dalam kasus yang pertama, kita memiliki t1 [FK] = t2 [PK], dan kami
mengatakan bahwa tupel t1 referensi atau mengacu pada t2 tupel.
Dalam definisi ini, R1 disebut hubungan referensi dan R2 adalah hubungan
direferensikan. Jika kedua kondisi ini terus, kendala integritas referensial dari R1
ke R2 dikatakan untuk menahan. Dalam database banyak hubungan, biasanya ada
banyak kendala integritas referensial.
Untuk menentukan kendala ini, pertama kita harus memiliki pemahaman yang
jelas tentang ing mean atau peran yang setiap atribut atau set atribut bermain
di mas berbagai hubungan sche- dari database. batasan integritas referensial
biasanya timbul dari hubungan antara entitas diwakili oleh skema relasi.
Sebagai contoh, perhatikan database yang ditunjukkan pada Gambar 5.6.
Dalam relasi EMPLOYEE, atribut DNO mengacu pada departemen yang
seorang karyawan bekerja; oleh karena itu, kami menunjuk DNO menjadi
kunci asing dari EMPLOYEE referensi hubungan DEPARTMENT. Ini berarti
bahwa nilai DNO di setiap t1 tuple dari relasi EMPLOYEE harus cocok
5.2 Kendala Model Relasional dan Relational Skema database 163
dengan nilai
5.2 Kendala Model Relasional dan Relational Skema database 163

kunci utama dari DEPARTMENT-the Dnumber atribut-dalam beberapa tuple t2


dari hubungan DEPARTMENT, atau nilai DNO dapat NULL jika karyawan
bukan milik departemen atau akan ditugaskan untuk departemen kemudian.
Sebagai contoh, pada Gambar 5.6 tupel bagi karyawan referensi 'John Smith' tupel
untuk departemen 'Penelitian', menunjukkan bahwa 'John Smith' bekerja untuk
departemen ini.
Perhatikan bahwa kunci asing bisa merujuk ke hubungan sendiri. Sebagai contoh,
atribut Super_ssn di EMPLOYEE mengacu pada supervisor karyawan; ini adalah
karyawan lain, diwakili oleh tuple dalam relasi EMPLOYEE. Oleh karena itu,
Super_ssn merupakan kunci asing yang referensi relasi EMPLOYEE itu sendiri.
Dalam Gambar 5.6 tupel bagi karyawan referensi 'John Smith' tupel untuk
karyawan Franklin Wong, 'indicat- ing yang 'Franklin Wong' adalah pengawas
'John Smith'.
Kami diagram dapat menampilkan batasan integritas referensial dengan
menggambar busur diarahkan dari setiap tombol asing untuk hubungan itu
referensi. Untuk kejelasan, panah dapat menunjuk ke primary key dari relasi
direferensikan. Gambar 5.7 menunjukkan skema pada Gambar 5.5 dengan batasan
integritas referensial ditampilkan dengan cara ini.
Semua kendala integritas harus ditentukan pada skema database relasional (yaitu,
ditetapkan sebagai bagian dari definisinya) jika kita ingin DBMS untuk
menegakkan kendala ini pada

Gambar 5.7
batasan integritas referensial ditampilkan pada PERUSAHAAN relasional skema database.

EMPLOYEE
fname Minit lname ssn Bdate Alamat Seks Gaji Super_ssn DNO

BERANGKAT
MTHT Dnumber Mgr_ssn Mgr_start_date
dname

DEPT_LOCATIONS
Dnumber Dlocation

PROYEK
pname Pnumber Plocation Dnum

WORKS_ON
Essn PNO Jam

TERGANTUN
G Essn Dependent_name Seks Bdate Hubungan
5.3 Pembaruan Operasi, Transaksi, dan Berurusan dengan Pelanggaran Kendala 165

negara basis data. Oleh karena itu, DDL termasuk ketentuan untuk menentukan
berbagai jenis kendala sehingga DBMS secara otomatis dapat menegakkan
mereka. Dalam SQL, CREATE TABLE pernyataan SQL DDL memungkinkan
definisi kunci utama, kunci unik, NOT NULL, integritas entitas, dan batasan
integritas referensial, antara kendala lainnya (lihat Bagian 6.1 dan 6.2).

5.2.5 Jenis Lain Kendala


Kendala integritas sebelumnya termasuk dalam bahasa definisi data karena mereka
terjadi di sebagian besar aplikasi database. kelas lain kendala umum, kadang-
kadang disebut batasan integritas semantik, bukan bagian dari DDL dan harus
ditentukan dan ditegakkan dengan cara yang berbeda. Contoh kendala tersebut
adalah gaji karyawan tidak boleh melebihi gaji supervisor karyawan dan jumlah
maksimum jam seorang karyawan dapat bekerja pada semua proyek per minggu
adalah 56. kendala tersebut dapat ditentukan dan ditegakkan dalam applica- yang
program tion yang update database, atau dengan menggunakan tujuan umum
bahasa spesifikasi kendala. Mekanisme yang disebut pemicu dan pernyataan dapat
digunakan dalam SQL, melaluiMENCIPTAKAN Penegasan dan CREATE TRIGGER
pernyataan, menentukan beberapa kendala tersebut (lihat Bab 7). Hal ini lebih
umum untuk memeriksa jenis kendala dalam program aplikasi daripada
menggunakan bahasa kasi kendala specifi- karena yang terakhir kadang-kadang
sulit dan kompleks untuk digunakan, seperti yang kita bahas dalam Bagian 26.1.
Jenis-jenis kendala kita bahas sejauh mungkin disebut kendala negara karena
mereka menentukan batasan bahwa negara yang valid dari database harus
memenuhi. Tipe lain dari kendala, disebut kendala transisi, dapat didefinisikan
untuk menghadapi perubahan keadaan di database.11 Contoh kendala transisi
adalah: “gaji karyawan hanya dapat meningkatkan.” kendala seperti biasanya
ditegakkan oleh program aplikasi atau ditentukan menggunakan aturan aktif dan
pemicu, seperti yang kita membahas tiga dalam Bagian 26.1.

5.3 Update Operasi, Transaksi,


dan Berurusan dengan Pelanggaran Kendala
Operasi dari model relasional dapat dikategorikan ke dalam retrievals dan update.
Operasi aljabar relasional, yang dapat digunakan untuk menentukan retrievals,
dibahas secara rinci dalam Bab 8. Sebuah ekspresi aljabar relasional membentuk
hubungan baru setelah menerapkan sejumlah aljabar operator untuk set yang ada
tions eratnya; Penggunaan utamanya adalah untuk query database untuk
mengambil informasi. Pengguna untuk- Mulates query yang menentukan data
yang menarik, dan hubungan baru terbentuk dengan menerapkan operator
relasional untuk mengambil data ini. Hasil hubungan menjadi jawaban untuk (atau
hasil) permintaan pengguna. Bab 8 juga memperkenalkan bahasa

11kendala negara kadang-kadang disebut kendala statis, Dan kendala transisi kadang-kadang disebut
kendala dinamis.
5.3 Pembaruan Operasi, Transaksi, dan Berurusan dengan Pelanggaran Kendala 166

disebut kalkulus relasional, yang digunakan untuk mendefinisikan query


declaratively tanpa giv- ing urutan tertentu dari operasi.
Pada bagian ini, kami berkonsentrasi pada modifikasi database atau memperbarui
operasi. Ada tiga operasi dasar yang dapat mengubah negara dari hubungan di
dasar data-: Insert, Delete, dan Update (atau Modify). Mereka memasukkan data
baru, menghapus data lama, atau memodifikasi catatan data yang ada, masing-
masing. Insert digunakan untuk menyisipkan satu atau lebih tuple baru dalam
relasi, Hapus digunakan untuk menghapus tupel, dan Update (atau Modify)
digunakan untuk mengubah nilai dari beberapa atribut dalam tupel yang ada.
Setiap kali operasi ini diterapkan, kendala integritas yang ditetapkan pada skema
database relasional tidak boleh dilanggar. Pada bagian ini kita membahas jenis
kendala yang mungkin dilanggar oleh masing-masing operasi ini dan jenis
tindakan yang dapat diambil jika operasi menyebabkan pelanggaran. Kami
menggunakan database yang ditunjukkan pada Gambar 5. 6 untuk contoh dan
membahas hanya domain kendala, kendala utama, kendala integritas entitas, dan
batasan integritas referensial yang ditunjukkan pada Gambar 5.7. Untuk setiap
jenis operasi, kami memberikan beberapa contoh dan mendiskusikan kendala yang
setiap operasi mungkin melanggar.

5.3.1 Insert Operasi


Insert operasi menyediakan daftar nilai atribut untuk t tupel baru yang akan
dimasukkan ke dalam relasi R. Sisipkan dapat melanggar salah satu dari empat
jenis kendala. kendala domain dapat dilanggar jika nilai atribut yang diberikan
yang tidak muncul dalam domain yang sesuai atau tidak dari jenis data yang
sesuai. kendala utama dapat dilanggar jika nilai kunci dalam t tupel baru sudah ada
di tuple lain dalam relasi r (R). integritas entitas dapat dilanggar jika ada bagian
dari kunci utama dari t tupel baru NULL. integritas referensial dapat dilanggar jika
nilai dari setiap kunci asing di t mengacu pada tuple yang tidak ada dalam
hubungan direferensikan. Berikut adalah beberapa contoh untuk menggambarkan
diskusi ini.
■ Operasi:
Menyisipkan < 'Cecilia', 'F', 'Kolonsky', NULL, '1960/04/05', '6357 Windy
Lane, Katy, TX', F, 28000, NULL, 4> ke EMPLOYEE.
Hasil: Penyisipan ini melanggar batasan integritas entitas (NULL untuk
kunci SSN primer), sehingga ditolak.
■ Operasi:
Menyisipkan < 'Alicia', 'J', 'Zelaya', '999887777', '1960/04/05', '6357 Windy
Lane, Katy,TX', F, 28.000, '987.654.321', 4> ke EMPLOYEE.
Hasil: Penyisipan Ini melanggar kendala kunci karena tuple lain dengan
nilai SSN yang sama sudah ada di relasi EMPLOYEE, dan sehingga
ditolak.
■ Operasi:
Menyisipkan < 'Cecilia', 'F', 'Kolonsky', '677678989', '1960/04/05', '6357 Windswept,
Katy, TX', F, 28000, '987.654.321', 7> ke EMPLOYEE.
Hasil: Penyisipan ini melanggar batasan integritas referensial ditentukan
padaDNO di KARYAWAN karena tidak ada yang sesuai tuple direferensikan
ada di DEPARTEMEN dengan Dnumber = 7.
5.3 Pembaruan Operasi, Transaksi, dan Berurusan dengan Pelanggaran Kendala 167

■ Operasi:
Menyisipkan < 'Cecilia', 'F', 'Kolonsky', '677678989', '1960/04/05', '6357
Windy Lane, Katy, TX', F, 28.000, NULL, 4> ke EMPLOYEE.
Hasil: Penyisipan ini memenuhi semua kendala, sehingga dapat diterima.
Jika penyisipan melanggar satu atau lebih kendala, pilihan default adalah
untuk menolak penyisipan. Dalam hal ini, akan sangat berguna jika DBMS
bisa memberikan alasan kepada pengguna seperti mengapa penyisipan itu
ditolak. Pilihan lain adalah untuk mencoba untuk memperbaikialasan
penolakan penyisipan,tapi ini biasanya tidak digunakan untuk pelanggaran yang
disebabkan oleh Insert; bukan, itu lebih sering digunakan dalam mengoreksi
pelanggaran untuk Delete dan Update. Pada operasi pertama, DBMS dapat
meminta pengguna untuk memberikan nilai untuk SSN, dan kemudian bisa
menerima penyisipan jika nilai SSN yang valid. Dalam operasi 3, DBMS bisa baik
meminta pengguna untuk mengubah nilai DNO untuk beberapa nilai yang valid
(atau set ke NULL), atau bisa meminta pengguna untuk memasukkan tuple
DEPARTMENT dengan Dnumber = 7 dan bisa menerima penyisipan asli hanya
setelah operasi semacam itu diterima. Perhatikan bahwa dalam kasus yang terakhir
pelanggaran penyisipan dapat kaskade kembali ke relasi EMPLOYEE jika
pengguna mencoba untuk memasukkan tupel untuk departemen 7 dengan nilai
Mgr_ssn yang tidak ada dalam relasi EMPLOYEE.

5.3.2 Operasi Delete


Operasi Delete dapat melanggar hanya integritas referensial. Hal ini terjadi jika
tupel yang dihapus direferensikan oleh kunci asing dari tuple lain dalam database.
Untuk menentukan penghapusan, kondisi pada atribut relasi memilih tupel (atau
tupel) yang akan dihapus. Berikut adalah beberapa contoh.
■ Operasi:
Hapus WORKS_ON tuple dengan Essn = '999887777' dan PNO = 10.
Hasil: Penghapusan ini dapat diterima dan menghapus tepat satu tuple.
■ Operasi:
Hapus KARYAWAN tuple dengan ssn = '999887777'.
Hasil: Penghapusan ini tidak dapat diterima, karena ada tupel di
WORKS_ON yang merujuk ke tupel ini. Oleh karena itu, jika tuple di
EMPLOYEE dihapus, pelanggaran integritas referensial akan
menghasilkan.
■ Operasi:
Hapus KARYAWAN tuple dengan ssn = '333445555'.
Hasil: Penghapusan ini akan mengakibatkan pelanggaran integritas
referensial bahkan lebih buruk, karena tupel yang terlibat direferensikan
oleh tupel dariKARYAWAN. DEPARTEMEN. WORKS_ON, dan
TERGANTUNGhubungan.
Beberapa pilihan yang tersedia jika operasi penghapusan menyebabkan
pelanggaran. Opsi pertama, yang disebut membatasi, adalah untuk menolak
penghapusan. Opsi kedua, disebut cascade, adalah upaya untuk kaskade (atau
menyebarkan) penghapusan dengan menghapus tupel yang referensi tuple yang
sedang dihapus. Misalnya, dalam operasi 2, DBMS bisa automati- Cally
menghapus tupel menyinggung dariWORKS_ON dengan Essn = '999887777'. Pilihan
5.3 Pembaruan Operasi, Transaksi, dan Berurusan dengan Pelanggaran Kendala 168
ketiga, yang disebut set nol atau set default, adalah untuk memodifikasi nilai
atribut referensi yang menyebabkan pelanggaran; setiap nilai tersebut baik diatur
untukBATALatau diubah ke
5.3 Pembaruan Operasi, Transaksi, dan Berurusan dengan Pelanggaran Kendala 169

referensi standar tuple lain yang sah. Perhatikan bahwa jika atribut referensi yang
menyebabkan pelanggaran adalah bagian dari kunci utama, itu tidak dapat diatur
untuk NULL; jika tidak, itu akan melanggar integritas entitas.
Kombinasi dari tiga pilihan ini juga mungkin. Misalnya, untuk menghindari
operasi 3 penyebab pelanggaran, DBMS dapat secara otomatis menghapus semua
tupel dariWORKS_ON dan TERGANTUNG dengan Essn = '333445555'. tupel
diKARYAWAN dengan Super_ssn = '333445555' dan tuple di DEPARTEMEN dengan
Mgr_ssn = '333445555' dapat memiliki mereka Super_ssn dan Mgr_ssn nilai-nilai
berubah menjadi nilai-nilai yang berlaku lainnya atau untuk BATAL. Meskipun
mungkin masuk akal untuk menghapus secara otomatisWORKS_ON dan TERGANTUNG
tupel yang merujuk pada suatu KARYAWAN tuple, mungkin tidak masuk akal untuk
menghapus lainnya KARYAWAN tupel atau DEPARTEMENtupel.
Secara umum, ketika sebuah batasan integritas referensial ditentukan dalam DDL,
DBMS akan memungkinkan perancang database untuk menentukan pilihan
berlaku dalam kasus pelanggaran kendala. Kita membahas bagaimana untuk
menentukan pilihan ini di SQL DDL dalam Bab 6.

5.3.3 Operasi Pembaruan


Update (atau Modify) operasi digunakan untuk mengubah nilai-nilai dari satu atau
lebih atribut dalam sebuah tuple (atau tupel) dari beberapa relasi R. Hal ini
diperlukan untuk menentukan tion menderita penyakit pada atribut relasi untuk
memilih tupel ( atau tupel) untuk dimodifikasi. Berikut adalah beberapa contoh.
■ Operasi:
Update gaji tuple EMPLOYEE dengan SSN = '999887777' ke 28000.
Hasil: Diterima.
■ Operasi:
Update DNO dari KARYAWAN tuple dengan ssn = '999887777' ke 1.
Hasil: Diterima.
■ Operasi:
Update DNO dari KARYAWAN tuple dengan ssn = '999887777' ke 7.
Hasil: Tidak dapat diterima, karena melanggar integritas referensial.
■ Operasi:
MemperbaruiSSN dari tuple EMPLOYEE dengan SSN = '999887777' ke
'987654321'. Hasilnya: tidak dapat diterima, karena melanggar kunci
primer kendala dengan mengulangi nilai yang sudah ada sebagai kunci
utama dalam tuple lain; melanggar kendala integritas sajalah rujukan
terbaik karena ada hubungan lain yang mengacu pada nilai yang ada SSN.
Memperbarui atribut yang bukan bagian dari kunci utama atau bagian dari kunci
asing biasanya tidak menimbulkan masalah; DBMS hanya perlu memeriksa untuk
mengkonfirmasi bahwa nilai baru dari jenis data yang benar dan domain.
Memodifikasi nilai kunci utama adalah Serupa lar untuk menghapus satu tupel dan
memasukkan lain di tempatnya karena kita menggunakan kunci utama untuk
mengidentifikasi tupel. Oleh karena itu, isu-isu yang dibahas sebelumnya di kedua
Bagian 5.3.1 (Insert) dan 5.3.2 (Hapus) ikut bermain. Jika atribut kunci asing
dimodifikasi,
5.3 Pembaruan Operasi, Transaksi, dan Berurusan dengan Pelanggaran Kendala 170
5.4 Ringkasan 169

DBMS harus memastikan bahwa nilai baru mengacu pada tupel yang ada dalam
hubungan enced rujukan terbaik (atau diatur ke NULL). Pilihan serupa ada untuk
menangani referensial pelanggaran ritas integ- disebabkan oleh Update sebagai
orang-orang pilihan dibahas untuk operasi Delete. Bahkan, ketika batasan
integritas referensial ditentukan dalam DDL, DBMS akan memungkinkan
pengguna untuk memilih opsi yang terpisah untuk menangani pelanggaran yang
disebabkan oleh Delete dan pelanggaran yang disebabkan oleh Update (lihat
Bagian 6.2).

5.3.4 Konsep Transaksi


Sebuah program aplikasi database berjalan terhadap database relasional biasanya
exe- cutes satu atau lebih transaksi. Sebuah transaksi adalah program
mengeksekusi yang mencakup beberapa operasi database, seperti membaca dari
database, atau menerapkan inser- tions, penghapusan, atau update ke database.
Pada akhir transaksi, harus meninggalkan database dalam keadaan valid atau
konsisten yang memenuhi semua kendala spec- ified pada skema database. Sebuah
transaksi mungkin melibatkan sejumlah operasi pengambilan (akan dibahas
sebagai bagian dari aljabar relasional dan kalkulus dalam Bab 8, dan sebagai
bagian dari SQL bahasa dalam Bab 6 dan 7) dan sejumlah operasi update. Ini
retrievals dan update bersama-sama akan membentuk unit atom kerja terhadap
database. Sebagai contoh,
Sejumlah besar aplikasi komersial berjalan terhadap database relasional dalam
pemrosesan transaksi online (OLTP) sistem mengeksekusi transaksi pada tingkat
yang mencapai beberapa ratus per detik. konsep transaksi pengolahan, concur-
eksekusi sewa transaksi, dan pemulihan dari kegagalan akan dibahas dalam Bab
20 hingga 22.

5.4 Ringkasan
Dalam bab ini kita disajikan konsep pemodelan, struktur data, dan kendala yang
disediakan oleh model relasional data. Kami mulai dengan memperkenalkan
konsep domain, atribut, dan tuples. Kemudian, kita mendefinisikan sebuah skema
relasi sebagai daftar butes attri- yang menggambarkan struktur relasi. Sebuah
relasi, atau relasi negara, adalah satu set tupel yang sesuai dengan skema.
Beberapa karakteristik membedakan hubungan dari tabel biasa atau file. Yang
pertama adalah bahwa relasi tidak sensitif terhadap urutan tupel. Yang kedua
melibatkan pemesanan atribut dalam skema relasi dan pemesanan sesuai val- ues
dalam tupel. Kami memberikan definisi alternatif hubungan yang tidak
memerlukan pemesanan atribut, tapi kami terus menggunakan definisi pertama,
yang membutuhkan atribut dan nilai-nilai tuple harus dipesan, untuk kenyamanan.
Kemudian, kita bahas nilai dalam tupel dan memperkenalkan nilai-nilai NULL
untuk mewakili hilang atau tidak diketahui mation informal. Kami menekankan
bahwa nilai-nilai NULL harus dihindari sebisa mungkin.
Kami diklasifikasikan kendala database ke melekat model berbasis kendala,
eksplisit kendala berbasis skema, dan kendala semantik atau aturan bisnis. Lalu
kita 5.3 Pembaruan Operasi, Transaksi, dan Berurusan dengan Pelanggaran Kendala 171
170 Bab 5 Relational Model Data dan Relational Database Kendala

membahas kendala skema yang berkaitan dengan model relasional, dimulai


dengan kendala domain, maka batasan kunci (termasuk konsep superkey,
kunci, dan kunci utama), dan kendala NOT NULL pada atribut. Kami
mendefinisikan database relasional dan skema database relasional.
keterbatasan- keterbatasan relasional tambahan termasuk kendala integritas
entitas, yang melarang butes attri- kunci utama dari menjadi NULL. Kami
menggambarkan interelasi referensial kendala integritas, yang digunakan
untuk menjaga konsistensi referensi antara tupel dari berbagai hubungan.
Operasi modifikasi pada model relasional yang Insert, Delete, dan Update. Setiap
operasi mungkin melanggar beberapa jenis kendala (lihat Bagian 5.3). Saat-
pernah operasi diterapkan, negara database yang dihasilkan harus menjadi negara
yang sah. Akhirnya, kami memperkenalkan konsep transaksi, yang penting dalam
DBMS relasional karena memungkinkan pengelompokan beberapa operasi
database ke dalam tindakan atom tunggal pada database.

Ulasan Pertanyaan
5.1. Mendefinisikan istilah berikut yang berlaku untuk model relasional data:
domain, atribut, n-tuple, skema relasi, relasi negara, tingkat relasi, skema
database relasional, dan negara database relasional.
5.2. Mengapa tupel dalam relasi tidak memerintahkan?
5.3. Mengapa duplikat tupel tidak diperbolehkan dalam relasi?

5.4. Apa perbedaan antara kunci dan superkey?


5.5. Mengapa kita menunjuk salah satu kunci calon relasi menjadi kunci mary
pri-?
5.6. Diskusikan karakteristik hubungan yang membuat mereka berbeda dari
ordi- nary tabel dan file.
5.7. Membahas berbagai alasan yang menyebabkan terjadinya BATAL nilai-nilai
dalam hubungan.
5.8. Diskusikan integritas entitas dan batasan integritas referensial. Mengapa
setiap dianggap penting?
5.9. Mendefinisikan kunci asing. Apa konsep ini digunakan untuk?
5.10. Apa transaksi? Bagaimana cara berbeda dari operasi Perbarui?

latihan
5.11. Misalkan bahwa setiapoperasi Perbarui berikut diterapkan langsung ke
negara database yang ditunjukkan pada Gambar 5.6. Membahas semua
kendala integritas
170 Bab 5 Relational Model Data dan Relational Database Kendala

dilanggar oleh setiap operasi, jika ada, dan cara yang berbeda menegakkan
kendala ini.
Sebuah. Menyisipkan < 'Robert', 'F', 'Scott', '943775543', '1972/06/21', '2365 Newcastle
Rd, Bellaire, TX', M, 58000, '888.665.555', 1> dalam KARYAWAN.
b. Menyisipkan < 'productâ', 4, 'Bellaire', 2> kePROYEK.
c. Menyisipkan < 'Produksi', 4, '943.775.543', '2007/10/01'> keDEPARTEMEN.
d. Menyisipkan < '677678989',BATAL, '40 0,0' > ke WORKS_ON.
e. Menyisipkan < '453453453', 'John', 'M', '1990/12/12', 'pasangan'> ke TERGANTUNG.
f. Hapus WORKS_ON tupel dengan Essn = '333445555'.
g. HapusKARYAWANtuple denganssn= '987654321'.
h. HapusPROYEKtuple denganpname= 'ProductX'.
i. memodifikasiMgr_ssndanMgr_start_datedariDEPARTEMENtuple dengan
Dnumber = 5 untuk '123456789' dan '2007/10/01', masing-masing.
j. memodifikasi Super_ssn atribut dari KARYAWAN tuple dengan ssn =
'999887777' ke '943775543'.
k. memodifikasi Jam atribut dari WORKS_ON tuple dengan Essn =
'999887777' dan PNO = 10 untuk '5.0'.
5.12. Pertimbangkan PERUSAHAAN PENERBANGAN database relasional skema
ditampilkan pada Gambar 5.8, yang menggambarkan database informasi
penerbangan maskapai. SetiapPENERBANGAN diidentifikasi oleh Nomor
penerbangan. dan terdiri dari satu atau lebih FLIGHT_LEGsdengan
Leg_numbers 1, 2, 3, dan seterusnya. SetiapFLIGHT_LEG memiliki jadual
kedatangan dan keberangkatan, bandara, dan satu atau lebih LEG_INSTANCEs-
satu untuk masing-masing Tanggal di mana penerbangan itu perjalanan. tarif
disimpan untuk setiap PENERBANGAN. Untuk setiapFLIGHT_LEG contoh,
SEAT_RESERVATIONs disimpan, seperti PESAWAT TERBANG digunakan pada kaki
dan kedatangan aktual dan waktu keberangkatan dan bandara.
SebuahPESAWAT TERBANG diidentifikasi oleh Airplane_id dan dari lar
khususnya untuk para AIRPLANE_TYPE. CAN_LAND berkaitan AIRPLANE_TYPEs ke
Bandara di mana mereka dapat mendarat. SebuahBANDARA diidentifikasi oleh
AIRPORT_CODE. Con Sider update untukPERUSAHAAN PENERBANGAN database
untuk memasukkan reservasi pada penerbangan lar khususnya untuk para
atau kaki penerbangan pada tanggal tertentu.
a. Berikan operasi untuk update ini.
b. Apa jenis kendala yang Anda harapkan untuk memeriksa?
c. Manakah dari kendala ini adalah kunci, integritas entitas, dan referensial
kendala integritas, dan mana yang tidak?
d. Tentukan semua kendala integritas referensial yang berpegang pada
skema yang ditunjukkan pada Gambar 5.8.
5.13. Pertimbangkan relasi KELAS(tentu saja # . Univ_Section # . Instructor_name .
Semester. Kode gedung. Kamar#. Jangka waktu. Hari kerja. Credit_hours). mewakili
keadaan ini membenci kelas diajarkandi sebuah universitas, dengan
unikUniv_section # s. Mengidentifikasi apa yang Anda pikir harus berbagai
170 Bab 5 Relational Model Data dan Relational Database Kendala
kunci kandidat, dan menulis dalam kata-kata Anda sendiri kondisi atau
asumsi-asumsi di mana setiap tombol kandidat akan berlaku.
latihan 172

BANDARA
AIRPORT_COD Nama Kota Negar
E a

PENERBANGAN
Nomor Perusah Hari kerja
penerbangan aan
penerba
ngan

FLIGHT_LEG
Nomor Leg_number DEPARTURE_AIRPORT_CODE Scheduled_departure_time
penerbangan
ARRIVAL_AIRPORT_CODE Scheduled_arrival_time

LEG_INSTANCE
Flight_number Leg_number Tangg Number_of_available_seats Airplane_id
al
DEPARTURE_AIRPORT_CO Waktu ARRIVAL_AIRPORT_CO Jam
DE keberangkatan DE kedatangan

TARIF
Nomor Fare_code Jumlah pembatasan
penerbangan

AIRPLANE_TYPE
Airplane_type_name Max_seats Perusahaa
n

CAN_LAND
Airplane_type_name AIRPORT_COD
E

PESAWAT TERBANG
Airplane_id Total_number_of_seats Airplane_type

PEMESANAN KURSI
Nomor Leg_number Tangg Nomor kursi Nama Pelanggan Customer_phone
penerbangan al

Gambar 5.8
The AIRLINE relasional skema database.

5.14. Pertimbangkan enam hubungan berikut untuk database kation appli agar-
latihan 173
pengolahan di sebuah perusahaan:
PELANGGAN (Cust #, Cname, Kota) PESANAN
(Order #, Odate, Cust #, Ord_amt)
ORDER_ITEM (Order #, Item #, Qty)
latihan 174

ITEM (Item #, Unit_price)


PENGIRIMAN (Order #, Warehouse #,
Ship_date) GUDANG (Warehouse #, Kota)
Sini, Ord_amt mengacu pada jumlah total dolar perintah; Odate adalah tanggal
perintah itu ditempatkan; dan Ship_date adalah tanggal perintah (atau bagian dari
order) dikirim dari gudang. Asumsikan bahwa perintah dapat dikirimkan dari beberapa
gudang. Tentukan kunci asing untuk skema ini, menyatakan asumsi apapun yang Anda
buat. Apa kendala lain yang dapat Anda pikirkan untuk database ini?
5.15. Pertimbangkan hubungan berikut untuk database yang melacak perjalanan
bisnis dari penjual di kantor penjualan:
SALESPERSON (SSN, Nama, start_year, Dept_no)
TRIP (SSN, FROM_CITY, TO_CITY, DEPARTURE_DATE,
RETURN_DATE, Trip_id) BEBAN (Trip_id, Akun #, Jumlah)
Perjalanan dapat dibebankan pada satu atau beberapa akun. Tentukan kunci
asing untuk skema ini, menyatakan asumsi apapun yang Anda buat.
5.16. Pertimbangkan hubungan berikut untuk database yang melacak
pendaftaran siswa di kursus dan buku-buku yang diadopsi untuk setiap
kursus:
STUDENT (SSN, Nama, Mayor, Bdate)
KURSUS (Course #, Cname, Dept)
MENDAFTARKAN (SSN, Course #, Quarter,
Grade)
BOOK_ADOPTION (Course #, Quarter, Book_isbn) TEXT
(Book_isbn, BOOK_TITLE, Penerbit, Penulis)
Tentukan kunci asing untuk skema ini, menyatakan asumsi apapun yang Anda buat.
5.17. Pertimbangkan hubungan berikut untuk database yang melacak penjualan
empedu automo- di dealer mobil (PILIHAN mengacu pada beberapa peralatan
opsional yang terpasang pada mobil):
CAR (Serial_no, Model, Produsen, Harga) OPTION (Serial_no,
OPTION_NAME, Harga) SALE (Salesperson_id, Serial_no,
Tanggal, Sale_price) SALESPERSON (Salesperson_id, Nama,
Telepon)
Pertama, tentukan kunci asing untuk skema ini, menyatakan asumsi
apapun yang Anda buat. Berikutnya, mengisi hubungan dengan tupel
sampel beberapa, dan kemudian memberikan contoh dari penyisipan di
SALE dan SALESPERSON hubungan yang melanggar batasan
integritas referensial dan penyisipan lain yang tidak.
5.18. desain database sering melibatkan keputusan tentang penyimpanan atribut.
Misalnya, nomor Jaminan Sosial dapat disimpan sebagai salah satu atribut
atau dibagi menjadi tiga atribut (satu untuk masing-masing dari tiga
latihan 175
kelompok tanda hubung-digambarkan dari
latihan 176

angka dalam nomor Jaminan Sosial-XXX-XX-XXXX). Namun, nomor


Jaminan Sosial biasanya direpresentasikan sebagai hanya satu atribut.
Keputusan ini didasarkan pada bagaimana database akan digunakan.
Latihan ini meminta Anda untuk berpikir tentang situasi tertentu di mana
membagi SSN berguna.
5.19. pertimbangkan SISWA relasi dalam UNIVERSITAS database dengan atribut
berikut (Nama. ssn. Local_phone. Alamat. Telepon selular. Usia. Gpa).
Perhatikan bahwa ponsel mungkin dari kota yang berbeda dan negara
(atau provinsi) dari telepon lokal. Sebuah tuple yang mungkin dari
relasi ditunjukkan di bawah ini:
Nama ssn Local_phone Alamat Cell_phone Umur Gpa
George Shaw 123-45-6789 555-1234 123 Main St., 555-4321 19 3,75
William Edwards Anytown, CA 94539

a. Mengidentifikasi informasi yang kurang penting dari Local_phone dan


Telepon selular atribut. (Petunjuk:? Bagaimana Anda menelepon
seseorang yang tinggal di sebuah negara ferent dif- atau provinsi)
b. Akan Anda menyimpan informasi tambahan ini di Local_phone dan
Telepon selular atribut atau menambahkan atribut baru untuk skema untuk SISWA?
c. Pertimbangkan Nama atribut. Apa keuntungan dan kerugian dari
membelah bidang ini dari satu atribut menjadi tiga atribut (nama depan,
nama tengah, dan nama terakhir)?
d. Apa pedoman umum yang akan Anda rekomendasikan untuk
memutuskan kapan untuk menyimpan informasi dalam sebuah atribut
tunggal dan ketika untuk membagi informasi?
e. Misalkan siswa dapat memiliki antara 0 dan 5 ponsel. Sarankan dua
desain ferent dif- yang memungkinkan jenis informasi ini.
5.20. perubahan terbaru dalam undang-undang privasi telah dianulir organisasi
dari menggunakan nomor Jaminan Sosial untuk mengidentifikasi individu-
individu kecuali pembatasan tertentu dipenuhi. Akibatnya, sebagian besar
universitas di AS tidak dapat menggunakan SSN sebagai kunci utama
(kecuali data keuangan). Dalam praktek,Identitas Siswa, Pengenal unik yang
diberikan untuk setiap siswa, kemungkinan akan digunakan sebagai kunci
utama daripada SSN sejak Identitas Siswa dapat digunakan di seluruh sistem.
a. Beberapa perancang database enggan menggunakan kunci yang
dihasilkan (juga dikenal sebagai kunci pengganti) untuk kunci primer
(sepertiIdentitas Siswa) Karena mereka adalah buatan. Dapatkah Anda
mengusulkan apapun pilihan alami dari kunci yang dapat digunakan
untuk mengidentifikasi catatan mahasiswa
dalamUNIVERSITASDatabase?
b. Misalkan Anda dapat menjamin keunikan kunci alam yang mencakup
nama terakhir. Apakah Anda dijamin bahwa nama terakhir tidak akan
berubah selama masa database? Jika nama terakhir bisa berubah, apa
tions solu- dapat Anda mengusulkan untuk membuat kunci primer yang
masih termasuk nama terakhir tapi tetap unik?
c. Apa keuntungan dan kerugian dari menggunakan dihasilkan (gerbang
latihan 177
surro-) kunci?

Anda mungkin juga menyukai