Requisito previo: dependencia funcional y cierre de atributo
Una dependencia funcional es una restricción que especifica la relación entre dos conjuntos de atributos donde un conjunto puede determinar con precisión el valor de otros conjuntos. Se denota como X → Y , donde X es un conjunto de atributos que es capaz de determinar el valor de Y. El conjunto de atributos en el lado izquierdo de la flecha, X se llama Determinante , mientras que en el lado derecho, Y se llama el Dependiente . Las dependencias funcionales se utilizan para expresar matemáticamente las relaciones entre las entidades de la base de datos y son muy importantes para comprender conceptos avanzados en el sistema de base de datos relacional y comprender problemas en exámenes competitivos como Gate.
Ejemplo:
rollo_no | nombre | nombre_depto | edificio_departamento |
---|---|---|---|
42 | a B C | CO | A4 |
43 | pqr | ESO | A3 |
44 | xyz | CO | A4 |
45 | xyz | ESO | A3 |
46 | mno | CE | B2 |
47 | jkl | YO | B2 |
De la tabla anterior podemos concluir algunas dependencias funcionales válidas:
- roll_no → { name, dept_name, dept_building },→ Aquí, roll_no puede determinar los valores de los campos name, dept_name y dept_building, por lo tanto, una dependencia funcional válida
- roll_no → dept_name , dado que roll_no puede determinar el conjunto completo de {name, dept_name, dept_building}, también puede determinar su subconjunto dept_name.
- dept_name → dept_building , Dept_name puede identificar el dept_building con precisión, ya que los departamentos con diferentes dept_name también tendrán un dept_building diferente
- Dependencias funcionales más válidas: roll_no → nombre, {roll_no, nombre} ⇢ {dept_name, dept_building}, etc.
Aquí hay algunas dependencias funcionales no válidas:
- name → dept_name Los estudiantes con el mismo nombre pueden tener diferentes dept_name, por lo tanto, esta no es una dependencia funcional válida.
- edificio_depto → nombre_depto Puede haber varios departamentos en el mismo edificio. Por ejemplo, en la tabla anterior, los departamentos ME y EC están en el mismo edificio B2, por lo tanto, edificio_depto → nombre_depto es una dependencia funcional no válida.
- Más dependencias funcionales no válidas: nombre → roll_no, {name, dept_name} → roll_no, dept_building → roll_no, etc.
Axiomas/propiedades de Armstrong de las dependencias funcionales:
- Reflexividad: si Y es un subconjunto de X, entonces X→Y se cumple por la regla de reflexividad
. Por ejemplo, {roll_no, name} → name es válido. - Aumento: si X → Y es una dependencia válida, entonces XZ → YZ también es válido según la regla de aumento.
Por ejemplo, si {roll_no, name} → dept_building es válido, entonces {roll_no, name, dept_name} → {dept_building, dept_name} también es válido.→ - Transitividad : si X → Y e Y → Z son dependencias válidas, entonces X→Z también es válida según la regla de transitividad.
Por ejemplo, roll_no → dept_name & dept_name → dept_building, luego roll_no → dept_building también es válido.
Tipos de dependencias funcionales en DBMS:
- Dependencia funcional trivial
- Dependencia funcional no trivial
- Dependencia funcional multivaluada
- Dependencia funcional transitiva
1. Dependencia funcional trivial
En la Dependencia Funcional Trivial , un dependiente es siempre un subconjunto del determinante.
es decir, si X → Y e Y es el subconjunto de X , entonces se llama dependencia funcional trivial
Por ejemplo,
rollo_no | nombre | años |
---|---|---|
42 | a B C | 17 |
43 | pqr | 18 |
44 | xyz | 18 |
Aquí, {roll_no, name} → name es una dependencia funcional trivial, ya que el nombre dependiente es un subconjunto del conjunto determinante {roll_no, name}
De manera similar, roll_no → roll_no también es un ejemplo de dependencia funcional trivial.
2. Dependencia funcional no trivial
En la dependencia funcional no trivial , el dependiente no es estrictamente un subconjunto del determinante.
es decir, si X → Y e Y no es un subconjunto de X , entonces se llama dependencia funcional no trivial.
Por ejemplo,
rollo_no | nombre | años |
---|---|---|
42 | a B C | 17 |
43 | pqr | 18 |
44 | xyz | 18 |
Aquí, roll_no → name es una dependencia funcional no trivial, ya que el nombre dependiente no es un subconjunto del determinante roll_no
De manera similar, {roll_no, name} → age también es una dependencia funcional no trivial, ya que age no es un subconjunto de { roll_no, nombre}
3. Dependencia funcional multivaluada
En la dependencia funcional multivaluada , las entidades del conjunto dependiente no dependen entre sí.
es decir, si a → {b, c} y no existe una dependencia funcional entre b y c , entonces se denomina dependencia funcional multivaluada.
Por ejemplo,
rollo_no | nombre | años |
---|---|---|
42 | a B C | 17 |
43 | pqr | 18 |
44 | xyz | 18 |
45 | a B C | 19 |
Aquí, roll_no → {nombre, edad} es una dependencia funcional multivaluada, ya que el nombre y la edad de los dependientes no dependen entre sí (es decir, nombre → edad o edad → ¡el nombre no existe! )
4. Dependencia Funcional Transitiva
En la dependencia funcional transitiva, el dependiente depende indirectamente del determinante.
es decir, si a → b & b → c , entonces según el axioma de transitividad, a → c . Esta es una dependencia funcional transitiva.
Por ejemplo,
inscribirse_no | nombre | departamento | edificio número |
---|---|---|---|
42 | a B C | CO | 4 |
43 | pqr | CE | 2 |
44 | xyz | ESO | 1 |
45 | a B C | CE | 2 |
Aquí, enrol_no → dept y dept → building_no ,
por lo tanto, de acuerdo con el axioma de transitividad, enrol_no → building_no es una dependencia funcional válida. Esta es una dependencia funcional indirecta, por lo que se denomina dependencia funcional transitiva.
Publicación traducida automáticamente
Artículo escrito por omkarphansopkar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA