sql >> Database >  >> RDS >> Mysql

Heeft mijn tabel meer normalisatie nodig?

Normalisatie vereist kennis van functionele afhankelijkheden (FD's) en join-afhankelijkheden (FD's). Je hebt ze niet gegeven.

Uw aanvraag We kunnen u alleen de FD's en JD's vertellen als we precies weten wat "de relatie is die ik wilde uitdrukken" (dwz predikaat) voor elke tabel (dwz tot het punt waarop we naar een situatie kunnen kijken en voor elke mogelijke rij weten of het maakt een echte propositie van het predikaat en hoort dus in de tabel) en precies welke mogelijke situaties zich kunnen voordoen (via "bedrijfsregels" over mogelijke toepassingssituaties, equivalent aan beperkingen op mogelijke databasestatussen).

Uw "sleutels" Je hebt geen FD's gegeven. Je hebt zojuist één kandidaatsleutel (CK) en een "unieke sleutel" gegeven. Maar je kunt sommige of alle CK's niet bepalen zonder bepaalde dingen over de FD's te weten. Dus als je CK's geeft, is dat hetzelfde als zeggen dat er wel en niet bepaalde FD's zijn. Je moet ons vertellen wat je ons hebt gegeven als je een aantal kolommensets geeft met het label PK of "unieke sleutel":is een "unieke sleutel" een CK (die geen kleinere unieke subset bevat) of gewoon een supersleutel (uniek)? Heb je alle CK's gegeven of kunnen er nog meer zijn? Zouden er andere supersleutels kunnen zijn dan de supersets van de gegeven? Het is zeer nuttig als u ons precies vertelt welke FD's u kent (via een minimale dekking) en waarvan u weet dat ze niet gelden.

Gissen
Ik heb geen idee wat is_calculated is voor.
Misschien een bepaalde date en meal paar heeft precies één content ?

TL;DR U moet echt elke mogelijke reeks kolommen controleren om te zien of deze functioneel elke andere kolom bepaalt. Dat wil zeggen of er voor elke databasestatus een subrij met waarden voor de reeks kolommen verschijnt met slechts één waarde voor de kolom. Zonder een duidelijk begrip van uw predikaten en uw toepassing kunnen we er alleen maar naar gissen. U kunt het werk als volgt verminderen:Als een reeks kolommen uniek is, bepalen de supersets alle andere kolommen. Als een set kolommen minimaal uniek is (is een CK), dan bepaalt geen van de kleinere subsets alle andere kolommen. U kunt tegenvoorbeelden zoeken voor vermeende FD's, waarbij twee rijen dezelfde subrij met waarden voor een vermoedelijke determinant kunnen hebben, maar verschillende waarden voor een vermoedelijk bepaald attribuut. De axioma's van Armstrong genereren alle FD's die door gegeven worden geïmpliceerd.

JD's Normalisatie naar 4NF en 5NF omvat het splitsen van de tabel in meerdere tabellen om JD's te elimineren die niet worden geïmpliceerd door CK's. Het predikaat van een tabel kan worden uitgedrukt als de AND van anderen, precies wanneer een JD geldt die overeenkomt met de kolommensets van de predikaten. Een relatie is in 5NF wanneer elke conjunct in elke JD een andere overlapt op ten minste een CK. (Het lidmaatschapsalgoritme van Fagin.)

PS Als je om beperkingen geeft, ben je er dan een kwijtgeraakt toen je van de ene naar de andere tafel ging?



  1. spring-opstartprofielen gebruiken met liquibase changeset-contextattribuut om het bereik van de changeset te beheren

  2. MacOSX:mysql automatisch starten bij opstarten

  3. Oracle:standaardwaarde opgeven voor kolom objecttype

  4. Vind huidige vacatures voor Oracle Forms &Reports