It-tielet forma normali (3NF) hija prinċipju ta 'bażi tad-dejta li tappoġġja l-integrità tad-data billi tibni fuq il- prinċipji ta' normalizzazzjoni tal-bażijiet ipprovduti mill-Ewwel Formola Normali (1NF) u t-Tieni Formola Normali (2NF).
Tliet Rekwiżiti tal-Formula Normali
Hemm żewġ rekwiżiti bażiċi biex database tkun fit-tielet forma normali:
- Id-database għandha diġà tissodisfa r-rekwiżiti kemm ta ' 1NF kif ukoll ta' 2NF .
- Il-kolonni kollha tad-database għandhom jiddependu fuq il -kodiċi primarju , li jfisser li l-valur ta 'kull kolonna jista' jiġi derivat mill-kodiċi primarja biss.
Dwar id-Dipendenza Ewlenija Ewlenija
Ejjew nesploraw aktar dak li jfissru mill-fatt li l-kolonni kollha għandhom jiddependu fuq il-kodiċi primarju.
Jekk il-valur tal-kolonna jista 'jinkiseb kemm mill-kodiċi primarju kif ukoll minn kolonna oħra fit-tabella, tikser 3NF. Ikkunsidra tabella tal-Impjegati b'dawn il-kolonni:
- EmployeeID
- Isem
- Kunjom
Jagħmlu kemm LastName u FirstName jiddependu biss fuq il-valur ta 'EmployeeID? Ukoll, jista 'LastName jiddependi fuq FirstName? Le, għax xejn inerenti fl-LastName jissuġġerixxi l-valur ta 'FirstName. Jista 'FirstName jiddependi fuq LastName? Le darb'oħra, għax l-istess jgħodd: tkun xi tkun LastName, ma tkunx tista 'tipprovdi ħjiel dwar il-valur ta' FirstName. Għalhekk, din it-tabella hija konformi ma '3NF.
Imma tqis din it-tabella tal-Vetturi:
- VehicleID
- Fabbrikant
- Mudell
Il-Manifattur u l-Mudell jistgħu joħorġu mill-VehicleID - iżda l-Mudell jista 'wkoll joħroġ mill-Manifattur minħabba li mudell ta' vettura huwa magħmul biss minn manifattur partikolari. Dan id-disinn tal-mejda huwa konformi ma '3NF, u jista', għalhekk, jirriżulta f'anomaliji tad-dejta. Pereżempju, tista 'taġġorna l-manifattur mingħajr ma taġġorna l-mudell, u tintroduċi ineżattezzi.
Biex tkun konformi, ikollna nimxu l-kolonna dipendenti addizzjonali għal tabella oħra u nirreferiha billi tuża ċavetta barranija. Dan jirriżulta f'żewġ tabelli:
Tabella tal-Vetturi
Fit-tabella hawn taħt, il-ModelID huwa ċavetta barranija għat-tabella tal- Mudelli :
- VehicleID
- Fabbrikant
- ModelID
Tabella tal-Mudelli
Din it-tabella l-ġdida timplimenta mudelli għall-manifatturi. Jekk trid taġġorna kwalunkwe informazzjoni tal-vettura speċifika għal mudell, tista 'tagħmel dan f'din it-tabella, aktar milli fit-tabella tal-Vetturi.
- ModelID
- Fabbrikant
- Mudell
Oqsma derivati fil-Mudell 3NF
Tabella jista 'jkun fiha qasam derivat - wieħed li huwa maħdum ibbażat fuq kolonni oħra fit-tabella. Per eżempju, tqis din it-tabella ta 'ordnijiet widget:
- Numru tal-Ordni
- Numru tal-Klijent
- Prezz ta 'Unità
- Kwantità
- Totali
Il-waqfien totali jaqa 'taħt il-konformità 3NF minħabba li jista' jinkiseb billi l-prezz tal-unità jiġi mmultiplikat bil-kwantità, minflok ma jiddependi għal kollox fuq il-kodiċi primarju. Irridu neħħiha mit-tabella biex tikkonforma mat-tielet forma normali.
Fil-fatt, peress li hija derivata, huwa aħjar li ma tinħażżux fid-database.
Nistgħu sempliċiment nikkalkulawh "fuq il-fly" meta jwettqu mistoqsijiet dwar database. Per eżempju, jista 'jkollna preċedentement użajt din il-mistoqsija biex nirkupraw in-numri u t-totali tal-ordni:
SELECT OrderNumber, Total MINN WidgetOrdersIssa nistgħu nużaw il-mistoqsija li ġejja:
TAGĦŻEL OrderNumber, UnitPrice * Kwantità AS Total MILL WidgetOrdersbiex tikseb l-istess riżultati mingħajr ma tikser ir-regoli ta 'normalizzazzjoni.