Skip to main content

Cara Mengonversi Basis Data menjadi Bentuk Normal Ketiga (3NF)

Belajar Normalisasi Database 1NF, 2NF dan 3NF Bagian 1 (Mungkin 2024)

Belajar Normalisasi Database 1NF, 2NF dan 3NF Bagian 1 (Mungkin 2024)
Anonim

Bentuk normal ketiga (3NF) adalah prinsip database yang mendukung integritas data dengan membangun atas prinsip normalisasi database yang disediakan oleh First Normal Form (1NF) dan Second Normal Form (2NF).

Persyaratan Bentuk Normal Ketiga

Ada dua persyaratan dasar untuk database berada di bentuk normal ketiga:

  • Database harus sudah memenuhi persyaratan dari 1NF dan 2NF.
  • Semua kolom database harus bergantung pada kunci primer, yang berarti bahwa nilai kolom apa pun dapat diturunkan dari kunci primer saja.

Tentang Ketergantungan Kunci Utama

Mari kita telusuri lebih jauh apa yang kami maksud dengan fakta bahwa semua kolom harus bergantung pada kunci primer.

Jika nilai kolom dapat diturunkan dari kunci primer dan kolom lain dalam tabel, itu melanggar 3NF. Pertimbangkan tabel Karyawan dengan kolom-kolom ini:

  • Identitas pegawai
  • Nama depan
  • Nama keluarga

Apakah baik LastName dan FirstName hanya bergantung pada nilai EmployeeID? Nah, bisakah LastName bergantung pada FirstName? Tidak, karena tidak ada yang melekat dalam LastName akan menyarankan nilai FirstName. Mungkinkah FirstName bergantung pada LastName? Tidak lagi, karena hal yang sama berlaku: apapun LastName mungkin, itu tidak bisa memberikan petunjuk tentang nilai FirstName. Oleh karena itu, tabel ini adalah 3NF compliant.

Tetapi pertimbangkan tabel Kendaraan ini:

  • VehicleID
  • Pabrikan
  • Model

Produsen dan Model dapat berasal dari VehicleID - tetapi Model juga dapat berasal dari Produsen karena model kendaraan dibuat hanya oleh produsen tertentu. Desain tabel ini adalah non-3NF compliant, dan bisa, oleh karena itu, menghasilkan anomali data. Misalnya, Anda dapat memperbarui pabrikan tanpa memperbarui model, memperkenalkan ketidakakuratan.

Untuk membuatnya sesuai, kita perlu memindahkan kolom dependen tambahan ke tabel lain dan merujuknya menggunakan kunci asing. Ini akan menghasilkan dua tabel:

Tabel Kendaraan

Pada tabel di bawah ini, ModelID adalah kunci asing untuk Model meja:

  • VehicleID
  • Pabrikan
  • ModelID

Tabel Model

Tabel baru ini memetakan model ke produsen. Jika Anda ingin memperbarui informasi kendaraan khusus untuk model, Anda akan melakukannya dalam tabel ini, bukan di tabel Kendaraan.

  • ModelID
  • Pabrikan
  • Model

Derived Fields dalam Model 3NF

Sebuah tabel mungkin berisi bidang turunan - yang dihitung berdasarkan kolom lain dalam tabel. Misalnya, perhatikan tabel pesanan widget ini:

  • Jumlah order
  • Nomor pelanggan
  • Patokan harga
  • Kuantitas
  • Total

Pemutusan total pemenuhan 3NF karena dapat diturunkan dengan mengalikan harga unit dengan kuantitas, daripada sepenuhnya bergantung pada kunci primer. Kita harus menghapusnya dari meja untuk mematuhi bentuk normal ketiga.

Bahkan, karena itu berasal, lebih baik untuk tidak menyimpannya dalam database sama sekali.

Kami hanya dapat menghitungnya "on the fly" saat melakukan kueri basis data. Misalnya, kami mungkin sebelumnya menggunakan kueri ini untuk mengambil nomor pesanan dan total:

SELECT OrderNumber, Total FROM WidgetOrders

Kami sekarang dapat menggunakan kueri berikut:

SELECT OrderNumber, UnitPrice * Quantity AS Total FROM WidgetOrders

untuk mencapai hasil yang sama tanpa melanggar aturan normalisasi.