Memahami normalisasi

Selesai

Petunjuk / Saran

Lihat tab Teks dan gambar untuk detail selengkapnya!

Normalisasi adalah istilah yang digunakan oleh profesional database untuk proses desain skema yang meminimalkan duplikasi data dan memberlakukan integritas data.

Meskipun ada banyak aturan kompleks yang menentukan proses refaktor data ke dalam berbagai tingkat (atau bentuk) normalisasi, definisi sederhana untuk tujuan praktis adalah:

  1. Pisahkan setiap entitas ke dalam tabelnya sendiri.
  2. Pisahkan setiap atribut diskrit ke dalam kolomnya sendiri.
  3. Mengidentifikasi setiap instans entitas (baris) secara unik menggunakan kunci primer.
  4. Gunakan kolom kunci asing untuk menautkan entitas terkait.

Untuk memahami prinsip-prinsip inti normalisasi, misalkan tabel berikut mewakili spreadsheet yang digunakan perusahaan untuk melacak penjualannya.

Nomor Pesanan NamaPelanggan CustomerAddress ProductName Harga Satuan Jumlah
1 Jane Smith 42 Oak St.Seattle Widget A 9.99 2
1 Jane Smith 42 Oak St.Seattle Widget B 4.49 1
2 Bob Jones 18 Pine Ave Portland Widget A 9.99 5
2 Bob Jones 18 Pine Ave Portland Gadget X 24,99 1
3 Jane Smith 42 Oak St.Seattle Gadget X 24,99 3
3 Jane Smith 42 Oak St.Seattle Widget B 4.49 2

Perhatikan bahwa pelanggan dan detail produk diduplikasi untuk setiap item individu yang dijual; dan bahwa nama pelanggan dan alamat pos, serta nama dan harga produk digabungkan dalam sel spreadsheet yang sama.

Sekarang mari kita lihat bagaimana normalisasi mengubah cara data disimpan.

Diagram memperlihatkan data pesanan dalam skema tabular yang dinormalisasi.

Setiap entitas yang diwakili dalam data (pelanggan, produk, pesanan penjualan, dan item baris) disimpan dalam tabelnya sendiri, dan setiap atribut diskrit entitas tersebut berada di kolomnya sendiri.

Merekam setiap instans entitas sebagai baris dalam tabel khusus entitas menghapus duplikasi data. Misalnya, untuk mengubah alamat pelanggan, Anda hanya perlu mengubah nilai dalam satu baris.

Penguraian atribut ke dalam kolom individual memastikan bahwa setiap nilai dibatasi ke jenis data yang sesuai - misalnya, harga produk muSt.be nilai desimal, sementara jumlah item baris muSt.be angka bilangan bulat. Selain itu, pembuatan kolom individual memberikan tingkat granularitas yang berguna dalam data untuk kueri - misalnya, Anda dapat dengan mudah memfilter pelanggan kepada mereka yang tinggal di kota tertentu.

Instans setiap entitas diidentifikasi secara unik oleh ID atau nilai kunci lainnya, yang dikenal sebagai kunci utama; dan ketika satu entitas mereferensikan entitas lain (misalnya, pesanan memiliki pelanggan terkait), kunci utama entitas terkait disimpan sebagai kunci asing. Anda dapat mencari alamat pelanggan (yang disimpan hanya sekali) untuk setiap rekaman dalam tabel Pesanan dengan merujuk catatan yang sesuai dalam tabel Pelanggan . Biasanya, sistem manajemen database relasional (RDBMS) dapat menerapkan integritas referensial untuk memastikan bahwa nilai yang dimasukkan ke dalam bidang kunci asing memiliki kunci utama yang sesuai yang ada dalam tabel terkait - misalnya, mencegah pesanan untuk pelanggan yang tidak ada.

Dalam beberapa kasus, kunci (primer atau asing) dapat didefinisikan sebagai kunci komposit berdasarkan kombinasi unik dari beberapa kolom. Misalnya, tabel LineItem dalam contoh di atas menggunakan kombinasi unik OrderNo dan ItemNo untuk mengidentifikasi item baris dari urutan individual.