Nggawe Database ing Formulir Normal Katelu (3NF)

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:

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:

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:

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 :

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.

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:

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 WidgetOrders

Saiki kita bisa nggunakake pitakonan ing ngisor iki:

SELECT OrderNumber, UnitPrice * Quantity AS Total FROM WidgetOrders

kanggo entuk asil sing padha tanpa nglanggar aturan normalisasi.