Evite depandans transitif pou ede garanti normalizasyon
Yon depandans transitif nan yon baz done se yon relasyon endirèk ant valè nan menm tab la ki lakòz yon depandans fonksyonèl . Pou reyalize estanda nòmalizasyon Fòm Nòmal Twazyèm (3NF), ou dwe elimine nenpòt depandans transitif.
Pa nati li yo, yon depandans transitif mande pou twa oswa plis atribi (oswa kolòn done) ki gen yon depandans fonksyonèl ant yo, sa vle di Kolòn A nan yon tab depann sou Kolòn B nan yon kolòn entèmedyè C.
Ann wè kòman sa a ta ka travay.
Egzanp depandans transitif
AUTHORS
Author_ID | Otè | Liv | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Kat | Ender jwèt la | Etazini |
Auth_001 | Orson Scott Kat | Ender jwèt la | Etazini |
Auth_002 | Margaret Atwood | Istwa Handmaid la | Kanada |
Nan egzanp AUTHORS pi wo a:
- Liv → Author : Isit la, atribi Liv la detèmine atribi otè a . Si ou konnen non liv la, ou ka aprann non otè a. Sepandan, Author pa detèmine liv , paske yon otè ka ekri plizyè liv. Pou egzanp, jis paske nou konnen non otè a Orson Scott Card, nou toujou pa konnen non an liv.
- Otè → Author_Nationality : Menm jan an tou, atribi otè a detèmine otè_Nationalite a , men se pa lòt fason alantou; jis paske nou konnen nasyonalite a pa vle di nou ka detèmine otè a.
Men, tab sa a entwodui yon depandans transitif:
- Liv → Author_Nationality: Si nou konnen non liv la, nou ka detèmine nasyonalite a atravè kolòn Author la.
Evite depandans transitif yo
Pou asire Twazyèm Fòm Nòmal, se pou nou retire depandans transitif la.
Nou ka kòmanse pa retire kolòn nan Liv soti nan tablo a otè ak kreye yon tablo separe Liv:
LIV
Book_ID | Liv | Author_ID |
---|---|---|
Book_001 | Ender jwèt la | Auth_001 |
Book_001 | Timoun nan Mind | Auth_001 |
Book_002 | Istwa Handmaid la | Auth_002 |
AUTHORS
Author_ID | Otè | Author_Nationality |
---|---|---|
Auth_001 | Orson Scott Kat | Etazini |
Auth_002 | Margaret Atwood | Kanada |
Èske sa te ranje li? Ann egzamine depandans nou yo kounye a:
BOOKS tab :
- Book_ID → Liv: Liv la depann de Book_ID la .
- Pa gen depandans lòt nan tablo sa a egziste, se konsa nou yo se oke. Remake byen ke kle a etranje Author_ID lyen tablo sa a nan tablo a AUTHORS nan kle prensipal li yo Author_ID . Nou te kreye yon relasyon pou fè pou evite yon depandans transitif, yon konsepsyon kle nan baz relasyon.
OTÈL tab :
- Author_ID → Author: Otè a depann sou Author_ID la .
- Otè → Author_Nationality: Otorite a kapab detèmine nasyonalite a.
- Author_ID → Author_Nationality: Ou ka detèmine nasyonalite nan men Otè_ID la nan atribi otè a . Nou toujou gen yon depandans transitif.
Nou bezwen ajoute yon tab twazyèm nòmalize done sa yo:
PEYI
Peyi_ID | Peyi |
---|---|
Coun_001 | Etazini |
Coun_002 | Kanada |
AUTHORS
Author_ID | Otè | Peyi_ID |
---|---|---|
Auth_001 | Orson Scott Kat | Coun_001 |
Auth_002 | Margaret Atwood | Coun_002 |
Koulye a, nou gen twa tab, ki fè pou sèvi ak kle etranje yo konekte ant tab yo:
- Tablo etranje liv BOOK la Author_ID lyen yon liv nan yon otè nan tablo AUTHORS la.
- Otè tab natif natal peyi a Peyi Country_ID konekte yon otè nan yon peyi nan tab la COUNTRIES.
- Tablo COUNTRIES pa gen okenn kle etranje paske li pa gen okenn lyen pou yon lòt tab nan konsepsyon sa a.
Poukisa depandans transitif yo se Bad Database Design
Ki valè evite depandans transitif pou ede asire 3NF? Ann konsidere premye tablo nou an ankò epi wè pwoblèm li kreye yo:
AUTHORS
Author_ID | Otè | Liv | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Kat | Ender jwèt la | Etazini |
Auth_001 | Orson Scott Kat | Timoun nan Mind | Etazini |
Auth_002 | Margaret Atwood | Istwa Handmaid la | Kanada |
Sa a kalite konsepsyon ka kontribye nan anomali done ak enkonsistans, pou egzanp:
- Si ou efase de liv yo "Timoun nan Mind" ak "jwèt Ender a," ou ta efase otè a "Orson Scott Card" ak nasyonalite li konplètman soti nan baz done a.
- Ou pa ka ajoute yon nouvo otè nan baz done a sof si ou ajoute tou yon liv; E si otè a poko pibliye oswa ou pa konnen non yon liv li te otè?
- Si "Orson Scott Card" chanje sitwayènte li, ou ta dwe chanje li nan tout dosye nan ki li parèt. Èske gen dosye miltip ak otè a menm ka rezilta nan done kòrèk: ki sa si moun nan antre done pa reyalize gen dosye miltip pou l ', li chanje done yo nan yon sèl dosye?
- Ou pa ka efase yon liv tankou "Istwa Handmaid a" san yo pa efase otè a nèt.
Sa yo se sèlman kèk rezon poukisa nòmalizasyon , ak evite depandans transitif, pwoteje done epi asire konsistans.