Functional Dependency
Database
by: Rosni Lumbantoruan, PhD
1 Implementing View\RSL
Capaian Pembelajaran
• Dapat memahami Functional Dependency
• Dapat mengaplikasikan Functional Dependency
2
• Sudah dipelajari membangun basis data dengan ERD dan mengkonversi ERD menjadi tabel.
• Selanjutnya memastikan tabel-tabel yg sudah bentuk sudah berstruktur baik melalui tahapan normalisasi.
• Normalisasi adalah memperbaiki desain logis untuk menghasilkan relasi dengan struktur yang baik.
• Menghindari duplikasi data dalam penyimpanan
• Memenuhi referential integrity tertentu, misalnya satu baris pada suatu table hanya dapat berelasi dengan paling banyak satu baris pada table yang berelasi.
• Memudahkan pemeliharaan data (maintenance) dengan menghindari anomali yang timbul akibat insertion, update, dan deletion.
• Menghasilkan desain yang lebih baik untuk mempermudah pertumbuhan basisdata kedepannya (tambah data, tambah relasi/tabel, dll).
Pengantar
3
• Sebelum melakukan normalisasi diperlukan dulu pemahaman tentang:
• Operasi pada basisdata
• Anomali yang dapat timbul
• Functional Dependency
s
Pengantar
4
Penambahan data baru (baris baru) menimbulkan duplikasi data atau data baru tidak dapat disimpan.
Insertion Anomaly
5
Mengubah alamat dari value furniture dari Plano, Tx ke
Odessa TX, mengharuskan perubahan pada 2 baris lainnya.
Apabila perubahan ini terlupakan, maka
akan
terjadi update anomaly.Update Anomaly
6
Perubahan data pada baris data
mengharuskan perubahan data pada baris
yang lain.
Membuang orderID 1006 menyebabkan hilangnya informasi:
• customer ID dan atribut terkait,
• Deskripsi tentang dining table dan writer’s desk. Sementara entertainment center tidak hilang karena masih ada di order ID 1007
Deletion Anomaly
7
Penghapusan baris data menyebabkan kehilangan data yang mungkin masih dibutuhkan.
Latihan
8
• Dependency merupakan konsep yang mendasari
normalisasi. Dependensi menjelaskan hubungan antar atribut, atau secara lebih khusus menjelaskan nilai
suatu atribut yang menentukan nilai atribut lainnya.
• Ada beberapa jenis dependency:
o Trivial Functional Dependency
o Full vs. Partial Functional Depencency o Transitive depencency
Dependency
9
Nilai dari suatu atribut menentukan nilai dari atribut yang lain.
NOTASI: .
• Ketergantungan antara dua buah atribut atau dua buah himpunan atribut.
• Analogi: Jika ada relasi R dengan dua buah atribut yaitu X dan Y, maka dinotasikan dengan R(X,Y).
• Y dikatakan functional dependency terhadap X apabila setiap nilai dalam X berhubungan dengan satu nilai pada Y.
•
Functional dependency
10
Functional dependency Example
11
• CustomerID name?
• Name customerID?
Functional dependency - Example
12
• Attributes:
• orderID
• orderDate
• CustomerID
• Name
• Address
• ProductID
• Description
• Finish
• Price
• Quantity
Functional dependency - Example
13
• Attributes:
• orderID
• orderDate
• CustomerID
• Name
• Address
• ProductID
• Description
• Finish
• Price
• Quantity
Potential Functional Dependencies:
• Trivial Functional Dependency:
• Augmented Functional Dependency
• Atribut yang bukan key (non-key attributes) bergantung kepada sebagian saja dari determinant-nya.
• Equivalent Functional Dependency
• Determinant dan non-key attributes dapat bertukar tempat.
• Apabila trivial functional dependency ditemukan pada relasi, maka trivial FD tersebut harus di-eliminasi.
•
Trivial Functional Depencency
14
Trivial Functional Depencency Contoh
15
Trivial Functional Depencency Contoh
16
Identifying PK using FD
17
• Steps to identify a Primary Key
• Identify all candidate key(s) by looking at the determinants
• Determine which candidate key is not functionally dependent on any other candidate key. This is your primary key (PK)
• PK Example: order_ID + product_ID
Exercise
18
Full vs. Partial Functional Dependency
19
Full dependency
• Determinants have the minimal number of attributes (i.e PK attributes) to maintain the functional dependency with all non-key attributes.
• B is functionally dependent on A but not on a subset of A) order_id, product_id quantity
Partial dependency
• Non-key attributes are functionally dependent on a subset of the PK
order_id order_date, customer_id, name, address product_id description, finish, price
So, there are 7 partial functional dependencies
Exercise
20
• The PK is a determinant for another attribute which is a determinant for a third attribute.
B is functionally dependent on A C is functionally dependent on B
C is transitively dependent on A through B A is not functionally dependent on B or C
•
Transitive Functional Depencency
21
Transitive Functional Depencency - Example
22
The transitive dependency exists on order_id through customer_id.
Order_id customer_id name, address
Exercise
23
• Selain menggunakan notasi →, hubungan functional dependency dapat dinyatakan dengan diagram.
Diagram Functional Dependency
24
25
Source: Dustin Ormond