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  

Était-ce utile?

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 * Single (Stroit> Attribut / Colonne et cet attribut / colonne elle-même prend des valeurs * (/ Table) * . Attributs de valeur de la relation, RVA est bref, dans la théorie moderne.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top