Minggu, 21 April 2013


DESAIN SISTEM BASIS DATA

Dalam sebuah sistem basis data ada sebuah istilah bernama entitas yang berarti :
Entitas adalah sesuatu yang ada dengan sendirinya, meskipun tidak perlu eksistensi material. Secara khusus, abstraksi dan fiksi hukum biasanya dianggap sebagai entitas. Secara umum, ada juga ada anggapan bahwa suatu entitas itu bernyawa.
Dalam bisnis, suatu entitas adalah orang, departemen, tim, perusahaan, koperasi, kemitraan, atau kelompok lain dengan siapa adalah mungkin untuk melakukan bisnis.
Kadang-kadang, entitas digunakan dalam pengertian umum makhluk, iya atau tidak memiliki rujukan keberadaan materi, misalnya, sering disebut sebagai entitas tanpa bentuk jasmani (non-fisik entitas), seperti bahasa.
The entitative adalah bentuk kata sifat dari entitas benda. Sesuatu yang entitative adalah "dianggap sebagai entitas murni, disarikan dari semua keadaan", yaitu, dianggap sebagai entitas sendiri, terpisah dari keadaan petugas.
Entitas adalah sesuatu yang memiliki keberadaan yang unik dan berbeda, walaupun tidak harus dalam bentuk fisik. Abstraksi, misalnya, biasanya dianggap juga sebagai suatu entitas. Dalam pengembangan sistem, entitas digunakan sebagai model yang menggambarkan komunikasi dan pemrosesan internal seperti misalnya membedakan dokumen dengan pemrosesan pesanan.

Entitas dalam informatika

1.      Analisis Data, Informasi
Sebuah database dapat dimodelkan sebagai
-          Sekumpulan entitas
-          Hubungan antarentitas
Entitas (entity) adalah sebuah objek yang keberadaannya dapat dibedakan terhadap objek lain
Entitas dapat berupa orang, benda, tempat, kejadian, konsep
            Contoh:
                Orang: MAHASISWA, DOSEN, PEMASOK, PENJUAL
                Benda: MOBIL, MESIN, RUANGAN
                Tempat: NEGARA, DESA, KAMPUNG
                Kejadian: PENJUALAN, REGISTRASI
                Konsep: REKENING, KURSUS
    Sebuah entitas memiliki sejumlah atribut
        Contoh: mahasiswa memiliki nama dan alamat
    Himpunan entitas adalah sekumpulan entitas yang berbagi atribut yang sama
        Contoh: sekumpulan mahasiswa, dosen, atau perusahan.
Entitas adalah sesuatu yang ada dan dapat melaksanakan suatu kegiatan dan dapa berupa subyek hukum tersendiri.
entitas itu suatu bagian dari suatu proses yang meliputi data dan informasi dimana entitas itusendiri terlibat dalam suatu proses pembuatan data berubah menjadi sebuah informasi  yang dibutuhkan, entitas itu sendiri dibagi menjadi 2 yaitu entitas luar dan dalam. entitas itu objek (benda) di dunia nyata yang dapat dibedakan dari objek lain. Entitas adalah orang, tempat, objek, kejadian, atau konsep tentang data yang tercatat

RECORD / TUPEL
Dalam ilmu komputer, record (juga disebut tupel, struct, atau senyawa data) adalah salah satu struktur data sederhana. Sebuah record adalah nilai yang berisi nilai-nilai lain, biasanya dalam jumlah tetap dan berurutan dan biasanya diindeks oleh nama. Unsur-unsur catatan biasanya disebut anggota.
Record (basis data) merupakan kumpulan dari elemen-elemen data yang terkait dalam sebuah basis data. Secara ringkas, database dapat dikatakan sebagai sebuah tabe yang memiliki baris alias record dan kolom atau field. Setiap baris menyatakan elemen-elemen data yang saling berkaitan. Sebagai contoh dalam suatu tabel memiliki kolom nama, alamat, tanggal lahir, pekerjaan. Maka satu record adalah data sau orang yang terdiri atas nama, alamat, tanggal lahir dan pekerjaan.
Kumpulan elemen-elemen yang saling berkaitan menginformasikan tentang suatu entitas secara lengkap. Dan suatu tuple (record) mewakili satu data atau informasi.

Contoh : Record entry mahasiswa adalah kumpulan data value dari field nobp, nama, jurusan, dan alamat per-barisnya. Dalam database, record disebut juga baris.

Misalnya, tanggal dapat disimpan sebagai catatan yang mengandung medan tahun numerik, bidang sebulan direpresentasikan sebagai string, dan lapangan sehari-of-bulan numerik. Sebagai contoh lain, record Personil mungkin berisi nama, gaji, dan pangkat. Sebagai contoh lain, rekor Lingkaran mungkin berisi pusat dan radius. Dalam hal ini, pusat sendiri mungkin direpresentasikan sebagai record titik yang mengandung koordinat x dan y.
record dibedakan dari array oleh fakta bahwa jumlah mereka bidang biasanya tetap, masing-masing bidang memiliki nama, dan bahwa setiap bidang mungkin memiliki jenis yang berbeda.
Sebuah tipe record adalah tipe data yang menggambarkan nilai-nilai tersebut dan variabel. Bahasa komputer yang paling modern memungkinkan programmer untuk menentukan jenis catatan baru. Definisi ini mencakup menentukan tipe data setiap field dan sebuah identifier (nama atau label) dengan yang dapat diakses. Dalam teori tipe, jenis produk (tanpa nama field) umumnya lebih disukai karena kesederhanaan mereka, tetapi tipe catatan yang layak dipelajari dalam bahasa seperti F-sub Sistem. Karena jenis-teoritis mungkin berisi catatan kelas fungsi-diketik bidang selain data, mereka dapat mengekspresikan banyak fitur dari pemrograman berorientasi objek.
Rekaman dapat ditemui di media penyimpanan, termasuk memori utama dan perangkat penyimpanan massal seperti pita magnetik atau hard disk. Rekaman adalah komponen fundamental dari struktur data yang paling, struktur data terutama terkait. Banyak file komputer diatur sebagai array dari catatan logis, sering dikelompokkan menjadi catatan fisik yang lebih besar atau blok untuk efisiensi.
Parameter dari suatu fungsi atau prosedur sering bisa dilihat sebagai bidang variabel catatan, dan argumen dilewatkan ke fungsi yang dapat dipandang sebagai nilai tertinggi yang akan ditugaskan untuk variabel yang pada saat panggilan. Juga, dalam panggilan stack yang sering digunakan untuk menerapkan prosedur panggilan, setiap entri adalah record aktivasi atau frame panggilan, yang berisi parameter prosedur dan variabel lokal, alamat pengirim, dan bidang internal lainnya.
Sebuah objek dalam berorientasi obyek bahasa pada dasarnya adalah sebuah catatan yang berisi prosedur khusus untuk menangani rekaman itu, dan objek tipe data (sering disebut kelas obyek) merupakan elaborasi dari jenis catatan. Memang, di sebagian besar bahasa berorientasi objek, catatan kasus hanya khusus dari objek.
Sebuah record dapat dilihat sebagai analog komputer dari matematika tupel. Dalam nada yang sama, tipe record dapat dilihat sebagai analog bahasa komputer dari produk Cartesian dari dua atau lebih set matematis, atau pelaksanaan suatu jenis produk abstrak dalam bahasa tertentu.
Dalam konteks database relasional, Row-juga disebut record atau tupel, item tunggal implisit terstruktur data dalam tabel. Dalam istilah sederhana, tabel database dapat dianggap sebagai terdiri dari baris dan kolom atau bidang. Setiap baris dalam tabel merupakan sekumpulan data terkait, dan setiap baris dalam tabel memiliki struktur yang sama.
Misalnya, dalam sebuah tabel yang mewakili perusahaan, setiap baris akan mewakili satu perusahaan. Kolom mungkin mewakili hal-hal seperti nama perusahaan, perusahaan alamat jalan, apakah perusahaan publik yang dimiliki, nomor PPN, dll. Dalam tabel yang mewakili asosiasi karyawan dengan departemen, setiap baris akan mengasosiasikan satu karyawan dengan satu departemen.
Dalam penggunaan kurang formal, misalnya untuk database yang tidak formal relasional, sebuah record setara dengan baris seperti yang dijelaskan di atas, tetapi biasanya tidak disebut sebagai berturut-turut.
Struktur implisit berturut-turut, dan makna dari nilai-nilai data yang berturut-turut, mensyaratkan bahwa baris dipahami sebagai menyediakan suksesi nilai data, satu di setiap kolom tabel. Baris tersebut kemudian ditafsirkan sebagai relvar terdiri dari satu set tupel, dengan masing-masing tuple yang terdiri dari dua item: nama kolom yang relevan dan nilai baris ini menyediakan untuk kolom tersebut.

