Selasa, 05 Oktober 2010

NORMALISASI

BAB IX
PROSES NORMALISASI



NORMALISASI merupakan suatu proses yang mengidentifikasi grup atribut-atribut yang stabil, dimana terjadi sesuatu yang saling bebas dan saling tarik yang besar.
(Merupakan alat untuk mendesain database relational).

Cara yang benar untuk mendesain database dalam sistem yang bukan relational adalah : pertama-tama melakukan desain relational yang bersih dan kemudian sebagai suatu step yang terpisah dan berurutan untuk meletakkan desain relational kedalam struktur non relational apa saja, yang merupakan sasaran database yag terjadi untuk mendukung.
input : user view : formulir / laporan
Output : Entities/file, field

Terminologi model relational

S# Name Status City

London Domain
Paris, dst

Primary key
C
S S# Sname Sstatus Scity a
r
S1 Smith 20 London d
S2 Jones 10 Paris i
Relation S3 Blake 30 Paris Tuples n
S4 Clark 20 London a
S5 Adams 30 Athens l
i
t
Attributte y
Degree

Keterangan :
Relation : Table
Tuple : Baris atau record
Cardinality : Jumlah baris
Atributte : Kolom atau field
Degree : Jumlah kolom
Primary key : Identifikasi unik
Domain : Isi dari field





Normalisasi didasarkan pada konsep ketergantungan antar atribut.

FUNCTIONAL DEPENDENCY : Suatu atribut tergantung pada atribut lain secara fungsional
Pertimbangan hubungan R dengan atribut X dan Y :
Y dikatakan tergantung pada X jika dan hanya jika harga X didalam R berhubungan dengan Y, tepatnya satu Y dalam R.

R . X -------> R . Y
Atribut Y dari R tergantung secara fungsional pada atribut X dari R atau dapat dituliskan R . X menentukan fungsi R . Y.


contoh :

S S# SName SStatus Scity SP S# P# Qty
S1 Smith 20 London S1 P1 300
S2 Jones 10 Paris S1 P2 200
S3 Blake 30 Paris S1 P3 400
S4 Clark 20 London S1 P4 200
S5 Adams 30 Athens S1 P5 100
S1 P6 100
P P# PName PColor PWeight PCity S2 P1 300
P1 Nut Red 12 London S2 P2 400
P2 Bolt Green 17 Paris S3 P2 200
P3 Screw Blue 17 Rome S4 P2 200
P4 Screw Red 14 London S4 P4 300
P5 Cam Blue 12 Paris S4 P5 400
P6 Cog Red 19 London

Functional dependency di dalam tabel S, P, SP

SName PName
S#
S# SStatus P# PColor Qty
P#
SCity PWeight

PCity

