Вы находитесь на странице: 1из 87

Bab 7: Desain Database Relasional

Database System Concepts, 5th Ed.


Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use

Bab 7: Desain Database Relasional


Fitur Desain Relasional Baik
Atom Domain dan Bentuk Normal Pertama
Dekomposisi Menggunakan Dependensi Fungsional
Teori Ketergantungan Fungsional
Algoritma untuk Dependensi Fungsional
Dekomposisi Menggunakan Dependensi Multivalued
Lebih Bentuk Normal
Proses Desain Database
Pemodelan Data Temporal

Database System Concepts - 5th Edition, Oct 5, 2006

7.2

Silberschatz, Korth and Sudarshan

Skema Perbankan

branch = (branch_name, branch_city, assets)

customer = (customer_id, customer_name, customer_street, customer_city)

loan = (loan_number, amount)

account = (account_number, balance)

employee = (employee_id. employee_name, telephone_number, start_date)

dependent_name = (employee_id, dname)

account_branch = (account_number, branch_name)

loan_branch = (loan_number, branch_name)

borrower = (customer_id, loan_number)

depositor = (customer_id, account_number)

cust_banker = (customer_id, employee_id, type)

works_for = (worker_employee_id, manager_employee_id)

payment = (loan_number, payment_number, payment_date, payment_amount)

savings_account = (account_number, interest_rate)

checking_account = (account_number, overdraft_amount)

Database System Concepts - 5th Edition, Oct 5, 2006

7.3

Silberschatz, Korth and Sudarshan

Kombinasikan Schemas?
Misalkan kita menggabungkan borrower dan loan untuk mendapatkan

bor_loan = (customer_id,loan_number,amount )
Hasil adalah kemungkinan pengulangan informasi (L-100 dalam

contoh di bawah)

Database System Concepts - 5th Edition, Oct 5, 2006

7.4

Silberschatz, Korth and Sudarshan

Sebuah Skema Gabungan Tanpa


Pengulangan

Pertimbangkan menggabungkan loan_branch dan loan

Loan_amt_br = (loan_number,amount,branch_name)
Tidak ada pengulangan (seperti yang disarankan oleh contoh di

bawah)

Database System Concepts - 5th Edition, Oct 5, 2006

7.5

Silberschatz, Korth and Sudarshan

Apa Tentang Schemas kecil?

Misalkan kita mulai dengan bor_loan. Bagaimana kita tahu untuk berpisah
(menguraikan) Ke borrower dan loan?

Menulis aturan "jika ada suatu skema (loan_number, amount), Kemudian


loan_number akan menjadi candidate key "

Menunjukkan sebagai ketergantungan fungsional:


loan_number amount

Di bor_loan, Karena loan_number bukan candidate key, jumlah pinjaman


mungkin harus diulang. Hal ini menunjukkan kebutuhan untuk menguraikan
bor_loan.

Tidak semua dekomposisi yang baik. Misalkan kita menguraikan employee ke


employee1 = (employee_id,employee_name)
employee2 = (employee_name,telephone_number,start_date)

Slide berikut menunjukkan bagaimana kita kehilangan informasi - kita tidak


bisa merekonstruksi relasi asli employee - dan dengan demikian, ini adalah
dekomposisi lossy.

Database System Concepts - 5th Edition, Oct 5, 2006

7.6

Silberschatz, Korth and Sudarshan

Sebuah Dekomposisi lossy

Database System Concepts - 5th Edition, Oct 5, 2006

7.7

Silberschatz, Korth and Sudarshan

Bentuk Normal Pertama


Domain adalah atom jika unsur-unsurnya dianggap unit terpisahkan

Contoh non-atom domain:

Set/himpunan nama, atribut komposit

Identifikasi nomor seperti CS101 yang dapat dipecah menjadi


bagian-bagian

Sebuah R skema relasional adalah di Bentuk normal pertama jika

domain seluruh atribut dari R adalah atom

Nilai Non-atom menyulitkan penyimpanan dan menimbulkan redudansi

(berulang) penyimpanan data

Contoh: Set/himpunan rekening(account) disimpan dengan setiap


pelanggan, dan set/himpunan pemilik disimpan dengan setiap
rekening (account)

Kami menganggap semua relasi berada dalam bentuk normal


pertama (dan meninjau kembali hal ini dalam Bab 9)

Database System Concepts - 5th Edition, Oct 5, 2006

7.8

Silberschatz, Korth and Sudarshan

Bentuk Normal Pertama (sambungan)


Atomicity sebenarnya merupakan milik bagaimana elemen-elemen

dari domain yang digunakan.

Contoh: String biasanya akan dianggap terpisah

Misalkan siswa diberi nomor gulungan yang adalah string dalam


bentuk CS0012 atau EE1127

Jika dua karakter pertama yang diambil untuk menemukan


departemen, domain dari nomor gulungan tidak atom.

Melakukan hal itu adalah ide yang buruk: menyebabkan


pengkodean informasi dalam program aplikasi bukan di database.

Database System Concepts - 5th Edition, Oct 5, 2006

7.9

Silberschatz, Korth and Sudarshan

Tujuan - Merancang Teori untuk Berikut


Tentukan apakah relasi tertentu R adalah dalam bentuk "baik".
Dalam hal relasi R tidak dalam bentuk "baik", menguraikannya

menjadi seperangkat hubungan {R1, R2, ..., Rn} Sehingga

hubungan masing-masing dalam bentuk yang baik

dekomposisi adalah dekomposisi lossless-join

Teori kami didasarkan pada:

Depedensi fungsional

Depedensi multivalued

Database System Concepts - 5th Edition, Oct 5, 2006

7.10

Silberschatz, Korth and Sudarshan

Depedensi Fungsional
Kendala pada aturan set resmi
Mengharuskan nilai untuk satu set tertentu dari atribut menentukan

secara unik nilai untuk satu set atribut.

Ketergantungan(depedensi) fungsional adalah generalisasi dari

gagasan tentang key

Database System Concepts - 5th Edition, Oct 5, 2006

7.11

Silberschatz, Korth and Sudarshan

Dependensi Fungsional (cont.)


Membiarkan R menjadi skema relasi

R dan R
Ketergantungan fungsional

berpegang pada R jika dan hanya jika untuk setiap hubungan


hukum r(R), setiap kali ada dua record t1 dan t2 dari r setuju pada
atribut , mereka juga setuju pada atribut . Artinya,
t1[] = t2[] t1[] = t2[]
Contoh: Pertimbangkan r(A, B ) Dengan contoh berikut r.

1
1
3

4
5
7

Pada contoh ini, A B TIDAK menyimpan , tetapi B A

menyimpan

Database System Concepts - 5th Edition, Oct 5, 2006

7.12

Silberschatz, Korth and Sudarshan

Dependensi Fungsional (cont.)


K adalah superkey untuk skema relasi R jika dan hanya jika K R
K adalah candidate key untuk R jika dan hanya jika

K R, Dan

tanpa K, R

Dependensi fungsional memungkinkan kita untuk mengungkapkan

kendala yang tidak dapat dinyatakan dengan menggunakan


superkeys. Pertimbangkan skema:
bor_loan = (customer_id, loan_number, Jumlah ).