FIELD / ATTRIBUTE
Dalam komputasi, atribut adalah spesifikasi yang mendefinisikan properti dari sebuah, elemen file objek, atau. Hal ini juga dapat merujuk atau menetapkan nilai tertentu untuk contoh yang diberikan tersebut.
Field adalah sebuah unit data yang berisi satu atau lebih karakter (byte). Ia merupakan unit terkecil dari informasi berharga dalam database. setiap field memiliki nama field yang menggambarkan jenis data yang harus dimasukkan ke dalam field. Contoh field adalah nama pertama Anda, alamat jalan, atau jenis kelamin Anda.
Untuk kejelasan, atribut harus lebih tepat dianggap metadata. Namun, dalam penggunaan aktual, atribut panjang dapat dan sering diperlakukan sebagai setara dengan properti tergantung pada teknologi yang sedang dibahas.
Atribut dari sebuah objek biasanya terdiri dari nama dan nilai, dari suatu elemen, jenis atau nama kelas, dari sebuah file, nama dan ekstensi.
     Setiap atribut bernama memiliki seperangkat aturan yang disebut terkait operasi: satu tidak menambahkan karakter atau memanipulasi dan memproses array integer sebagai objek foto-satu tidak memproses teks sebagai titik jenis floating (angka desimal).
     Oleh karena itu, definisi objek dapat diperpanjang dengan memaksakan mengetik data: format representasi, nilai default, dan operasi hukum (aturan) dan pembatasan ("Pembagian dengan nol tidak akan ditoleransi!") Semua berpotensi terlibat dalam mendefinisikan atribut, atau sebaliknya, dapat dikatakan sebagai atribut dari tipe tersebut objek. Sebuah file JPEG tidak diterjemahkan oleh operasi yang sama (namun sama mereka mungkin-ini semua grafis format data) sebagai file PNG atau BMP, juga adalah nomor floating point diketik dioperasikan pada aturan diterapkan pada bilangan bulat panjang diketik.
Sebagai contoh, dalam komputer grafis, obyek garis dapat memiliki atribut seperti ketebalan (dengan nilai riil), warna (dengan nilai deskriptif seperti cokelat atau hijau atau nilai-nilai yang didefinisikan dalam model warna tertentu, misalnya RGB), atribut gagah, dll sebuah objek lingkaran dapat didefinisikan dalam atribut yang sama ditambah asal dan jari-jari.


Field dapat didesain dengan panjang maksimun terntentu. Field juga dapat didesain dengan tipe data berbeda, semisal hanya teks, atau hanya angka, tanggal, waktu, atau bahkan hanya jawaban “ya” dan “tidak”, link web, gambar, suara dan video.
Contoh Penggunaan Atribut

C #
Dalam bahasa pemrograman C #, atribut metadata melekat lapangan atau blok kode seperti majelis, anggota dan jenis, dan setara dengan penjelasan di Jawa. Atribut dapat diakses untuk kedua compiler dan pemrograman melalui refleksi.
Pengguna bahasa melihat banyak contoh di mana atribut yang digunakan untuk mengatasi masalah lintas sektoral dan mekanistik lain atau menggunakan platform. Hal ini menciptakan kesan palsu bahwa ini adalah satu-satunya tujuan mereka dimaksudkan. Dengan atribut, adalah mungkin untuk memperpanjang atribut seperti abstrak, disegel, atau publik.
Penggunaan khusus mereka sebagai metadata yang tersisa untuk pengembang dan dapat mencakup berbagai jenis informasi tentang setiap kelas aplikasi yang diberikan, dan anggota yang tidak contoh spesifik. Keputusan untuk mengekspos setiap atribut yang diberikan sebagai properti juga diserahkan kepada pengembang seperti keputusan untuk menggunakannya sebagai bagian dari kerangka aplikasi yang lebih besar.
Atribut diimplementasikan sebagai kelas yang berasal dari System.Attribute. Mereka sering digunakan oleh layanan CLR, seperti COM, serialisasi Remoting interoperabilitas, dan dapat dilihat pada saat runtime.
Contoh ini menunjukkan bagaimana atribut didefinisikan di C #:
[Obsolete("Use class C1 instead", IsError = true)] 
public class C {...}                             

public class ObsoleteAttribute: Attribute {        
public string Message{ get; }                     
public bool IsError{ get; set; }
public ObsoleteAttribute() {...}
public ObsoleteAttribute(string msg) {...}
public ObsoleteAttribute(string msg, bool error) {...}}
 
[Obsolete]
[Obsolete("This is obsolete")]
[Obsolete("This is obsolete", false)]
[Obsolete("This is obsolete", IsError = false)]
Parameter posisi seperti parameter pertama dari tipe string di atas adalah parameter konstruktor atribut itu. Nama parameter seperti parameter Boolean pada contoh adalah properti dari atribut dan harus menjadi nilai konstan.
Atribut harus kontras terhadap dokumentasi XML yang juga mendefinisikan metadata, tetapi tidak termasuk dalam perakitan dikompilasi dan karena itu tidak dapat diakses pemrograman.

Multi-nilai database
Pada banyak sistem database relasional pasca-atau multi-nilai, relatif terhadap SQL, tabel file, baris item, dan kolom adalah atribut. Baik dalam database dan kode, atribut ini identik dengan properti dan variabel meskipun atribut dapat dijelaskan lebih jauh mengandung nilai-nilai dan subvalues??.
Yang pertama dari database ini adalah sistem operasi memilih. Dua platform saat ini termasuk Universe Rocket U2 dan 'Caché InterSystems.

