Cette dépendance fonctionnelle est-elle correcte?
Question
Ceci est juste un exemple que j'ai créé. Supposons que c'est la relation que j'ai:
0NF Voiture (carid pk, (Tireid, TIRE_COLOUR, TIRE_PUNCTURE), CARE) Où Tireid, Tire_Colour, TIRE_PUNCTURE fait partie d'un groupe répété.
Une voiture serait considérée comme sûre si toutes les pneus sont pneus ne sont pas ponctués.
la dépendance fonctionnelle suivante serait-elle correcte:
CARDID, TIERID, TIRE_PUNCTURE -> {SAFE}
Si je devais continuer à normaliser et j'ai décomposé la relation dans des tables séparées, comment afficherais-je la dépendance de la sécurité de la sécurité des tables.
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
La solution
La théorie de la normalisation classique ne peut s'appliquer à ce scénario uniquement si vous considérez la partie de votre schéma (Tireid, TIRE_COLOUR, TIREID, TIRE_COLOUR, TIREID, TIRE_COLOUR, TIREID_PUNCTURE) comme indiquant un
Dans ce cas, vous avez les deux carides de FD -> Yourrva et Yourrva -> Safe.
Le premier exprime le fait que nous connaissons quelle voiture nous permettons de savoir quel ensemble de pneus est impliqué (et leur état), et la seconde exprime le fait que l'état des pneus détermine (tout d'en soi ) si la voiture est sûre ou non.
Si vous "dérouler" cette conception (*) dans une (*) plus traditionnelle (en remplaçant l'attribut RVA avec les attributs scalaires, il contient), alors le Yourrva -> Safe FD n'est plus exprimable, car évidemment yourrva non existe plus longtemps. Spécifier de telles règles dans de telles conceptions dépasse le champ d'application et ne peut être effectuée avec des dépendances fonctionnelles.
(*) Et si vous souhaitez implémenter cela dans un système SQL, vous serez obligé de le faire, car les systèmes SQL (et peut-être même la langue SQL elle-même) ne prennent généralement pas en charge les tables de base de la RVA.