Kami berharap ketergantungan fungsional ini untuk mengadakan:


loan_number jumlah
tapi tidak akan mengharapkan berikut untuk mengadakan:
jumlah customer_name

Database System Concepts - 5th Edition, Oct 5, 2006

7.13

Silberschatz, Korth and Sudarshan

Penggunaan Dependensi Fungsional


Kami menggunakan dependensi fungsional untuk:

Menguji hubungan untuk melihat apakah mereka adalah hukum di


bawah himpunan dependensi fungsional.

Jika relasi r adalah hukum di bawah satu set F dependensi


fungsional, kita mengatakan bahwa r memuaskan F.

menentukan kendala pada set hubungan hukum

Kita katakan bahwa F berpegang pada R jika semua hubungan


hukum pada R memenuhi himpunan dependensi fungsional F.

Catatan: contoh spesifik dari skema relasi dapat menyelesaikan

ketergantungan fungsional bahkan jika ketergantungan fungsional tidak


berpegang pada semua kasus hukum.

Misalnya, contoh spesifik loan mungkin, secara kebetulan, memenuhi


amount customer_name.

Database System Concepts - 5th Edition, Oct 5, 2006

7.14

Silberschatz, Korth and Sudarshan

Dependensi Fungsional (cont.)


Sebuah ketergantungan fungsional tidak mempunyai nilai jika sudah

yakin dengan semua contoh relasi

Contoh:

customer_name, loan_number customer_name

customer_name customer_name

Secara umum, tidak mempunyai nilai jika

Database System Concepts - 5th Edition, Oct 5, 2006

7.15

Silberschatz, Korth and Sudarshan

Penutupan Set Dependensi Fungsional


Mengingat satu set F dependensi fungsional, ada beberapa dependensi

fungsional lain yang secara logis tersirat oleh F.

Misalnya: Jika A B dan B C, Maka kita dapat menyimpulkan


bahwa A C

Himpunan semua dependensi fungsional logis tersirat oleh F adalah

penutupan dari F.

Kami menyatakan penutupan dari F oleh F+.


F+ merupakan superset dari F.

Database System Concepts - 5th Edition, Oct 5, 2006

7.16

Silberschatz, Korth and Sudarshan

Boyce-Codd bentuk normal


Sebuah skema relasi R adalah dalam BCNF sehubungan dengan
set F dependensi fungsional jika untuk semua dependensi
fungsional dalam F+ formulir

dimana R dan R, setidaknya satu dari berikut ini berlaku:
adalah sepele (yakni, )
adalah superkey untuk R
Contoh skema tidak dalam BCNF:
bor_loan = ( customer_id, loan_number, amount )
karena loan_number amount berpegang pada bor_loan tapi

loan_number bukan superkey

Database System Concepts - 5th Edition, Oct 5, 2006

7.17

Silberschatz, Korth and Sudarshan

Skema menguraikan ke dalam BCNF


Misalkan kita memiliki sebuah skema R dan ketergantungan non-trivial
menyebabkan pelanggaran BCNF.

Kami menguraikan R menjadi:


( U )
(R - ( - ))

Dalam contoh kita,

= loan_number

= amount

dan bor_loan diganti dengan


( U ) = ( loan_number, amount )
(R - ( - )) = ( customer_id, loan_number )

Database System Concepts - 5th Edition, Oct 5, 2006

7.18

Silberschatz, Korth and Sudarshan

BCNF dan Ketergantungan Pelestarian


Kendala, termasuk dependensi fungsional, yang mahal untuk

memeriksa dalam praktek kecuali mereka berhubungan hanya satu


relasi

Jika itu sudah cukup untuk menguji hanya mereka dependensi pada

setiap hubungan antar pribadi dekomposisi dalam rangka untuk


memastikan bahwa semua dependensi fungsional terus, maka
dekomposisi yang ketergantungan melestarikan.

Karena tidak selalu mungkin untuk mencapai kedua BCNF dan

pelestarian ketergantungan, kita mempertimbangkan bentuk normal


lebih lemah, yang dikenal sebagai Bentuk normal ketiga.

Database System Concepts - 5th Edition, Oct 5, 2006

7.19

Silberschatz, Korth and Sudarshan

Ketiga Bentuk Normal


Sebuah skema relasi R adalah dalam bentuk normal ketiga (3NF) jika

untuk semua:

di F+
setidaknya satu dari berikut ini berlaku:

adalah sepele (yakni, )

adalah superkey untuk R

Setiap atribut Sebuah di - yang terkandung dalam candidate


key untuk R.
(CATATAN:setiap atribut mungkin dalam candidate key yang
berbeda)

Jika relasi adalah dalam BCNF berada dalam 3NF (karena dalam

BCNF salah satu dari dua kondisi pertama di atas harus memegang).

Kondisi ketiga adalah relaksasi minimal BCNF untuk memastikan

pelestarian ketergantungan (akan melihat mengapa kemudian).

Database System Concepts - 5th Edition, Oct 5, 2006

7.20

Silberschatz, Korth and Sudarshan

Tujuan Normalisasi
Membiarkan R menjadi skema relasi dengan himpunan F

dependensi fungsional.

Putuskan apakah skema relasi R adalah dalam bentuk "baik".


Dalam hal skema relasi R tidak dalam bentuk "baik",

menguraikannya menjadi seperangkat skema relasi {R1, R2, ...,


Rn} Sehingga

setiap skema relasi berada dalam bentuk yang baik

dekomposisi adalah dekomposisi lossless-join

Sebaiknya, dekomposisi harus melestarikan ketergantungan.

Database System Concepts - 5th Edition, Oct 5, 2006

7.21

Silberschatz, Korth and Sudarshan

Seberapa baik BCNF?


Ada basis data skema dalam BCNF yang tampaknya tidak akan cukup

dinormalkan

Pertimbangkan database

kelas-kelas (Tentu saja, guru, buku )


sehingga (c, t, b)kelas-kelas berarti bahwa t memenuhi syarat untuk
mengajar c, dan b adalah buku teks yang dibutuhkan untuk c
Database seharusnya daftar untuk setiap kursus himpunan guru salah

satu dari yang dapat menjadi instruktur kursus, dan set buku, yang
semuanya dibutuhkan untuk kursus (tidak peduli yang mengajar itu).

Database System Concepts - 5th Edition, Oct 5, 2006

7.22

Silberschatz, Korth and Sudarshan

Seberapa baik BCNF? (Cont.)


Tentu saja

guru

Database
Database
Database
Database
Database
Database
sistem operasi
sistem operasi
sistem operasi
sistem operasi

Avi
Avi
Gulungan
Gulungan
Sudarshan
Sudarshan
Avi
Avi
Pete
Pete

buku
DB Konsep
Ullman
DB Konsep
Ullman
DB Konsep
Ullman
Konsep OS
Stallings
Konsep OS
Stallings

kelas-kelas
Tidak ada non-sepele dependensi fungsional dan karena relasi ini

berada dalam BCNF

Penyisipan anomali - yaitu, jika Marilyn adalah guru baru yang dapat

mengajarkan database, dua tupel perlu dimasukkan


