Putting databés di Bentuk Normal Katilu (3NF)

Formulir normal katilu (3NF) mangrupakeun prinsip database nu ngarojong integritas data ku gedong kana prinsip database normalisasi disadiakeun ku Mimiti Normal Bentuk (1NF) jeung Normal Bentuk Kadua (2NF).

Katilu Syarat Bentuk Normal

Aya dua syarat dasar pikeun database a janten dina bentuk normal katilu:

Ngeunaan gumantungna Key primér

Hayu urang neuleuman salajengna kumaha urang hartosna ku kanyataan yén sakabéh kolom kedah gumantung kana konci primér.

Lamun nilai a kolom urang bisa diturunkeun tina duanana tombol primér sarta kolom sejen dina méja, éta ngalanggar 3NF. Mertimbangkeun hiji méja pagawé kalawan kolom ieu:

Ngalakukeun duanana LastName na FirstName gumantung ngan kana nilai EmployeeID? Muhun, bisa LastName gumantung kana FirstName? Taya, lantaran euweuh alamiah di LastName bakal nyarankeun nilai FirstName. Bisa FirstName gumantung kana LastName? Taya deui, sabab sami bener: naon LastName hiji bisa jadi, éta bisa teu nyadiakeun hint a salaku mun nilai FirstName. Kituna, tabel ieu 3NF patuh.

Tapi nganggap tabel Kandaraan ieu:

The Produsén na Modél anu bisa diturunkeun tina VehicleID - tapi Modél anu ogé bisa diturunkeun tina Produsén nu sabab model wahana dijieun ukur ku produsén tangtu. Desain tabel ieu non-3NF patuh, sarta bisa, ku kituna, hasil dina anomali data. Contona, Anjeun bisa ngamutahirkeun produsén tanpa ngamutahirkeun modél, ngawanohkeun akurat.

Pikeun nyieun patuh, urang bakal perlu mindahkeun kolom gumantung tambahan keur tabel sejen tur nuduhkeun éta maké konci asing. Ieu bakal ngahasilkeun dua tabel:

kandaraan Table

Dina tabel di handap, nu ModelID mangrupakeun konci asing kana méja Models:

model Table

méja anyar ieu peta model keur pabrik. Upami anjeun hoyong pikeun ngapdet inpo kandaraan sagala husus pikeun modél, anjeun bakal ngalakukeun eta dina tabél ieu, tinimbang dina tabel Kandaraan.

Widang diturunkeun di Modél 3NF

A tabel bisa ngandung hiji widang diturunkeun - satu anu diitung dumasar kana kolom sejenna dina méja. Contona, anggap tabel ieu pesenan widget:

The minuhan ngarecah 3NF total sabab bisa diturunkeun ku cara ngalikeun harga Unit ku kuantitas, tinimbang mahluk gumantung sapinuhna kana konci primér. Urang kedah dicabut tina méja anu matuh jeung formulir normal katilu.

Kanyataanna, saprak eta diturunkeun, éta hadé pikeun henteu nyimpen eta dina database pisan.

Simkuring saukur bisa ngitung eta "dina laleur" nalika ngajalankeun queries database. Contona, urang bisa geus saacanna digunakeun pamundut kieu pikeun meunangkeun nomer urutan na totalna:

MILIH OrderNumber, Total FROM WidgetOrders

Urang ayeuna tiasa nganggo query handap:

MILIH OrderNumber, UnitPrice * kuantitas AS Jumlah FROM WidgetOrders

pikeun ngahontal hasil anu sarua tanpa violating aturan normalisasi.