XML
Dalam XML, atribut adalah markup membangun terdiri dari pasangan nama / nilai yang ada dalam tag-tag awal atau kosong-elemen. Bahasa markup, seperti HTML dan XML, gunakan atribut untuk menggambarkan data dan format data.
Sebuah contoh yang baik adalah proses nilai XML menugaskan ke properti (unsur). Perhatikan bahwa nilai elemen ditemukan sebelum tag akhir (terpisah), bukan dalam elemen itu sendiri. Unsur itu sendiri mungkin memiliki sejumlah atribut yang ditetapkan (NAMA = "IAMAPROPERTY").
Jika elemen tersebut dapat dianggap sebagai properti (CUSTOMER_NAME) dari entitas lain (katakanlah PELANGGAN), elemen dapat memiliki nol atau lebih atribut (sifat) sendiri (CUSTOMER_NAME adalah TYPE = "KINDOFTEXT").

RELASI
Dalam teori database relasional, relasi adalah satu set tupel (d1, d2, ..., dj), di mana setiap elemen dn adalah anggota Dn, domain data Setiap domain yang berbeda yang digunakan dalam definisi. hubungan disebut atribut, dan setiap atribut biasanya bernama.
Satu set atribut (atribut nama dengan domain mereka terkait) disebut skema relasi (atau skema relasi). Kadang-kadang skema relasi diambil untuk memasukkan nama untuk hubungan itu sendiri. Sebuah skema relasi juga disebut skema tabel (atau skema tabel). Suatu relasi sehingga dipandang sebagai suatu Instansiasi dari skema relasi.
Namun perlu dicatat bahwa skema relasional dapat merujuk ke skema satu seluruh (relasional) database.
Dalam implementasi, domain dari setiap atribut secara efektif tipe data.
Dalam SQL, bahasa query untuk database relasional, hubungan diwakili oleh tabel, di mana setiap baris tabel merupakan tuple tunggal, dan di mana nilai-nilai dari masing-masing bentuk atribut kolom.
Description: E:\Data Kresna Prasmadewa\Kuliah\Sem 2\Sistem Basis Data\SBD 3\relational database.jpg
EF Codd awalnya digunakan istilah dalam arti matematika dari hubungan finitary, satu set tupel pada beberapa set n set S1, S2, .... , Sn.
Dimana semua nilai dari setiap atribut relasi adalah atom, hubungan yang dikatakan dalam bentuk normal pertama.
Contoh:
Di bawah ini adalah contoh dari sebuah hubungan yang tiga atribut bernama: 'ID' dari domain bilangan bulat, dan 'Nama' dan 'Alamat' dari domain string:
ID (Integer) Nama (String) Alamat (String)
102 Yonezawa Akinori Naha, Okinawa
202 Murata Makoto Sendai, Miyagi
104 Sakamura Ken Kumamoto, Kumamoto
152 Matsumoto Yukihiro Okinawa, Okinawa

Dalam teori relasional, tapi tidak di SQL, tupel yang unordered - salah satu tidak bisa mengatakan "The tuple dari 'Murata Makoto' berada di atas tupel dari 'Matsumoto Yukihiro'", atau dapat dikatakan "The tuple dari 'Yonezawa Akinori' adalah pertama tuple. "
Basis variabel dan diturunkan hubungan hubungan variabel (tampilan)

Hubungan variabel (relvars) diklasifikasikan menjadi dua kelas: variabel hubungan dasar dan variabel hubungan diturunkan. Dengan menerapkan ekspresi aljabar relasional atau ekspresi kalkulus relasional untuk satu atau lebih variabel hubungan, satu nilai hubungan baru berasal.
Sebuah variabel hubungan dasar adalah hubungan sumber variabel yang tidak berasal dari setiap variabel hubungan lain. Dalam SQL, bahasa database database relasional, tabel basis jangka secara kasar dapat dianggap sebagai variabel relasi dasar. Dengan menggunakan Bahasa Definisi Data (DDL), ia mampu mendefinisikan variabel dasar hubungan. Dalam SQL, dengan menggunakan membuat sintaks TABLE, ia mampu mendefinisikan variabel dasar hubungan. Berikut ini adalah contoh.

CREATE TABLE List_of_people (
 ID INTEGER,
 Name CHAR(40),
 Address CHAR(200),
 PRIMARY KEY (ID)
)
Sebuah variabel hubungan diturunkan adalah variabel hubungan yang berasal dari satu atau lebih variabel hubungan dengan menerapkan ekspresi aljabar relasional atau ekspresi kalkulus relasional. A View dianggap sebagai variabel hubungan diturunkan. A Data Definition Language (DDL) digunakan untuk mendefinisikan variabel hubungan berasal. Dalam SQL, CREATE VIEW sintaks yang digunakan untuk mendefinisikan variabel hubungan diturunkan. Berikut ini adalah contoh.
CREATE VIEW List_of_Okinawa_people AS (
 SELECT ID, Name, Address
  FROM List_of_people
  WHERE Address LIKE '%, Okinawa'   )