(Database, Marilyn, DB Konsep)
(Database, Marilyn, Ullman)

Database System Concepts - 5th Edition, Oct 5, 2006

7.23

Silberschatz, Korth and Sudarshan

Seberapa baik BCNF? (Cont.)


Oleh karena itu, lebih baik untuk menguraikan kelas-kelas

menjadi:

Tentu saja
Database
Database
Database
sistem operasi
sistem operasi

guru
Avi
Gulungan
Sudarshan
Avi
Jim

mengajarkan
Tentu saja

buku

Database
Database
sistem operasi
sistem operasi

DB Konsep
Ullman
Konsep OS
Shaw
teks

Hal ini menunjukkan kebutuhan akan bentuk normal lebih tinggi,


seperti Bentuk Normal Keempat (4NF), yang akan kita lihat
nanti.

Database System Concepts - 5th Edition, Oct 5, 2006

7.24

Silberschatz, Korth and Sudarshan

Fungsional-Teori Ketergantungan
Kita sekarang mempertimbangkan teori formal yang memberitahu kita

yang dependensi fungsional yang tersirat secara logis oleh himpunan


dependensi fungsional.

Kami kemudian mengembangkan algoritma untuk menghasilkan

dekomposisi lossless ke dalam BCNF dan 3NF

Kami kemudian mengembangkan algoritma untuk menguji apakah

dekomposisi adalah dependensi melestarikan

Database System Concepts - 5th Edition, Oct 5, 2006

7.25

Silberschatz, Korth and Sudarshan

Penutupan Set Dependensi Fungsional

Mengingat satu set F set dependensi fungsional, ada beberapa dependensi

fungsional lain yang secara logis tersirat oleh F.

Misalnya: Jika Sebuah B dan B C, Maka kita dapat


menyimpulkan bahwa Sebuah C

Himpunan semua dependensi fungsional logis tersirat oleh F adalah

penutupan dari F.

Kami menyatakan penutupan dari F oleh F+.


Kita dapat menemukan semua F+ dengan menerapkan Aksioma Armstrong:

jika , maka (Refleksivitas)

jika , kemudian (Augmentasi)

jika , dan , Maka (Transitivitas)

Aturan-aturan ini

suara (Menghasilkan hanya dependensi fungsional yang benar-benar


memegang) dan

menyelesaikan (Menghasilkan semua dependensi fungsional yang


ditahan).

Database System Concepts - 5th Edition, Oct 5, 2006

7.26

Silberschatz, Korth and Sudarshan

Contoh

R = (A, B, C, G, H, I)

F = {Sebuah B
Sebuah C
CG H
CG Saya
B H}

beberapa anggota F+

Sebuah H

AG Saya

oleh transitivitas dari Sebuah B dan B H


dengan menambah Sebuah Cdengan G, untuk mendapatkan AG
CG
dan kemudian dengan transitivitas CG Saya

CG HI

dengan menambah CG Sayauntuk menyimpulkan CG CGSaya,


dan peningkatan dari CG Huntuk menyimpulkan CGI HI,
dan kemudian transitivitas

Database System Concepts - 5th Edition, Oct 5, 2006

7.27

Silberschatz, Korth and Sudarshan

Prosedur untuk F Computing+


Untuk menghitung penutupan satu set dependensi fungsional F:

F+=F
ulangi
untuk setiap fungsional ketergantungan f di F+
menerapkan refleksivitas dan aturan pembesaran pada f
menambahkan dependensi fungsional yang dihasilkan untuk
F+
untuk setiap sepasang dependensi fungsional f1dan f2 di F+
jika f1 dan f2 dapat dikombinasikan menggunakan
transitivitas
kemudian menambah ketergantungan fungsional yang
dihasilkan untuk F+
sampai F+ tidak mengubah lebih jauh
CATATAN: Kita akan melihat prosedur alternatif untuk tugas ini kemudian

Database System Concepts - 5th Edition, Oct 5, 2006

7.28

Silberschatz, Korth and Sudarshan

Penutupan Dependensi Fungsional


(cont.)
Selanjutnya kita dapat menyederhanakan perhitungan manual F+

dengan menggunakan aturan tambahan berikut.

Jika memegang sebuahnd benar, maka


memegang (Serikat)

Jika benar, maka memegang dan


memegang (Dekomposisi)

Jika memegang sebuahnd benar, maka


memegang (Pseudotransitivitas)

Peraturan di atas dapat disimpulkan dari aksioma Armstrong.

Database System Concepts - 5th Edition, Oct 5, 2006

7.29

Silberschatz, Korth and Sudarshan

Penutupan Set Atribut


Mengingat satu set atribut menentukan penutupan dari

bawah F (Dilambangkan dengan +) Sebagai himpunan


atribut yang secara fungsional ditentukan oleh bawah F

Algoritma untuk menghitung +, Penutupan bawah F


mengakibatkan : = ;
sementara (Perubahan untuk mengakibatkan)melakukan
untuk setiap di F melakukan
mulai
jika mengakibatkan kemudian mengakibatkan :
= mengakibatkan
akhir

Database System Concepts - 5th Edition, Oct 5, 2006

7.30

Silberschatz, Korth and Sudarshan

Contoh Penutupan Atribut Set


R = (A, B, C, G, H, I)
F = {Sebuah B

Sebuah C
CG H
CG Saya
B H}

(AG)+

1. hasil = AG
2. hasil = ABCG (A Cdan Sebuah B)
3. hasil = ABCGH (CG H dan CG AGBC)
4. hasil = ABCGHI (CG Saya dan CG AGBCH)
Adalah AG candidate key?
1.

Apakah AG kunci super?


1.

2.

Apakah AG R? == Apakah (AG)+ R

Apakah setiap subset dari AG superkey?


1.

Apakah Sebuah R?== Adalah (A)+ R

2.

Apakah G R? Apakah == (G)+ R

Database System Concepts - 5th Edition, Oct 5, 2006

7.31

Silberschatz, Korth and Sudarshan

Penggunaan Penutupan Atribut


Ada beberapa kegunaan dari algoritma penutupan atribut:
Pengujian untuk superkey:

Untuk menguji apakah adalah superkey, kita menghitung +, dan


periksa apakah + berisi semua atribut R.

Pengujian dependensi fungsional

Untuk memeriksa apakah ketergantungan fungsional palka


(atau, dengan kata lain, dalam F+), Hanya memeriksa apakah
+.

Artinya, kita menghitung + dengan menggunakan penutupan


atribut, dan kemudian memeriksa jika mengandung .

Apakah tes sederhana dan murah, dan sangat berguna

Komputasi penutupan F

Untuk setiap R, kita menemukan penutupan +, Dan untuk


setiap S +, Kami output ketergantungan fungsional S.

Database System Concepts - 5th Edition, Oct 5, 2006

7.32

Silberschatz, Korth and Sudarshan

Canonical Sampul
Set dependensi fungsional dapat memiliki ketergantungan berlebihan

yang dapat disimpulkan dari yang lain

Sebagai contoh: Sebuah C adalah berlebihan dalam: {Sebuah


B,B C}

Bagian dari ketergantungan fungsional mungkin berlebihan

Mis: di RHS: {Sebuah B,B C,Sebuah CD} Dapat