S . S# -------> S . (SName, SStatus, SCity)
P . P# -------> P . (PName, PColor, PWeight, Pcity)
SP . (S# , P#) --------> SP . Qty

PROSES NORMALISASI
Proses untuk memecah suatu transaksi, kemudian mengelompokkan atribut-atribut sesuai dengan jenisnya tetapi mempunyai ketergantungan antar grup atribut. Membutuhkan Formulir dan data.



NORMALISASI
Bentuk Normal (NF)
Suatu tabel relasi dikatakan dalam bentuk normal tertentu jika telah memenuhi syarat sebagai suatu set batasan tertentu, yang bertujuan agar tabel yang besar dapat dipecah-pecah menjadi entity-entity yang kecil.
Semakin tinggi tingkat normalnya semakin kecil entitynya.
Ukuran normal : Tiap item harus diisi dengan lengkap / atributnya diisi lengkap.
Bentuk Normal Pertama (1NF)
Suatu relasi disebut 1NF jika dan hanya jika semua domain berisi hanya oleh satu nilai yang atomik (nilai yang tidak dapat dipecah lagi).
Suatu entity dikatakan 1NF jika tidak mempunyai repeating group (Suatu grup dengan item yang berulang-ulang).
Bentuk Normal Kedua (2NF)
Suatu relasi disebut 2NF jika dan hanya jika sudah dalam bentuk 1NF dan atribut-atribut yang bukan key tergantung secara penuh pada primary key.
Suatu entity disebut 2NF jika dan hanya jika sudah dalam bentuk 1NF dan jika setiap item data dalam entity tergantung secara penuh pada salah satu bagian dari primary key pada entity tersebut.
Bentuk Normal Ketiga (3NF)
Suatu relasi disebut 3NF jika dan hanya jika sudah dalam bentuk 2NF dan atribut-atribut yang bukan key tidak tergantung pada primary key. (transitive dependency : tergantung pada atribut non key yang lain)
Suatu entity disebut 3NF jika dan hanya jika sudah dalam bentuk 2NF dan jika semua fieldnya yang bukan merupakan bagian dari primary key atau mutually independent, yang mana tidak ada ketergantungan tambahan / transitif dependency.
Bentuk Normal Boyce/Codd (BCNF)
Suatu relasi disebut BCNF jika dan hanya jika dan hanya jika setiap determinat adalah calon / candidate key
Suatu entity disebut BCNF jika dan hanya jika sudah dalam bentuk 3NF dan jika setiap item data dalam beberapa item yang lain tergantung penuh secara fungsional adalah sebuah candidate key.
Bentuk Normal Keempat (4NF)
Suatu relasi disebut 4NF jika dan hanya jika terdapat multivalued dependency dalam R, dikatakan A-----> B, saat itu semua atribut dari R juga tergantung secara fungsional pada A.
Bentuk Normal Kelima (5NF) / PJNF
Suatu relasi disebut PJ / NF jika dan hanya jika setiap join dependency ketergantungan dalam R adalah konsekuensi dari candidate key R.

TAHAP NORMALISASI :
1. 1NF (Bentuk Normal Pertama)
Suatu entity dikatakan 1NF jika tidak mempunyai repeating group (suatu grup dengan item yang berulang-ulang).
langkah :
- K, a, b, c, d, r1, r2, r3

repeating grup
Original tabel mempunyai repeating group
- K, a, b, c, d
Pindahkan repeating group
- K, r
- Tempatkan repeating group ke dalam tabel baru
- Tambahkan primary key dari original tabel ke dalam tabel baru
2. 2NF (Bentuk Normal Kedua)
Suatu entity dikatakan 2NF jika telah terbentuk dalam 1NF dan setiap item data yang bukan key tergantung secara penuh (Functionaly dependency) pada salah satu bagian dari primary key pada entity tersebut
Langkah :
- K1 + K2 , a, b, c, d

Tidak semua atribut non key tergantung secara penuh pada primary key
- K1 + K2 , a, b, c
Pindahkan atribut yang tidak tergantung secara penuh pada primary key
- K2, d
Tempatkan bagian dari primary key ke dalam tabel baru.
3. 3NF (Bentuk Normal Ketiga)
Suatu entity dikatakan dalam 3NF jika telah terbentuk dalam 2NF dan setiap item data yang bukan key tergantung pada atribut yang bukan key (Transitif Dependency)
Langkah :

- K, a, b, c, d
Original tabel dengan transitif dependency
- K, a*, b, c
Pindahkan transitif dependency
- A, d
- Tempatkan ke dalam tabel baru
- Tentukan primary key
- Kembalikan primary key ke original tabel sebagai foreign key.
4. BCNF (Modifikasi dari 3NF)
Suatu entity dikatakan BCNF jika telah terbentuk dalam 3NF dan setiap item data yang bukan key tergantung penuh secara fungsional pada candidate key.
Langkah :

- K1, K2, K3, a, b

Kondisi :
- Ada lebih dari satu candidate key
- Masing-masing candidate primary key terdiri dari concatenated fields.
- Masing-masing candidate primary key membagi sebuah data item yang umum

Aksi :
- Tempatkan masing-masing candidate primary key dalam tabel tersendiri
- Distribusikan masing-masing non key ke hanya satu primary key.
- K1, K2, a
- K2, K3, b
5. 4NF (Bentuk Normal Keempat)
Suatu entity dikatakan 4NF jika telah terbentuk dalam 3NF dan terdapat multivalued dependency
Langkah :

- K1, a, b

Kondisi :
Terdapat multivalued dependency
Aksi :
Pisahkan kedalam tabel dependency tersendiri
- K1, a
- K2, b
6. 5NF (Bentuk Normal Kelima)
Suatu entity dikatakan 5NF jika terdapat join dependency diantara candidate key
Langkah :

- K1, K2, K3


Kondisi :
Terdapat join dependency diantara candidate key
Aksi :
Pisahkan kedalam tabel dependency tersendiri
- K1, K2
- K1, K3
- K2, K3

Keterangan :
Candidate key : Satu set atau lebih atribut yang bernilai unik yang mengidentifikasikan isian dari entity, disebut juga key.
Primary key : Satu atau lebih atribut yang bernilai unik yang membedakan satu entity (record) dengan yang lainnya.
Alternate key : Suatu candidate key yang tidak terseleksi sebagai primary key (Candidate key - primary key)
Foreign key : Suatu atribut yang merupakan bagian dari primary key atau entity yang lain.
Determinant : Suatu atribut atau lebih dimana beberapa atribut mempunyai ketergantungan secara penuh
Functional Dependency : Suatu penawaran antara dua atribut A dan B dalam suatu hubungan atau entity. B tergantung secara fungsional pada A jika dan hanya jika masing-masing nilai A dalam kolom dari hubungan telah digabungkan dengan satu nilai B pada waktu yang tepat.
Multivalued Dependency : Hubungan A diantara 3 atribut A, B dan C. B multivalued dependent pada A jika dan hanya jika nilai B tertentu membandingkan sepasang nilai A dan C tidak tergantung dari C.
= a tergantung pada K1, b tergantung pada K1 tapi antara a dan b tidak berhubungan.

Melakukan normalisasi sampai 5NF = over normalisasi :
Masalah dari over normalisasi :
1. Performance lambat untuk execute join
2. Beberapa kolom utama seperti foreign key dihamburkan disebertang masing-masing tabel.
3. Data dihamburkan dalam beberapa tabel
4. Overhead dari kunci tambahan.
Sehingga dipertimbangkan denormalisasi
Contoh : Normalisasi dari data INVOICE

Granger County Ranch Suply Co. Invoice No.
P.O. Box 27
Winona, WY 82775

INVOICE
Sold To.



CUSTOMER ORDER TERM SHIP VIA DATE


Quant Product ID Desription Unit cost Amount










THANK YOU

Cara menormalkan :
Semua itemnya dikeluarkan dan dibentuk tabel baru yang lebih lengkap item-itemnya

Invoice = faktur : menonjolkan rupiahnya : merupakan faktur tagihan
Order = Hanya jumlah barangnya saja, jumlah uangnya tidak dicantumkan tidak-apa-apa
Term = Pembayaran di muka

ITEM-ITEMNYA :

INVOICE NUMBER, Customer Number, Customer Name, Street, City, State, Zipcode, Telephone, Therms, Ship Via, date, (Quantity, product number, description, unit price, line total), Total order amaount.



Langkah-langkah untuk penempatan dalam 1NF
1. Tempatkan repeating group kedalam tabel baru
2. Duplikasikan primary key dari repeating group yang telah disaring ke tabel baru
3. Primary key dalam tabel baru akan menjadi primary key dari tabel yang telah dirangkai.

INVOICE

INVOICE NUMBER, Customer Number, Customer Name, Street, City, State, Zipcode, Telephone, Therms, Ship Via, date, Total order amaount.
LINE ITEM

INVOICE NUMBER, PRODUCT NUMBER, Quantity, Description, Unit price, Line total.

Langkah-langkah untuk penempatan dalam 2NF
1. Jika data-data item benar-benar tergantung secara penuh pada salah satu bagian dari primary key, pindahkan data item dan bagian dari primary key tadi kedalam tabel yang baru.
2. Buat nilai partial primary key yang telah dicopy dari original tabel menjadi primary key pada tabel baru.
3. Uji tiap-tiap tabel baru untuk menjamin bahwa tiap data item benar-benar saling tergantung pada tiap-tiap primary key.

INVOICE

INVOICE NUMBER, Customer Number, Customer Name, Street, City, State, Zipcode, Telephone, Therms, Ship Via, Date, Total order amaount.

LINE ITEM

INVOICE NUMBER, PRODUCT NUMBER, Quantity, Line total.

PRODUCT

PRODUCT NUMBER, Description, Unit price.

Langkah-langkah untuk penempatan dalam 3NF
1. Identifikasikan semua field yang termasuk dalam transitif dependency
2. Pindahkan semua item yang terlibat dalam transitif dependency ke dalam tabel baru
3. Identifikasikan primary key untuk entity
4. Pindahkan primary key untuk entity yang baru sebagai foreign key pada original entity.

INVOICE

INVOICE NUMBER, Customer Number *, Therms, Ship Via, Date, Total order amaount.


LINE ITEM

INVOICE NUMBER, PRODUCT NUMBER, Quantity, Line total.

PRODUCT

PRODUCT NUMBER, Description, Unit price.

CUSTOMER

CUSTOMER NUMBER, Customer Name, Street, City, State, Zipcode, Telephone,


Contoh :
Repeating group Jawab :
- A, B, C, d, e, f
A , B , C , d , e , f , g , r1 , r2 , r3 - B, r1, r2, r3
- A, C, e, g
- D, g



Repeating group

A , B , C , D , e , f , g , h , r1 , r2





Jawab :
A, B, C, D, f
A, B, D, e, g
D, h
H, f
C, r1, r2
































BAB X
SECURITY dan INTEGRITY


SECURITY Yaitu kemampuan untuk melindungi data terhadap akses dan aksi yang tidak berwenang pada database.

Sekuriti data sangat penting dalam sistem database, artinya mengontrol pengaksesan data dalam database terhadap orang-orang yang tidak berwenang, sehingga mencegah :
- Penyingkapan rahasia.
- Perubahan data.
- Perusakan / penghapusan data.
Ada 3 kelompok yang berhubungan dengan Database :
a. USER : User adalah pemilik data, user sesuai dengan departemennya hanya berwenang untuk sekumpulan data tertentu, kontrol pengaksesan data oleh user ini dapat dilakukan dengan memakai PASSWORD. Password ini mempunyai 2 fungsi :
- Memberi identifikasi seorang user
- Memberi kewenangan (authorized) dan hak (privilege)
Macam-macam hak pada sistem database adalah :
1. Hak retrieval : Mencari dan melaporkan
2. Hak Update pada record meliputi :
- Append (Menambah)
- Insert (Menyisipi)
- Modifikasi (Merubah)
- Delete (Menghapus)
3. Hak Definition File meliputi :
- Create (Mendefinisikan file baru)
- Revision (Merevisi definisi yang ada)
- Delete (Menghapus seluruh file)
- Memberi indeks
4. Hak GRANT (memberi) hak pada user.
Hak definition dan Grant hanya dimiliki oleh DBA.
Pembuatan Password harus mengingat hal-hal :
1. Mudah diingat
2. Sulit ditebak
3. Cukup sering diubah
4. Kerahasiaannya terlindungi.
b. Programer : Ada 2 macam programer
- Aplication Programer : Programer yang membuat program-program aplikasi
- System programer : Programer yang membuat program-program sistem yang memadukan dan mengontrol program-program aplikasi. misal : membuat menu untuk masing-masing user, membuat log transaction pemakaian program dan database dari para User dan sebagainya, dan harus mentaati prosedur password.
c. Operation staff : Sering kerusakan data disebabkan operator yang kurang terlatih atau petunjuk yang kurang memadai atau sulit dipahami. Operator yang berhubungan dengan database adalah operator program aplikasi.
Pengamanan data baginya antara lain berupa :
- Validasi yang cukup pada data entry
- Pengecekan jumlah counter dengan formulir data
- Operator database (staff DBA)
- Pada saat backup, data harus mendapat perhatian.


INTEGRITY Yaitu kemampuan untuk membuat data tetap valid jika terjadi pemakaian data yang sama pada waktu yang sama oleh beberapa user.

Ada 3 sudut pandang didalam integrity :
1. Semantic Integrity
2. Concurency Control : Data yang sama dipakai oaleh beberapa user pada waktu yang sama
Masalah dalam concurency : Lost update, dirty read, unrepeatable read
Cara menghilangkan problem concurency adalah mekanisme locking yaitu mekanisme untuk menghapus masalah concurency ada 2 :
• Exclusive Lock : Sebuah lock yang mengijinkan pemegang mengakses sendiri ke lock data, tidak ada proses yang lain (baca atau menulis)
• Shared Lock : Sebuah lock yang mengijinkan beberapa proses untuk mengakses bersama-sama suatu bagian dari database, satu update yang lain baca
Mekanisme locking menyebabkan terjadinya deadlock
3. Recovery : Kemampuan mempertahankan data bila terjadi kegagalan sistem, misal karena listrik mati, drive rusak, dan lain-lain.

Masalah yang merusak Integrity adalah Transaksi yaitu suatu unit kerja utuh yang mempunyai arti (terdiri dari suatu jajaran tindakan)
Sebuah transaksi dapat gagal karena :
• Suatu tindakan melanggar semantic integrity (Integritas Penawaran)
• User membatalkan transaksi
• Terjadi IO Error
• Dead Lock / jalan buntu mogok
• Kegagalan aplikasi program
• Sistem crash, O/S problem atau H/W

Concurrent Control yaitu pemakaian data yang sama oleh beberapa user pada waktu yang sama, concurrent control terjadi didalam lingkungan yang multi user.
Akibat adanya concurrent control mengakibatkan masalah sbb :
- Lost Update yaitu kehilangan data pada saat terjadi update
- Dirty Read yaitu terjadinya kerusakan data pada saat membaca
- Unrepeatable read yaitu terjadi proses perulangan pembacaan data
Untuk mengatasi masalah diatas diperlukan mekanisme locking, ada 2 jenis mekanisme locking yaitu :
1. Share Lock yaitu mekanisme penguncian data dilakukan oleh pemegang lock dimana semua user boleh membaca(read) tetapi hanya satu yang menulis(write).
2. Exclusive Lock yaitu mekanisme penguncian data dilakukan oleh pemegang lock dimana hanya satu yang boleh read atau write sedangkan user yang lain tidak boleh read atau write.
Jika mekanisme locking dilakukan dan terjadi adanya saling menunggu diantara user yang menjalankan transaksi sampai dengan membentuk circulair wait maka transaksi nya akan terjadi masalah baru yaitu deadlock yang mengakibatkan proses macet pada lingkungan multiuser diakibatkan pemakaian data secara concurrent.

Analogi traffic jam dari Dead Lock :
• Presequence / penjadwalan transaksi : Tidak ada perselisihan proses (menggunakan data yang sama) diijinkan untuk menjalankan bersama-sama
• Pre-Empt : Membutuhkan suatu mekanisme untuk mendeteksi sumber-sumber deadlock
• Pre-Claim / pesan tempat dulu : Meminta semua proses yang diupdate untuk request-with-lock semua sumber yang dibutuhkan untuk mensukseskan transaksi yang lengkap
• Pre-Order : Membutuhkan ordering untuk semua data yang diproses (semua kebutuhan data diprioritaskan, tetapi jika terjadi deadlock data yang besar didahulukan)

Two-Phase-Locking : Mekanisme untuk memberikan suatu lock, suatu ketika sebuah transaksi membebaskan lock pada data object (tidak dapat additional lock).


BACKUP and RECOVERY terdiri dari :
• Update / Image log: Menyimpan record sebelum dan sesudah perubahan
• Backup Dump : Menyimpan semua isi dari database pada media terpisah
• Transaction log : Menyimpan semua isi dari database pada media terpisah
• Audit trial : Menyimpan transaksi dalam bentuk siapa, kapan, dimana dan status hasilnya
Strategi yang dipakai :
• Dual Recording Database
• Periodic Dumping
• Logging input data transaction
• Logging change to database