¿Es correcta esta dependencia funcional?
Pregunta
Este es solo un ejemplo que he creado. Supongamos que esta es la relación que tengo:
0nf Coche (Carid Pk, (Tiraid, Tire_Colour, Tire_puntured), seguro) Donde TireID, Tire_Colour, Tire_punted es parte de un grupo repetido.
Un automóvil se considerará seguro si todos sus llantas no están perforados.
sería la siguiente dependencia funcional correcta:
CardID, Tiraid, Tire_punted -> {SAFE}
Si tuviera que seguir normalizando y descompone la relación en tablas separadas ¿Cómo mostraría la dependencia de seguro a través de las tablas?
Sample Data
------------
CarID | TireID | Tire_Colour | Tire_Punctured | Safe |
1 23 black false true
1 11 blue false true
1 29 black false true
1 1 black false true
2 4 red false false
2 34 purple false false
2 24 black true false
2 64 black false false
Solución
La teoría de la normalización clásica puede aplicarse a este escenario solo si considera que la parte (Tireid, Tire_Colour, Tire_punted) de su esquema que denota una solo * atributo / columna , y ese atributo / columna en sí se realiza en los valores * relacionados (/ tabla) * . Atributos de relación calidad-precio, RVA's para corta, en la teoría moderna.
En ese caso, tiene las dos FD's Carid -> YourRVA y YourRVA -> Seguro.
El primero expresa el hecho de que sabiendo de qué automóvil estamos hablando nos permite saber qué se involucra el conjunto de neumáticos (y su estado), y el segundo expresa el hecho de que el estado de los neumáticos determina (todo por sí mismo. ) Si el automóvil es seguro o no.
Si "desenvuelve" este diseño (*) en uno más tradicional (reemplazando el atributo RVA con los atributos escalares que contiene), luego el FD de YourRVA -> Safe Safe simplemente no es expresable, porque obviamente no se le expresa. existe más tiempo. La especificación de dichas reglas en tales diseños está más allá del alcance de, y no se puede hacer con, dependencias funcionales.
(*) Y Si desea implementar esto en un sistema SQL, se le verá obligado a hacerlo porque los sistemas SQL (y quizás incluso el idioma de SQL en sí) normalmente no admiten las Mesas base de RVA.