disederhanakan
{Sebuah B,B C,Sebuah D}

Mis: di LHS: {A B,B C,AC D} Dapat disederhanakan


{A B,B C,Sebuah D}

Secara intuitif, penutup kanonik dari F adalah "minimal" set

dependensi fungsional setara dengan F, tidak memiliki dependensi


berlebihan atau bagian berlebihan dari dependensi

Database System Concepts - 5th Edition, Oct 5, 2006

7.33

Silberschatz, Korth and Sudarshan

Asing Atribut
Pertimbangkan satu set F dependensi fungsional dan ketergantungan

fungsional di F.

Atribut adalah asing di jika Sebuah


dan F secara logis berarti (F - { }) {( - Sebuah) }.

Atribut Sebuah adalah asing di jika Sebuah


dan set dependensi fungsional
(F - { }) { ( -Sebuah)} Logis menyiratkan F.

Catatan: Implikasi dalam arah yang berlawanan adalah sepele dalam

setiap kasus di atas, karena "lebih kuat" ketergantungan fungsional


selalu menyiratkan satu lebih lemah

Contoh: Mengingat F = {Sebuah C,AB C }

B adalah asing dalam AB C karena {Sebuah C, AB CLogis


menyiratkan} Sebuah C(Yakni hasil dari ketertinggalan Bdari AB
C).

Contoh: Mengingat F = {Sebuah C,AB CD}

C adalah asing dalam AB CD sejak SebuahB C dapat


disimpulkan bahkan setelah menghapus C

Database System Concepts - 5th Edition, Oct 5, 2006

7.34

Silberschatz, Korth and Sudarshan

Pengujian jika Atribut adalah asing

Pertimbangkan satu set F dependensi fungsional dan ketergantungan


fungsional di F.

Untuk menguji apakah atribut A adalah asing di

1.

menghitung ({} - Sebuah)+ menggunakan dependensi dalam F

2.

memeriksa bahwa ({} - Sebuah)+ mengandung ; Jika tidak,


Sebuah adalah asing di

Untuk menguji apakah atribut Sebuah adalah asing dalam


1.
2.

menghitung + hanya menggunakan dependensi dalam


F '= (F - { }) { ( -Sebuah)},
memeriksa bahwa + berisi A; jika tidak, A adalah asing dalam

Database System Concepts - 5th Edition, Oct 5, 2006

7.35

Silberschatz, Korth and Sudarshan

Canonical Sampul
Sebuahkanonik penutup untuk F adalah satu set dependensi Fcsehingga

F secara logis berarti semua dependensi di Fc, dan

Fc secara logis berarti semua dependensi di F, dan

Tidak ada ketergantungan fungsional dalam Fc berisi atribut asing, dan

Setiap sisi kiri ketergantungan fungsional dalam Fc adalah unik.

Untuk menghitung penutup kanonik untuk F:

ulangi
Gunakan aturan serikat untuk menggantikan dependensi di F
1 1 dan 1 2 dengan 1 1 2
Cari ketergantungan fungsional dengan
asing atribut baik dalam atau di
Jika atribut asing ditemukan, menghapusnya dari
sampai F tidak berubah

Catatan: aturan Uni mungkin menjadi berlaku setelah beberapa atribut asing

telah dihapus, sehingga harus kembali diterapkan

Database System Concepts - 5th Edition, Oct 5, 2006

7.36

Silberschatz, Korth and Sudarshan

Komputasi Cover Canonical

R= (A, B, C)
F = {A SM
BC
Sebuah B
AB C}

Menggabungkan Sebuah SM dan Sebuah Bke Sebuah SM

Set sekarang {A SM, B C, AB C}

Sebuah adalah asing dalam AB C

Periksa apakah hasil menghapus A dari AB Cini diterapkan oleh dependensi lain

Ya: pada kenyataannya, B Csudah ada!

Set sekarang {A SM, B C}

C adalah asing dalam Sebuah SM

Periksa apakah Sebuah C secara logis tersirat oleh Sebuah Bdan yang lainnya
dependensi

Ya:menggunakan transitivitas pada Sebuah B dan B C.


Bisa menggunakan penutupan atribut Sebuah dalam kasus yang lebih
kompleks

Penutup kanonik adalah:

Database System Concepts - 5th Edition, Oct 5, 2006

Sebuah B
BC
7.37

Silberschatz, Korth and Sudarshan

Lossless-join Dekomposisi
Untuk kasus R = (R1, R2), kami mengharuskan untuk semua

hubungan yang mungkin r pada skema R


r = R1 (r) R2 (r)

Sebuah dekomposisi R ke R1 dan R2 adalah lossless join jika

dan hanya jika pada salah sedikit dependensi berikut ini


dalam F+:

R1 R2 R1

R1 R2 R2

Database System Concepts - 5th Edition, Oct 5, 2006

7.38

Silberschatz, Korth and Sudarshan

Contoh
R = (A, B, C)

F = {A B, B C)

Dapat diuraikan dalam dua cara yang berbeda

R1 = (A, B), R2 = (B, C)

Lossless-join dekomposisi:
R1R2 = {B} dan B SM

Ketergantungan melestarikan

R1= (A, B), R2 = (A, C)

Lossless-join dekomposisi:
R1R2 = {Sebuah} dan Sebuah SebuahB

Tidak ketergantungan melestarikan


(Tidak dapat memeriksa B Ctanpa komputasi R1

Database System Concepts - 5th Edition, Oct 5, 2006

7.39

R2)

Silberschatz, Korth and Sudarshan

Ketergantungan Pelestarian

Membiarkan Fsaya adalah himpunan dari dependensi F+ yang


meliputi atribut hanya di Rsaya.

Dekomposisi adalah ketergantungan melestarikan, Jika


(F1 F2 ... Fn)+ = F+

Jika tidak, kemudian memeriksa update untuk pelanggaran


dependensi fungsional mungkin memerlukan komputasi
bergabung, yang mahal.

Database System Concepts - 5th Edition, Oct 5, 2006

7.40

Silberschatz, Korth and Sudarshan

Pengujian untuk Pelestarian


Ketergantungan
Untuk memeriksa apakah ketergantungan yang diawetkan dalam

dekomposisi R ke R1,R2, ..., Rn kita menerapkan tes berikut (dengan atribut


penutupan dilakukan sehubungan dengan F)

mengakibatkan =
sementara (Perubahan untuk mengakibatkan) Melakukan
untuk setiap Rsaya di dekomposisi
t = (mengakibatkan Rsaya)+Rsaya
mengakibatkan hasil = t

Jika mengakibatkan berisi semua atribut di , maka ketergantungan


fungsional
diawetkan.

Kami menerapkan tes pada semua dependensi dalam F untuk memeriksa

apakah dekomposisi suatu ketergantungan melestarikan

Prosedur ini membutuhkan waktu polinomial, bukan waktu eksponensial


yang diperlukan untuk menghitung F+ dan (F1 F2 ... Fn)+

Database System Concepts - 5th Edition, Oct 5, 2006

7.41

Silberschatz, Korth and Sudarshan

Contoh
R = (A, B, C )

F = {Sebuah B
B C}
Kunci = {Sebuah}

R tidak dalam BCNF


Pembusukan R1 = (A, B), R2 = (B, C)

R1 dan R2 dalam BCNF

Lossless-join dekomposisi

Ketergantungan melestarikan

Database System Concepts - 5th Edition, Oct 5, 2006

7.42

Silberschatz, Korth and Sudarshan

Pengujian untuk BCNF


Untuk memeriksa apakah ketergantungan non-sepele menyebabkan

pelanggaran BCNF

1. menghitung + (Penutupan atribut ), Dan


2. memverifikasi bahwa itu mencakup semua atribut R, Yaitu, ia adalah
superkey dari R.
Sederhana uji: Untuk memeriksa apakah sebuah skema relasi R adalah dalam

BCNF, cukup dengan memeriksa hanya dependensi pada set diberikan F


untuk pelanggaran BCNF, daripada memeriksa semua dependensi dalam F+.

Jika tidak ada dependensi dalam F menyebabkan pelanggaran BCNF,


maka tidak ada ketergantungan di F+ akan menyebabkan pelanggaran
BCNF baik.

Namun, dengan hanya menggunakan F adalah salah ketika menguji relasi

dalam dekomposisi R

Mempertimbangkan R = (A, B, C, D, E), Dengan F = { SebuahB, BC


D}

Membusuk R ke R1= (A, B) Dan R2= (A, C, D, E)


Baik dari dependensi di F berisi atribut hanya dari
(A, C, D, E) Sehingga kita mungkin menyesatkan untuk berpikir R2
memenuhi BCNF.
Bahkan, ketergantungan AC D di F+ menunjukkan R2 tidak dalam
BCNF.

Database System Concepts - 5th Edition, Oct 5, 2006

7.43

Silberschatz, Korth and Sudarshan

Pengujian Dekomposisi untuk BCNF


Untuk memeriksa apakah suatu relasi Rsaya dalam dekomposisi R adalah dalam

BCNF,

Entah R tessayauntuk BCNF sehubungan dengan pembatasan F untuk Rsaya


(Yaitu, seluruh FD dalam F+ yang berisi atribut hanya dari Rsaya)
atau menggunakan set asli dependensi F yang berpegang pada R, Tetapi
dengan tes berikut:
untuk setiap himpunan atribut Rsaya, Periksa + (Penutupan atribut
) Baik termasuk tidak ada atribut dari Rsaya-, Atau mencakup semua
atribut Rsaya.

Jika kondisi ini dilanggar oleh beberapa di F, Ketergantungan


(+- ) Rsaya
dapat ditampilkan untuk bertahan Rsaya, Dan Rsaya melanggar BCNF.
Kami menggunakan di atas ketergantungan untuk menguraikan Rsaya

Database System Concepts - 5th Edition, Oct 5, 2006

7.44

Silberschatz, Korth and Sudarshan

BCNF Dekomposisi Algoritma


mengakibatkan : = {R};
dilakukan : = False;
menghitung F+;
sementara (tidak dilakukan) melakukan
jika (Ada skema Rsaya di mengakibatkan yang tidak dalam BCNF)
kemudian mulai
membiarkan menjadi ketergantungan fungsional trivial yang memegang
pada Rsaya
sehingga Rsaya tidak dalam F+,
dan = ;
mengakibatkan : = (hasil - Rsaya) (Rsaya - ) (, );
akhir
lain dilakukan : = benar;
Catatan: setiap Rsaya adalah dalam BCNF, dan dekomposisi adalah lossless-join.

Database System Concepts - 5th Edition, Oct 5, 2006

7.45

Silberschatz, Korth and Sudarshan

Contoh Dekomposisi BCNF


R = (A, B, C )

F = {Sebuah B
B C}
Kunci = {Sebuah}

R tidak dalam BCNF (B C tapi B bukan superkey)


Pembusukan

R1 = (B, C)

R2 = (A, B)

Database System Concepts - 5th Edition, Oct 5, 2006

7.46

Silberschatz, Korth and Sudarshan

Contoh Dekomposisi BCNF


Asli hubungan R dan fungsional ketergantungan F

R = (branch_name, branch_city, aset,


customer_name, loan_number, jumlah )
F = {branch_name aset branch_city
loan_number jumlah branch_name }
Kunci = {Loan_number, customer_name}
Pembusukan

R1 = (branch_name, branch_city, aset )

R2 = (branch_name, customer_name, loan_number, jumlah )

R3 = (branch_name, loan_number, jumlah )

R4 = (customer_name, loan_number )

Akhir dekomposisi
R1,R3,R4

Database System Concepts - 5th Edition, Oct 5, 2006

7.47

Silberschatz, Korth and Sudarshan

BCNF dan Ketergantungan Pelestarian


Hal ini tidak selalu mungkin untuk mendapatkan dekomposisi BCNF yang
ketergantungan melestarikan
R = (J, K, L )

F = {JK L
L K}
Dua candidate key = JK dan JL

Rtidak dalam BCNF


Setiap dekomposisi R akan gagal untuk menjaga

JK L
Ini berarti bahwa pengujian untuk JK Lmemerlukan
bergabung

Database System Concepts - 5th Edition, Oct 5, 2006

7.48

Silberschatz, Korth and Sudarshan

Ketiga Bentuk Normal: Motivasi


Ada beberapa situasi di mana

BCNF tidak ketergantungan melestarikan, dan

memeriksa efisien untuk pelanggaran FD pada update


penting

Solusi: mendefinisikan bentuk normal lebih lemah, yang disebut

Bentuk Normal Ketiga (3NF)

Memungkinkan beberapa redundansi (dengan masalah yang


dihasilkan, kami akan melihat contoh nanti)

Tapi dependensi fungsional dapat diperiksa pada hubungan


individu tanpa komputasi bergabung.

Selalu ada-lossless join, dependensi melestarikan


dekomposisi menjadi 3NF.

Database System Concepts - 5th Edition, Oct 5, 2006

7.49

Silberschatz, Korth and Sudarshan

3NF Contoh
Hubungan R:

R = (J, K, L )
F = {JK L, L K}

Dua kandidat kunci: JK dan JL

R dalam 3NF
JK L JK adalah superkey
L K K yang terkandung dalam candidate key

Database System Concepts - 5th Edition, Oct 5, 2006

7.50

Silberschatz, Korth and Sudarshan

Redundansi dalam 3NF


Ada beberapa redundansi dalam skema ini
Contoh masalah karena redundansi dalam 3NF

R = (J, K, L)
F = {JK L, L K}
J
j1

L
l1

K
k1

j2

l1

k1

j3

l1

k1

nol

l2

k2

pengulangan informasi (misalnya, hubungan l1,k1)


perlu menggunakan nilai null (misalnya, untuk mewakili hubungan
l2,k2 dimana tidak ada nilai yang sesuai untuk J).

Database System Concepts - 5th Edition, Oct 5, 2006

7.51

Silberschatz, Korth and Sudarshan

Pengujian untuk 3NF


Optimasi: Perlu untuk memeriksa FD hanya di F, Tidak perlu periksa

semua FD dalam F+.

Gunakan penutupan atribut untuk memeriksa ketergantungan setiap

, jika adalah superkey.

Jika bukan superkey, kita harus memastikan jika setiap atribut dalam

yang terkandung dalam candidate key dari R

tes ini agak lebih mahal, karena melibatkan mencari candidate key

pengujian untuk 3NF telah terbukti NP-keras

Menariknya, dekomposisi menjadi bentuk normal ketiga


(dijelaskan kemudian) dapat dilakukan dalam waktu polinomial

Database System Concepts - 5th Edition, Oct 5, 2006

7.52

Silberschatz, Korth and Sudarshan

3NF Dekomposisi Algoritma


Membiarkan Fc menjadi penutup kanonik untuk F;
saya: = 0;
untuk setiap fungsional ketergantungan di Fc melakukan
jika tidak ada skema yang Rj,1j saya mengandung
kemudian mulai
saya: = i + 1;
Rsaya : =
akhir
jika tidak ada skema yang Rj,1j saya berisi kunci calon R
kemudian mulai
saya: = saya + 1;
Rsaya : = Sembarang tombol calon R;
akhir
kembali (R1,R2, ..., Rsaya)

Database System Concepts - 5th Edition, Oct 5, 2006

7.53

Silberschatz, Korth and Sudarshan

Dekomposisi 3NF Algoritma (cont.)


Algoritma di atas memastikan:

setiap skema relasi Rsaya dalam 3NF

dekomposisi ketergantungan melestarikan dan lossless-join

Bukti kebenaran adalah di akhir presentasi ini (klik di sini)

Database System Concepts - 5th Edition, Oct 5, 2006

7.54

Silberschatz, Korth and Sudarshan

Dekomposisi 3NF: sebuah contoh


Hubungan skema:

cust_banker_branch = (customer_id, employee_id, Branch_name, jenis )


Dependensi fungsional untuk skema relasi adalah:
1.

customer_id, employee_id branch_name, jenis

2.

employee_id branch_name

3.

customer_id, branch_name employee_id

Pertama-tama kita menghitung penutup kanonik

branch_name adalah asing dalam r.h.s. dari 1st ketergantungan

Tidak ada atribut lain adalah asing, sehingga didapatkan FC=


customer_id, employee_id jenis
employee_id branch_name
customer_id, branch_name employee_id

Database System Concepts - 5th Edition, Oct 5, 2006

7.55

Silberschatz, Korth and Sudarshan

Decompsition 3NF Contoh (cont.)

Itu untuk lingkaran menghasilkan mengikuti skema 3NF:


(customer_id, employee_id, jenis )
(employee_id, Branch_name)

(customer_id, branch_name, employee_id)


Perhatikan bahwa (customer_id, employee_id, jenis ) Berisi kunci kandidat dari
skema asli, sehingga tidak ada skema relasi lebih lanjut perlu ditambahkan

Jika FD dianggap dalam urutan yang berbeda, dengan 2nd satu dianggap setelah
3rd,
(employee_id, Branch_name)
tidak akan dimasukkan dalam dekomposisi karena merupakan bagian dari
(customer_id, branch_name, employee_id)

Ekstensi kecil dari algoritma dekomposisi 3NF: akhir untuk loop, mendeteksi dan
menghapus skema, seperti (employee_id, Branch_name), Yang adalah himpunan
bagian dari skema lain

Hasilnya tidak akan tergantung pada urutan FD dianggap

Skema 3NF resultan disederhanakan adalah:


(customer_id, employee_id, jenis)
(customer_id, branch_name, employee_id)

Database System Concepts - 5th Edition, Oct 5, 2006

7.56

Silberschatz, Korth and Sudarshan

Perbandingan BCNF dan 3NF


Itu selalu mungkin untuk terurai relasi menjadi seperangkat hubungan

yang dalam 3NF sedemikian rupa sehingga:

dekomposisi adalah lossless

dependensi yang diawetkan

Itu selalu mungkin untuk terurai relasi menjadi seperangkat hubungan

yang dalam BCNF sedemikian rupa sehingga:

dekomposisi adalah lossless

hal itu mungkin tidak mungkin untuk melestarikan dependensi.

Database System Concepts - 5th Edition, Oct 5, 2006

7.57

Silberschatz, Korth and Sudarshan

Desain Tujuan
Tujuan untuk desain database relasional adalah:

BCNF.

Lossless bergabung.

Ketergantungan pelestarian.

Jika kita tidak bisa mencapai hal ini, kita menerima salah satu

Kurangnya pelestarian ketergantungan

Karena penggunaan 3NF redundansi

Menariknya, SQL tidak menyediakan cara langsung menentukan

dependensi fungsional selain superkeys.

Dapat menentukan FD menggunakan pernyataan, tetapi mereka


mahal untuk menguji
Bahkan jika kita memiliki ketergantungan melestarikan dekomposisi,

menggunakan SQL kita tidak akan bisa efisien menguji


ketergantungan fungsional yang kiri sisi tidak kunci.

Database System Concepts - 5th Edition, Oct 5, 2006

7.58

Silberschatz, Korth and Sudarshan

Multivalued Dependensi (MVDs)


Membiarkan R menjadi skema relasi dan biarkan R dan

R. Itu multivalued ketergantungan

berpegang pada R jika dalam setiap hubungan hukum r (R),


untuk semua pasangan untuk tupel t1dan t2 di r sehingga t1[]
= t2[], Terdapat tuple t3 dan t4 di rsedemikian rupa sehingga:
t1[] = t2[] = t3 [] = t4 []
t3[] = t1[]
t3[R - ] = t2[R - ]
t4[] = t2[]
t4[R - ] = t1[R - ]

Database System Concepts - 5th Edition, Oct 5, 2006

7.59

Silberschatz, Korth and Sudarshan

MVD (cont.)
Tabel representasi

Database System Concepts - 5th Edition, Oct 5, 2006

7.60

Silberschatz, Korth and Sudarshan

Contoh
Membiarkan R menjadi skema relasi dengan satu set atribut yang

dipartisi menjadi 3 himpunan bagian tidak kosong.


Y, Z, W

Kita katakan bahwa Y Z(Y multidetermines Z)

jika dan hanya jika untuk semua hubungan yang mungkin r(R)
< y1,z1,w1 > r dan < y1,z2,w2 > r
kemudian
<y1,z1,w2 > r dan < y1,z2,w1 > r

Perhatikan bahwa karena perilaku Z dan W adalah identik berikut

bahwa

Y Zjika Y W

Database System Concepts - 5th Edition, Oct 5, 2006

7.61

Silberschatz, Korth and Sudarshan

Contoh (cont.)
Dalam contoh kami:

Tentu saja guru


Tentu saja buku
Definisi formal di atas seharusnya merumuskan gagasan

bahwa diberi nilai tertentu dari Y(Tentu saja) Itu memiliki


keterkaitan dengan seperangkat nilai-nilai Z (guru) dan satu
set nilai-nilai W (buku), Dan kedua set adalah dalam arti
independen satu sama lain.

Catatan:

Jika Y Z kemudian Y Z

Memang kita memiliki (dalam notasi di atas) Z1 = Z2


Klaim berikut.

Database System Concepts - 5th Edition, Oct 5, 2006