A. Primary Key dan Foreign Key :
Primary Key adalah merupakan attribute yang paling sedikit yang dapat membedakan  setiap baris data dalam sebuah table secara unik yang dipilih berdasarkan seringnya diadikan acuan, lebih ringkas, dan lebih menjamin keunikan key.
Foreign Key adalah kolom yang diambil dari primary key entitas lain yang menunjukkan hubungan antar dua table tersebut.
B. Jenis-jenis Key Atribut dan Contohnya :
~ Super Key :
Merupakan satu atau gabungan attribute yang dapat membedakan setiap baris data dalam sebuah table secara unik.
Contoh :
Super Key untuk entitas Anggota
- No Anggota, Nama, Alamat, JenisKel
- No Anggota, Nama, Alamat
- No Anggota, Nama
- Nama (jika dijamin bahwa tidak ada yang sama)
- No Anggota
~ Candidat Key : Super Key yang jumlah attributnya paling sedikit
Contoh :
Candidat Key pada entitas Anggota
- Nama (jika dijamin tidak ada nama yang sama)
- No Anggota
~ Primary Key : Candidat key yang dipilih berdasarkan seringnya dijadikan acuan, lebih ringkas, dan lebih menjamin keunikan key.
Contoh :
Primary Key untuk entitas Anggota
- No Anggota
C. Relasi Entitas
Relasi menyatakan hubungan antar entitas, termasuk terhadap entitas itu sendiri (rekursif)

D. Jenis – jenis Relasi antar Entitas berdasarkan Derajat Kardinalitas dan Derajat Relasi Maksimum – Minimum
~ Satu ke satu (one to one)
Setiap data pada entitas A berhubungan dengan maksimal satu data pada entitas B, begitu pula sebaliknya.
Description: RelasiOneToOne
RelasiOneToOne
~ Satu ke banyak (one to many) atau Banyak ke satu (many to one)
Setiap data pada entitas A bisa berhubungan dengan banyak data pada entitas B, tetapi data pada entitas B berhubungan maksimal hanya dengan sebuah data di A.


~ Banyak ke banyak (many to many)

Setiap data pada entitas A bisa berhubungan dengan banyak data pada entitas B, demikian pula sebaliknya.

RelasiManyToMany
Derajat Relasi Minimum-Maximum
Menunjukkan hubungan (korespondensi) minimum yang boleh terjadi dalam sebuah relasi antar entitas.
Misalnya: pada relasi “bekerja untuk” pada entitas pegawai terhadap departemen Derajat relasi minimumnya adalah satu. Dalam arti lain, setiap pegawai minimal harus memiliki sebuah relasi terhadap Departemen, atau setiap pegawai selalu memiliki tempat di mana dia bekerja.
Notasi (x,y) pada relasi menunjukkan derajat minimum (x) dan derajat maksimum (y) pada sebuah relasi.
Partisipasi total bisa dinotasikan dengan memberikan derajat relasi minimum (x) = 1.



http://publib.boulder.ibm.com/infocenter/cicsts/v3r1/index.jsp?topic=%2Fcom.ibm.cics.ts31.doc%2Fdfhp3%2Fdfhp3at.htm
http://msdn.microsoft.com/en-us/library/windows/desktop/aa373864%28v=vs.85%29.aspx
en.wikipedia.org/wiki/Attribute_(computing)
id.wikipedia.org/wiki/Entitas
en.wikipedia.org/wiki/Entity
www.businessdictionary.com/definition/entity.html
www.merriam-webster.com/dictionary/entity
www.britannica.com/EBchecked/topic/493773/record
en.wikipedia.org/wiki/Record_(computer_science)
en.wikipedia.org/wiki/Relation
www.merriam-webster.com/medical/relation

NORMALISASI DATA

Normalisasi adalah teknik atau proses untuk mengorganisasikan data agar lebih efisien dalam suatu database. Pengorganisasian ke dalam bentuk tabel-tabel dan fields dari suatu relational database untuk memmenuhi kebutuhan pemakai dan untuk meminimalkan redundancy dan dependency. Normalisasi biasanya melibatkan pembagian tabel tabel yang besar menjadi tabel tabel yang lebih kecil atau ringkas (mengurangi redundancy) dan mendefinisikan hubungan antar tabel. Tujuannya untuk mempermudah manipulasi data atau memodifikasinya, memudahkan pengelompokan atribut dari relasi agar membentuk suatu relasi yang lebih baik.

Menurut Edgar F. Codd, salah seorang perintis teknologi basis data. selain dipakai sebagai metodologi tersendiri untuk menciptakan struktur tabel 9relasi) dalam basis data (dengan tujuan utnuk mengurangi kemubaziran data)  , normalisasi terkadang hanya diipakai sebagai perangkat verifikasi terhadap tabel-tabel yang dihasilkan oleh metodologi lain ( misalnya E-R). Normalisasi memberikan panduan yang sangat membantu bagi pengembang untuk mencegah penciptaan struktur tabel yang kurang fleksibel atau mengurangi keflekxibelan.

Menurut Kroenke mendefinisikan normalisasi sebagai proses untuk mengubah suatu relasi yang memiliki masalah tertentu ke dalam dua buah relasi atau lebih yang tida memiliki masalah tersebut. Masalah yang dimaksud oleh kroenke ini sering disebut dengan istilah anomali.

B.      Tahapan Pada Normalisasi Data

a.      Sekilas Sejarah Normalisasi data
1970 – Edgar F. Codd, penemu model relasi, memperkenalkan konsep normalisasi yang sekarang kita kenal dengan First Normal Form (1NF)
1971 – Codd melanjutkan untuk menetapkan konsep normalisasi Second Normal Form (2NF) dan Third Normal Form (3NF)
1974 – Codd dan Raymond F. Boyce menetapkan Boyce-Codd Normal Form (BCNF)
1977 – Fourth Normal Form (4NF) diperkenalkan oleh Ronald Fagin
1979 – Fifth Normal Form (5NF) ditetapkan oleh Ronald Fagin
1981 – Domain Key Normal Form (DKNF) diperkenalkan oleh Ronald Fagin
1982 – C Zaniolo menetapkan Elementary Key Normal Form (DKNF)
2002 – C.J Date, Hugh Darwen and Nikos Lorentzos menetapkan Sixth Normal Form (6NF)

b.      Tahap-tahap Normalisasi Data
·         Bentuk normal kesatu (1NF) menentukan aturan-tauran yang paling dasar untuk suatu pengaturan database:
o   Menghilangkan duplikasi kolom-kolom dalam tabel yang sama
o   Membuat tabel terpisah untuk setiap grup data yang berhubungan dan mengidentifikasi setiap baris dengan suatu kolom yang unik atau sekumpulan kolom yang unik (primary key)
·         Bentuk normal kedua (2NF) selanjutnya memusatkan perhatian pada konsep menghilangkan duplikasi data:
o   Menemukan semua syaratsyarat bentuk normal kesatu
o   Hilangkan subset data yang diterapkan pada beberapa baris dari sebuah tabel dan letakkan kedalam tabel terpisah
o   Buatlah relasi antara tabeltabel baru dan tabeltabel pendahulunya melalui penggunaan Foreign Keys.
·         Bentuk normal ketiga (3NF) melakukan satu langkah besar selanjutnya:
o   Menemukan semua syaratsyarat bentuk normal kedua
o   Menghilangkan kolomkolom yang tidak secara langsung tergantung pada primary key.
·         Bentuk normal keempat (4NF) memiliki satu syarat tambahan:
o   Menemukan semua syaratsyarat bentuk normal ketiga
o   Suatu relasi adalah dalam bentuk normal keempat (4NF) jika relasi itu tidak memiliki ketergantungan banyak nilai (value)
Petunjuk normalisasi ini adalah bersifat komulatif. Untuk suatu database menjadi bentuk normal kedua (2NF), pertama harus terpenuhi dahulu seluruh kriteria bentuk normal kesatu (1NF).
Sebuah tabel dikatakan baik (efisien) / normal jika memenuhi 3 kriteria sbb :
1.      Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman (Lossless – Join - Decomposition). Artinya,  setelah tabel tersebut diuraikan / didekomposisi menjadi tabel – tabel baru, tabel – tabel baru tersebut bisa menghasilkan tabel semula dengan nama yang sama persis.
2.      Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency Preservation).
3.      Tidak melanggar Boyce – Codd Normal Form (akan dijelaskan kemudian)

C.      Tujuan Normalisasi Data
1.      Untuk Menghilangkan Kerangkapan Data
2.      Untuk Mengurangi Kompleksitas
3.      Untuk Mempermudah Pemodifikasian Data

D.     Proses Normalisasi
-        Data diuraikan dalam bentuk tabel, selanjutnya dianalisis berdasarkan persyaratan tertentu ke beberapa tingkat.
-        Apabila tabel yang diuji belum memenuhi persyaratan tertentu, maka tabel tersebut perlu dipecah menjadi beberapa tabel yang lebih sederhana sampai memenuhi bentuk yang optimal.

E.      Contoh Penerapan Normalisasi Data



DENORMALISASI DATA
A.      PENGERITAN DENORMALISASI DATA
Denormalisasi database adalah pelanggaran aturan normalisasi atau menjabarkan suatu tataan database yang telah normal untuk meningkatkan performa pengaksesan data pada database. Database yang telah normal disini dimaksudkan database yang redundansi datanya minim sehingga data yang disimpan tidak mengalami kerancuan dalam proses pengaksesan.
Apakah perbedaan normalisasi dan denormalisasi? perbedaan normalisasi dan denormalisasi adalah terletak pada redundansi data dan kompleksitas query. Pada redundansi data normalisasi lebih strik atau harus dihilangkan sebisa mungkin sehingga mengakibatkan apabila kita akan mengakses data dalam suatu database membutuhkan query yang kompleks. Berbeda dengan denormalisasi, denormalisasi disini tidak terlalu memikirkan tentang data yang redundan sehingga dalam mengakses data lebih cepat.
Mengapa Denormalisasi begitu penting?

