Bentuk normal kaping tiga (3NF) minangka asas basis data sing ndhukung integritas data kanthi mbangun prinsip-prinsip normalisasi basis data sing diwenehake dening Formulir Normal (1NF) lan Formulir Normal Kapindho (2NF).
Syarat Formulir Biasa Ketiga
Ana rong syarat dhasar kanggo basis data sing ana ing wangun normal kaping tiga:
- Basis data kudu wis memenuhi syarat loro 1NF lan 2NF .
- Kabeh kolom database kudu gumantung ing tombol utami , tegese manawa sembarang nilai kolom bisa ditemokake saka kunci utama wae.
Babagan Ketergantungan Utama Primary
Ayo ditlusuri maneh apa sing kita tegese kanthi nyatane yen kabeh kolom kudu gumantung marang kunci utama.
Yen nilai kolom bisa didhasarake saka tombol utami lan kolom liyane ing tabel, nerak 3NF. Coba Tabel karyawan nganggo kolom iki:
- EmployeeID
- FirstName
- LastName
Apa loro LastName lan FirstName mung gumantung marang nilai EmployeeID? Nah, bisa LastName gumantung marang FirstName? Ora, amarga apa wae sing ana ing LastName bakal nerangake angka FirstName. Bisa FirstName gumantung ing LastName? Ora ana maneh, amarga padha bener: apa wae sing ana ing LastName, ora bisa menehi pitunjuk babagan nilai FirstName. Mulane, tabel iki mung 3NF.
Nanging nimbang meja iki:
- KendaraanID
- Produsen
- Model
Produsen lan Model bisa nurunake VehicleID - nanging Model uga bisa diturunake saka Produsen amarga model kendaraan digawe mung dening prodhuk khusus. Desain tabel iki minangka non-3NF, lan mulane, bisa ngasilake anomali data. Contone, sampeyan bisa nganyari manufaktur tanpa nganyari model, ngenalake ora akurat.
Kanggo ngrampungake, kita bakal kudu mindhah kolom gumantung tambahan menyang meja liya lan ngrujuk nganggo tombol manca. Iki bakal ngasilake rong tabel:
Tabel Kendaraan
Ing tabel ing ngisor iki, ModelID minangka tombol asing kanggo tabel Models :
- KendaraanID
- Produsen
- ModelID
Tabel Model
Tabel anyar iki nggambarake model-model manufaktur. Yen sampeyan pengin nganyari informasi kendaraan spesifik kanggo model, sampeyan bakal nindakake ing tabel iki, tinimbang ing tabel Vehicles.
- ModelID
- Produsen
- Model
Derived Fields in the 3NF Model
Tabel bisa ngemot kolom sing ditemokake - siji sing diitung miturut kolom liyane ing tabel. Contone, priksa tabel iki saka pesenan widget:
- Nomer Order
- Nomer Pelanggan
- Unit Price
- Jumlah
- Total
Total ngasilake kepekaan 3NF amarga bisa diwiwiti kanthi ngasilake rega unit kanthi jumlah, tinimbang kanthi gumantung banget marang kunci utama. Kita kudu nyopot saka meja kanggo tundhuk wangun normal katelu.
Ing kasunyatan, wiwit ditemokake, luwih becik ora nyimpen ing database ing kabeh.
Kita bisa mung ngétung "on the fly" nalika ngampil query database. Contone, kita bisa uga sadurunge nggunakake pitakonan iki kanggo njupuk nomer urut lan total:
SELECT OrderNumber, Total FROM WidgetOrdersSaiki kita bisa nggunakake pitakonan ing ngisor iki:
SELECT OrderNumber, UnitPrice * Quantity AS Total FROM WidgetOrderskanggo entuk asil sing padha tanpa nglanggar aturan normalisasi.