7.62

Silberschatz, Korth and Sudarshan

Penggunaan Dependensi multivalued


Kami menggunakan dependensi multivalued dalam dua cara:

1. Untuk menguji hubungan untuk menentukan apakah mereka


adalah hukum di bawah himpunan dependensi fungsional
dan multivalued
2. Untuk menentukan kendala pada set hubungan hukum.
Dengan demikian kita akan menyibukkan diri hanya dengan
hubungan yang memenuhi himpunan dependensi fungsional
dan multivalued.
Jika relasi r gagal untuk menyelesaikan ketergantungan

multivalued diberikan, kita dapat membangun hubungan r yang


tidak memenuhi ketergantungan multivalued dengan
menambahkan tupel untuk r.

Database System Concepts - 5th Edition, Oct 5, 2006

7.63

Silberschatz, Korth and Sudarshan

Teori MVDs
Dari definisi ketergantungan multivalued, kita dapat memperoleh

peraturan berikut:

Jika , Maka

Artinya, setiap dependensi fungsional adalah ketergantungan yang


multivalued
Itu penutupan D+ dari D adalah himpunan semua dependensi

fungsional dan multivalued logis tersirat oleh D.

Kita bisa menghitung D+ dari D, Dengan menggunakan definisi


formal dari dependensi fungsional dan dependensi multivalued.

Kita bisa mengelola dengan penalaran seperti untuk dependensi


multivalued sangat sederhana, yang tampaknya paling umum
dalam praktek

Untuk dependensi kompleks, lebih baik untuk alasan tentang set


dependensi menggunakan sistem aturan inferensi (lihat Lampiran
C).

Database System Concepts - 5th Edition, Oct 5, 2006

7.64

Silberschatz, Korth and Sudarshan

Bentuk Normal Keempat


Sebuah skema relasi R dalam 4NF sehubungan dengan set D

dependensi fungsional dan multivalued jika untuk semua dependensi


multivalued di D+ formulir , Di mana R dan R, setidaknya
satu hal berikut adalah:

adalah sepele (yakni, atau = R)

adalah superkey untuk skema R

Jika relasi berada dalam 4NF berada dalam BCNF

Database System Concepts - 5th Edition, Oct 5, 2006

7.65

Silberschatz, Korth and Sudarshan

Pembatasan Dependensi multivalued


Pembatasan dari D ke Rsaya D adalah himpunansaya terdiri dari

Semua dependensi fungsional di D+ yang meliputi atribut hanya


Rsaya

Semua multivalued dependensi bentuk


( Rsaya)
dimana Rsaya dan adalah di D+

Database System Concepts - 5th Edition, Oct 5, 2006

7.66

Silberschatz, Korth and Sudarshan

4NF Dekomposisi Algoritma


Hasilnya: = {R};
dilakukan : = False;
menghitung D+;
Misalkan Dsaya menunjukkan pembatasan D+ untuk Rsaya
sementara (tidak dilakukan)
jika (Ada skema Rsaya di mengakibatkan yang tidak 4NF) kemudian
mulai
membiarkan menjadi ketergantungan multivalued trivial
yang memegang
pada Rsaya sehingga Rsayatidak dalam Dsaya, Dan ;
mengakibatkan : = (mengakibatkan -Rsaya) (Rsaya - ) (, );
akhir
lain dilakukan: = True;
Catatan: setiap Rsaya dalam 4NF, dan dekomposisi adalah lossless-join

Database System Concepts - 5th Edition, Oct 5, 2006

7.67

Silberschatz, Korth and Sudarshan

Contoh
R = (A, B, C, G, H, I)

F = { Sebuah B
B HI
CG H }
R tidak dalam 4NF sejak Sebuah B dan Sebuah bukan superkey untuk R
Pembusukan

a) R1 = (A, B) (R1 dalam 4NF)


b) R2 = (A, C, G, H, I) (R2 tidak dalam 4NF)
c) R3 = (C, G, H) (R3 dalam 4NF)
d) R4 = (A, C, G, saya) (R4 tidak dalam 4NF)
Sejak Sebuah B dan B HI,Sebuah HI,Sebuah Saya

e) R5 = (A, saya) (R5 dalam 4NF)


f)R6 = (A, C, G) (R6 dalam 4NF)

Database System Concepts - 5th Edition, Oct 5, 2006

7.68

Silberschatz, Korth and Sudarshan

Selanjutnya Bentuk normal


Join dependensi generalisasi dependensi multivalued

menyebabkan proyek-join normal form (PJNF) (juga disebut


Bentuk normal kelima)

Sebuah kelas kendala bahkan lebih umum, mengarah ke bentuk

normal disebut domain-kunci normal form.

Masalah dengan kendala-kendala umum: sulit untuk alasan dengan,

dan tidak ada set set suara dan lengkap dari aturan-aturan inferensi
ada.

Oleh karena itu jarang digunakan

Database System Concepts - 5th Edition, Oct 5, 2006

7.69

Silberschatz, Korth and Sudarshan

Basis Data Keseluruhan Proses Desain


Kita mengasumsikan skema R diberikan

R bisa telah dihasilkan saat mengubah diagram ER untuk satu set


tabel.

R bisa menjadi hubungan yang berisi semua atribut yang menarik


(disebut yang universal sehubungan).

Normalisasi istirahat R ke dalam hubungan yang lebih kecil.

R bisa saja hasil dari beberapa desain ad hoc hubungan, yang


kemudian kita menguji / mengkonversi ke bentuk normal.

Database System Concepts - 5th Edition, Oct 5, 2006

7.70

Silberschatz, Korth and Sudarshan

ER Model dan Normalisasi


Ketika sebuah diagram ER dirancang dengan seksama, mengidentifikasi

semua entitas dengan benar, tabel yang dihasilkan dari diagram ER


tidak perlu normalisasi lebih lanjut.

Namun, dalam desain (tidak sempurna) yang nyata, akan ada

dependensi fungsional dari atribut non-key dari suatu entitas untuk


atribut lainnya dari entitas

Contoh: sebuah karyawan entitas dengan atribut


department_number dan department_address, Dan ketergantungan
fungsional department_number department_address

Desain yang baik akan membuat departemen entitas

Dependensi fungsional dari atribut non-key dari sebuah hubungan yang

ditetapkan mungkin, tapi jarang --- hubungan sebagian besar biner

Database System Concepts - 5th Edition, Oct 5, 2006

7.71

Silberschatz, Korth and Sudarshan

Denormalization untuk Kinerja


Mungkin ingin menggunakan non-normalisasi skema untuk kinerja
Misalnya, menampilkan customer_name bersama dengan

account_number dan menyeimbangkan membutuhkan join rekening


dengan deposan

Alternatif 1: Gunakan hubungan denormalized mengandung atribut

rekening dan juga deposan dengan semua atribut di atas

lebih cepat lookup

tambahan ruang dan waktu eksekusi ekstra untuk update

coding tambahan pekerjaan untuk programmer dan kemungkinan


kesalahan dalam kode tambahan

Alternatif 2: menggunakan pandangan terwujud didefinisikan sebagai

akun deposan

Manfaat dan kekurangan sama seperti di atas, kecuali ada pekerjaan


coding tambahan untuk programmer dan menghindari kemungkinan
kesalahan

Database System Concepts - 5th Edition, Oct 5, 2006

7.72

Silberschatz, Korth and Sudarshan

Lain Desain Isu


Beberapa aspek desain database tidak tertangkap oleh normalisasi
Contoh desain database yang buruk, yang harus dihindari:

Daripada pendapatan (company_id, tahun, jumlah ), Gunakan

earnings_2004, earnings_2005, earnings_2006, Dll, semua pada


skema (company_id, pendapatan).

Di atas adalah dalam BCNF, tetapi membuat query di tahun sulit


dan membutuhkan tabel baru setiap tahun

company_year(company_id, earnings_2004, earnings_2005,


earnings_2006)

Juga dalam BCNF, tetapi juga membuat query di tahun sulit dan
membutuhkan atribut baru setiap tahun.
Apakah contoh dari crosstab, Di mana nilai untuk satu atribut
menjadi nama kolom
Digunakan untuk spreadsheet, dan dalam alat-alat analisis data

Database System Concepts - 5th Edition, Oct 5, 2006

7.73

Silberschatz, Korth and Sudarshan

Pemodelan data Temporal


Temporal Data memiliki interval waktu selama hubungan data adalah valid.
Sebuahpotret adalah nilai data pada suatu titik tertentu dalam waktu
Beberapa usulan untuk memperluas model ER dengan menambahkan

waktu yang valid untuk

atribut, misalnya alamat pelanggan di berbagai titik dalam waktu

entitas, misalnya durasi waktu ketika sebuah account ada

hubungan, misalnya waktu selama pelanggan


dimiliki account

Tapi tidak ada standar yang diterima

Menambahkan hasil komponen temporal dalam dependensi fungsional

seperti

customer_id customer_street, customer_city


untuk tidak menuntut, karena alamat tersebut bervariasi dari waktu ke
waktu
Sebuahsementara ketergantungan fungsional X Y berpegang pada

skema R jika X ketergantungan fungsional Y memegang pada semua


snapshot untuk semua kasus hukum r (R)

Database System Concepts - 5th Edition, Oct 5, 2006

7.74

Silberschatz, Korth and Sudarshan

Pemodelan Temporal Data (cont.)


Dalam prakteknya, desainer database dapat menambahkan mulai dan

berakhir atribut waktu untuk hubungan

Misalnya Tentu saja(course_id, course_title)


Tentu saja(course_id, course_title, mulai, berakhir)

Kendala: tidak ada dua tupel dapat memiliki tumpang tindih kali
berlaku
Sulit untuk menegakkan efisien

Referensi kunci asing mungkin dengan versi sekarang data, atau data

pada titik waktu

Misalnya transkrip mahasiswa harus merujuk pada informasi saja


pada saat kursus itu diambil

Database System Concepts - 5th Edition, Oct 5, 2006

7.75

Silberschatz, Korth and Sudarshan

Akhir dari Bab

Database System Concepts, 5th Ed.


Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use

Bukti Kebenaran Algoritma


Dekomposisi 3NF

Database System Concepts, 5th Ed.


Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use

Kebenaran Algoritma Dekomposisi 3NF


Algoritma dekomposisi 3NF yang melestarikan ketergantungan (karena

ada hubungan untuk setiap FD di Fc)

Dekomposisi adalah lossless

Kunci kandidat (C) Adalah di salah satu hubungan Rsaya di dekomposisi


Penutupan candidate key di bawah Fc harus mengandung semua
atribut dalam R.
Ikuti langkah-langkah dari algoritma atribut penutupan menunjukkan
hanya ada satu tuple dalam hasil join untuk setiap tuple Rsaya

Database System Concepts - 5th Edition, Oct 5, 2006

7.78

Silberschatz, Korth and Sudarshan

Kebenaran Algoritma Dekomposisi 3NF


(sambungan.)
Klaim: jika sebuah relasi Rsaya adalah dalam dekomposisi yang dihasilkan
oleh
algoritma di atas, maka Rsaya memenuhi 3NF.
Membiarkan Rsaya dihasilkan dari ketergantungan
Membiarkan B akan ada ketergantungan non-sepele fungsional

pada Rsaya. (Kita hanya perlu mempertimbangkan FD yang sisi kanan


merupakan atribut tunggal.)

Sekarang, B bisa dalam baik atau tetapi tidak pada keduanya.

Pertimbangkan setiap kasus secara terpisah.

Database System Concepts - 5th Edition, Oct 5, 2006

7.79

Silberschatz, Korth and Sudarshan

Kebenaran Dekomposisi 3NF


(sambungan.)
Kasus 1: Jika B di :

Jika adalah superkey, kondisi-2 dari 3NF puas

Jika tidak harus berisi atribut beberapa tidak di

Sejak B adalah dalam F+ harus diturunkan dari Fc, Dengan


menggunakan atribut pada penutupan .

Penutupan atribut tidak telah menggunakan . Jika itu telah


digunakan, harus terkandung dalam penutupan atribut , Yang tidak
mungkin, karena kami mengasumsikan bukan superkey.

Sekarang, dengan menggunakan (- {B}) dan B, Kita dapat


memperoleh B
(Karena , dan B sejak B adalah non-sepele)

Kemudian, B adalah asing di sisi kanan ; yang tidak mungkin


karena adalah dalam Fc.

Jadi, jika B adalah dalam kemudian harus superkey, dan kondisi


kedua dari 3NF harus dipenuhi.

Database System Concepts - 5th Edition, Oct 5, 2006

7.80

Silberschatz, Korth and Sudarshan

Kebenaran Dekomposisi 3NF


(sambungan.)
Kasus 2: B adalah dalam .

Sejak adalah kunci kandidat, alternatif ketiga dalam definisi 3NF


ini sepele puas.

Bahkan, kita tidak dapat menunjukkan bahwa adalah superkey.

Ini menunjukkan secara pasti mengapa alternatif ketiga hadir dalam


definisi 3NF.

Q.E.D.

Database System Concepts - 5th Edition, Oct 5, 2006

7.81

Silberschatz, Korth and Sudarshan

Gambar 7.5: Contoh Hubungan r

Database System Concepts - 5th Edition, Oct 5, 2006

7.82

Silberschatz, Korth and Sudarshan

Gambar 7.6

Database System Concepts - 5th Edition, Oct 5, 2006

7.83

Silberschatz, Korth and Sudarshan

Gambar 7.7

Database System Concepts - 5th Edition, Oct 5, 2006

7.84

Silberschatz, Korth and Sudarshan

Gambar 7.15: Sebuah Contoh


Redundansi dalam Hubungan BCNF

Database System Concepts - 5th Edition, Oct 5, 2006

7.85

Silberschatz, Korth and Sudarshan

Gambar 7.16: Sebuah Ilegal R2


Hubungan

Database System Concepts - 5th Edition, Oct 5, 2006

7.86

Silberschatz, Korth and Sudarshan

Gambar 7.18: Hubungan Latihan Praktek


7,2

Database System Concepts - 5th Edition, Oct 5, 2006

7.87

Silberschatz, Korth and Sudarshan

Вам также может понравиться