Apabila kita menilik lebih lanjut tentang proses pengaksesan yang dilakukan database sewaktu data yang berada dalam suatu tabel ada 1000 baris dengan 100 juta baris. Hal itu akan terasa sangat beda proses kita menunggu untuk dapat melihat data. Itupun apabila kita mengaksesnya dari beberapa tabel yang setiap tabel berisikan jutaan data dan kita hanya menginginkan sebagian saja. Dari situ denormalisasi diperlukan, untuk menjaga kestabilan performa suatu sistem.
Bagaimanakah cara melakukan denormalisasi? Kita dapat melakukan denormalisasi dalam 2 jenis :
  1. melalui pembuatan kolom baru pada tabel / mengabungkan kolom pada tabel satu dengan yang lain.
  2. melalui pembuatan tabel baru.
Cara yang pertama dilakukan apabila data yang didenormalisasi hanya kecil dan digunakan untuk mempermudah pengaksesan data apabila diakses dalam satu tabel. Sedangkan yang kedua dilakukan apabila data yang terdapat dalam tabel tersebut merupakan rangkuman / rekapitulasi dari satu atau beberapa tabel yang pengaksesannya terpisah dari tabel yang ada.
contoh :
denormalisasi pertama : total sks yang telah diambil seorang mahasiswa. ini dibentuk dari jumlah sks matakuliah yang pernah diambil.
denormalisasi kedua : pembuatan tabel jumlah kehadiran mahasiswa dalam satu semester. data ini dibentuk dari penjumlahan data harian mahasiswa.
B.      BENTUK – BENTUK DENORMALISASI
-   Atribut yang terderivasi (atribut turunan)
Atribut yang nilainya bisa diperoleh dari nilai – nilai yang sudah ada pada atribut lain
-   Atribut yang berlebihan
1.       Atribut Terkodekan (encoded attribute)
Atribut yang memiliki kode tambahan yang menunjukkan beberapa kondisi lainnya.
Contoh : id_mk di tabel matakuliah yang didalamnya sudah terkandung data program studi. Data origram studi ini sebenarnya tidak diperlukan lagi karena sudah ada atribut prog_studi di tabelkuliah
Kode kuliah SBD : ST022


2.       Atribut Gabungan (concatenated attribute)
Atribut dalam domain komposit
Contoh : atribut nim di tabel mahasiswa merupakan gabungan dari tahun masuk / angkatan dengan prigram studi dan no urut mahasiswa. Dengan demikian atribut ini sebenarnya tidak atomik karena masih bisa dibagi lagi
     NIM : 09.51.0062
Ket : angkatan.jurusan.no urut
3.       Atribut Tumpang tindih (overlapping attribute)
Atribut dengan nilai yang tidak spenuhnya ekslusif
Contoh :
Atribut semester di tabel kuliah berisikan :
1.       : matakuliah ganjil
2.       : matakuliah genap
3.       : matakuliah ganjil dan genap
Nilai 3 mencakup semester genap dan ganjil sekaligus (jadi tidak ekslusif)
4.       Atribut Bermakna Ganda (Alternate attribute)
Atribut yang memiliki arti berbeda tergantung kelompok entitasnya

-   Tabel Rekapitulasi (summary table)
Laporan hasil rekapitulasi akan selalu merupakan hasil pengolahan datri semua tabel yang ada, pengolahan tersebut meilbatkan banyak tabel sebhingga akan membutuhkan waktu yang lama. Jika hal tersebut sering diakses dan diperlukan, maka perlu dibuat tabel khusus untuk menyimpan data hasil rekapitulasi tersebut.

C.      TAHAPAN DENORMALISASI
Database dimaksudkan untuk proses transaksi online (OLTP) biasanya lebih normal dari database dimaksudkan untuk pengolahan analisis online (OLAP). Aplikasi OLTP ditandai dengan volume tinggi transaksi kecil seperti memperbarui rekor penjualan di counter kasir supermarket. Harapannya adalah bahwa setiap transaksi akan meninggalkan database dalam keadaan konsisten. Sebaliknya, database dimaksudkan untuk operasi OLAP terutama "membaca sebagian besar" database. Aplikasi OLAP cenderung untuk mengambil data historis yang telah terakumulasi selama jangka waktu yang panjang. Untuk database tersebut, berlebihan atau "denormalized" data dapat memfasilitasi aplikasi bisnis intelijen. Secara khusus, tabel dimensi dalam skema bintang sering mengandung data denormalized. Data denormalized atau berlebihan harus hati-hati dikontrol selama ekstrak, mengubah, beban (ETL) pengolahan, dan pengguna tidak diijinkan untuk melihat data sampai dalam keadaan konsisten. Alternatif dinormalisasi dengan skema bintang adalah skema kepingan salju. Dalam banyak kasus, kebutuhan untuk denormalization telah berkurang sebagai komputer dan RDBMS perangkat lunak telah menjadi lebih kuat, tapi karena volume data yang umumnya meningkat seiring dengan hardware dan kinerja perangkat lunak, database OLAP seringkali masih menggunakan skema denormalized.

