Requisit previ: Primera forma normal , Segona forma normal , Tercera forma normal
L'aplicació de les definicions generals de 2NF i 3NF pot identificar redundància addicional causada per dependències que infringeixen una o més claus candidates. Tanmateix, malgrat aquestes restriccions addicionals, encara poden existir dependències que faran que la redundància estigui present a les relacions 3NF. Aquesta debilitat en 3NF va donar lloc a la presentació d'una forma normal més forta anomenada el Forma normal de Boyce-Codd (Codd, 1974) .
Tot i que, 3NF és una forma normal adequada per a bases de dades relacionals, encara, aquesta forma normal (3NF) pot no eliminar el 100% de la redundància a causa de la dependència funcional X−>Y si X no és una clau candidata de la relació donada. Això es pot resoldre mitjançant Boyce-Codd Normal Form (BCNF).
Forma normal de Boyce-Codd (BCNF)
Boyce–Codd Normal Form (BCNF) es basa en dependències funcionals que tenen en compte totes les claus candidates en una relació; tanmateix, BCNF també té restriccions addicionals en comparació amb la definició general de 3NF.
Normes per a BCNF
Regla 1: La taula ha d'estar en la tercera forma normal.
Regla 2: X hauria de ser una superclau per a cada dependència funcional (FD) X−>Y en una relació donada.
Nota: Per comprovar si una relació està en BCNF, identifiquem tots els determinants i ens assegurem que són claus candidates.
BCNF en DBMS
Us heu trobat amb una jerarquia similar coneguda com a Forma normal de Chomsky en la teoria de la computació. Ara, estudieu atentament la jerarquia anterior. Es pot deduir que totes les relacions de BCNF també estan en 3NF . Per dir-ho d'una altra manera, una relació a 3NF no ha d'estar a BCNF. Reflexioneu una estona sobre aquesta afirmació.
Per determinar la forma normal més alta d'una relació R determinada amb dependències funcionals, el primer pas és comprovar si es compleix la condició BCNF. Si es troba que R està en BCNF, es pot deduir amb seguretat que la relació també hi és 3NF , 2NF, i 1NF com mostra la jerarquia. L'1NF té la restricció menys restrictiva: només requereix una relació R per tenir valors atòmics a cada tupla. El 2NF té una restricció una mica més restrictiva.
El 3NF té una restricció més restrictiva que les dues primeres formes normals, però és menys restrictiu que el BCNF. D'aquesta manera, la restricció augmenta a mesura que baixem per la jerarquia.
Exemples
Aquí, parlarem d'alguns exemples bàsics que us permeten entendre les propietats de BCNF. En parlarem de diversos exemples aquí.
Exemple 1
Considerem la base de dades de l'estudiant, en la qual s'esmenten les dades de l'estudiant.
Aquest_ID | Aquesta_Sucursal | Stu_Curs | Sucursal_Número | Stu_Curs_núm |
---|---|---|---|---|
101 | Informàtica i Enginyeria | DBMS | B_001 | 201 |
101 | Informàtica i Enginyeria | Xarxes d'ordinadors | B_001 | 202 |
102 | Enginyeria Electrònica i Comunicació | Tecnologia VLSI | B_003 | 401 |
102 | Enginyeria Electrònica i Comunicació | Comunicació mòbil | B_003 | 402 |
La dependència funcional de l'anterior és com s'ha esmentat:
Stu_ID −>Stu_Branch Stu_Course −> {Branch_Number, Stu_Course_No}>
Les claus dels candidats de la taula anterior són: {This_ID, This_Course}
Per què aquesta taula no està a BCNF?
La taula anterior no està en BCNF, perquè com podem veure que ni Stu_ID ni Stu_Course són una Super Clau. Com les regles esmentades anteriorment diuen clarament que perquè una taula estigui a BCNF, ha de seguir la propietat que per a la dependència funcional X−>Y, X ha d'estar en Super Key i aquí aquesta propietat falla, per això aquesta taula no està a BCNF. .
Com satisfer BCNF?
Per satisfer aquesta taula a BCNF, hem de descompondre-la en taules addicionals. Aquí teniu el procediment complet mitjançant el qual transformem aquesta taula en BCNF. Primer dividim aquesta taula principal en dues taules Aquesta_Sucursal i Stu_Curs Taula.
Stu_Taula Branch
Aquest_ID | Aquesta_Sucursal |
---|---|
101 | Informàtica i Enginyeria |
102 | Enginyeria Electrònica i Comunicació |
Clau del candidat per a aquesta taula: Aquest_ID .
com convertir str a int
Stu_Taula del curs
Stu_Curs | Sucursal_Número | Stu_Curs_Núm |
---|---|---|
DBMS | B_001 | 201 |
Xarxes d'ordinadors | B_001 | 202 |
Tecnologia VLSI | B_003 | 401 |
Comunicació mòbil | B_003 | 402 |
Clau del candidat per a aquesta taula: Stu_Curs .
Stu_ID a Stu_Course_No Taula
Aquest_ID | Stu_Curs_Núm |
---|---|
101 | 201 |
101 | 202 |
102 | 401 |
102 | 402 |
Clau del candidat per a aquesta taula: {Stu_ID, Stu_Course_No}.
Després de descompondre's en taules addicionals, ara està a BCNF, ja que està passant la condició de Super Key, que en la dependència funcional X−>Y, X és un Super clau.
Exemple 2
Trobeu la forma normal més alta d'una relació R(A, B, C, D, E) amb FD establerta com:
{ BC->D, AC->BE, B->E }>>>Explicació:
- Pas 1: Com podem veure, (AC)+ ={A, C, B, E, D} però cap dels seus subconjunts pot determinar tots els atributs de la relació, de manera que AC serà la clau candidata. A o C no es poden derivar de cap altre atribut de la relació, de manera que només hi haurà 1 clau candidata {AC}.
- Pas-2: Els atributs primers són aquells atributs que formen part de la clau candidata {A, C} en aquest exemple i altres no seran primers {B, D, E} en aquest exemple.
- Pas-3: La relació R es troba en la primera forma normal, ja que un SGBD relacional no permet atributs de valors múltiples o compostos.
La relació està en 2a forma normal perquè BC->D està en 2a forma normal (BC no és un subconjunt adequat de la clau candidata AC) i AC->BE està en 2a forma normal (AC és la clau candidata) i B->E està en segona forma normal (B no és un subconjunt adequat de la clau candidata AC).
La relació és no en 3a forma normal perquè en BC->D (ni BC és una superclau ni D és un atribut primer) i en B->E (ni B és una superclau ni E és un atribut primer), però per satisfer la 3a normal per , LHS d'un FD hauria de ser superclau o RHS hauria de ser un atribut principal. Així, la forma normal més alta de relació serà la 2a forma normal.
Nota: Un atribut principal no pot dependre transitivament d'una clau en la relació BCNF.
Considereu aquestes dependències funcionals d'alguna relació R
Exemple 3
Per exemple, considereu la relació R(A, B, C)
V, W ->X I, Z -> X W -> I>
No satisfaria la dependència preservant la descomposició de BCNF.
Nota: Les redundàncies de vegades encara estan presents en una relació BCNF, ja que no sempre és possible eliminar-les completament.
També hi ha algunes formes normals d'ordre superior, com la 4a forma normal i la 5a forma normal.
Per obtenir més informació, consulteu la 4a i la 5a Formes normals.