Denormalization juga digunakan untuk meningkatkan kinerja pada komputer yang lebih kecil seperti pada perangkat cash-register dan mobile komputerisasi, karena ini dapat menggunakan data untuk melihat-up saja (lookup harga misalnya). Denormalization juga dapat digunakan ketika tidak ada RDBMS ada untuk platform (seperti Palm), atau tidak ada perubahan yang harus dibuat untuk data dan respon cepat sangat penting.

- Non-pertama Bentuk normal (NF ² atau N1NF)

Denormalization adalah kata kebalikan dari normalisasi. Dalam pengakuan bahwa denormalization dapat disengaja dan berguna, bentuk non-normal pertama adalah definisi dari desain database yang tidak sesuai dengan bentuk normal pertama, dengan memungkinkan "set dan set set menjadi atribut domain" (Schek 1982). Bahasa yang digunakan untuk query dan memanipulasi data dalam model harus diperluas sesuai untuk mendukung nilai-nilai tersebut.

Salah satu cara untuk melihat hal ini adalah dengan mempertimbangkan nilai-nilai terstruktur seperti menjadi jenis khusus nilai (domain), dengan mereka sendiri domain-spesifik bahasa. Namun, apa yang biasanya dimaksud dengan non-1NF model adalah pendekatan di mana model relasional dan bahasa yang digunakan untuk query itu diperluas dengan mekanisme umum untuk struktur tersebut, misalnya, model relasional bersarang mendukung penggunaan hubungan sebagai domain nilai-nilai, dengan menambahkan dua operator tambahan (sarang dan unnest) ke aljabar relasional yang dapat membuat dan meratakan hubungan bersarang, masing-masing.

Bentuk Pertama
Orang                 Favorite Colour
Bob                     Blue
Bob                     Red
Jane                    Green
Jane                    Yellow
Jane                    Red


Asumsikan seseorang memiliki beberapa warna favorit.  Jelas, warna favorit terdiri dari satu set warna, dimodelkan oleh tabel yang diberikan. Untuk mengubah 1NF ke dalam tabel ² NF ("sarang” Operator) diperlukan sesuatu yang memperluas aljabar relasional dari bentuk normal yang lebih tinggi. Menerapkan ("sarang" operator) untuk tabel 1NF menghasilkan tabel berikut NF ²:
Non Bentuk Pertama

Orang                 Favorite Colour
Bob                     Blue, Red
Jane                    Green, Yellow,Red

Untuk mengubah ini kembali NF ² tabel menjadi 1NF suatu “perombakan”, Operator diperlukan untuk memperluas aljabar relasional dari bentuk normal lebih tinggi. Unnest, dalam hal ini, akan membuat "warna" ke dalam tabel sendiri.

Meskipun "perombakan" adalah invers matematika untuk "sarang", operator "sarang" tidak selalu kebalikan matematis "unnest". Kendala lain yang dibutuhkan adalah untuk operator untuk menjadi bijektif, yang ditutupi oleh Bentuk Normal partisi (PNF).




BOYCE – CODD NORMAL FORM

Boyce-Codd bentuk normal (atau BCNF atau 3.5NF) adalah bentuk normal yang digunakan dalam normalisasi database. Ini adalah versi yang sedikit lebih kuat dari bentuk normal ketiga (3NF). BCNF dikembangkan pada tahun 1974 oleh Raymond F. Boyce dan Edgar F. Codd untuk mengatasi beberapa jenis anomali tidak ditangani oleh 3NF sebagai awalnya didefinisikan.

Tanggal Chris telah menunjukkan bahwa definisi dari apa yang sekarang kita kenal sebagai BCNF muncul dalam sebuah makalah oleh Ian Heath tahun 1971. Tanggal menulis:

     "Sejak definisi yang mendahului definisi sendiri Boyce dan Codd oleh beberapa tiga tahun, tampaknya bagi saya bahwa BCNF harus dengan hak untuk dipanggil Heath bentuk normal. Tapi itu tidak."

Jika skema relasional dalam BCNF maka semua redundansi berdasarkan ketergantungan fungsional telah dihapus, meskipun jenis lain redundansi mungkin masih ada. Sebuah skema relasional R dalam Boyce-Codd bentuk normal jika dan hanya jika untuk setiap satu yang dependensi X Y, setidaknya salah satu dari kondisi berikut berlaku:

-          X Y adalah ketergantungan fungsional sepele (Y X)
-          X adalah superkey untuk skema R