sql >> Database teknologi >  >> RDS >> Mysql

Trænger mit bord til mere normalisering?

Normalisering kræver at kende funktionelle afhængigheder (FD'er) og joinafhængigheder (FD'er). Du gav dem ikke.

Din ansøgning Vi kan kun fortælle dig FD'erne og JD'erne, hvis vi ved præcis, hvad der er "det forhold, som jeg ønskede at udtrykke" (dvs. prædikat) for hver tabel (dvs. til det punkt, hvor vi kunne se på en situation og vide for hver mulig række, om den fremsætter et sandt forslag fra prædikatet og hører derfor hjemme i tabellen) og præcis hvilke mulige situationer der kan opstå (via "forretningsregler" om mulige applikationssituationer, svarende til begrænsninger på mulige databasetilstande).

Dine "nøgler" Du gav ikke FD'er. Du har lige givet en kandidatnøgle (CK) og en "unik nøgle". Men du kan ikke bestemme nogle eller alle CK'erne uden at vide visse ting om FD'erne. Så når du giver CK'er, er det det samme som at sige, at der er og ikke er sikre FD'er. Du skal fortælle os, hvad du har givet os, når du giver nogle kolonnesæt mærket PK eller "unik nøgle":Er en "unik nøgle" en CK (indeholder ikke mindre unik undergruppe) eller bare en supernøgle (unik)? Gav du alle CK'erne eller kunne der være andre? Kan der være andre supernøgler end supersættene af de givne? Det er meget nyttigt, hvis du bare fortæller os præcis, hvilke FD'er du ved holder (via et minimalt cover), og hvilke du ved ikke holder.

Gæt
Jeg aner ikke, hvad is_calculated er for.
Måske en given date og meal par har præcis ét content ?

TL;DR Du skal virkelig tjekke hvert muligt sæt af kolonner for at se, om det funktionelt bestemmer hinandens kolonner. Dvs. om en underrække af værdier for kolonnesættet for hver databasestat kun vises med én værdi for kolonnen. Vi kan kun gætte uden en klar forståelse af dine prædikater og din ansøgning. Du kan reducere arbejdet med følgende:Hvis et sæt kolonner er unikt, bestemmer dets supersæt alle andre kolonner. Hvis et sæt af kolonner er minimalt unikt (er en CK), så bestemmer ingen af ​​dets mindre undersæt alle andre kolonner. Du kan se efter modeksempler til formodede FD'er, hvor to rækker kan have den samme underrække af værdier for en formodet determinant, men har forskellige værdier for en formodet bestemt attribut. Armstrongs aksiomer genererer alle de FD'er, der er impliceret af givne.

JD'er Normalisering til 4NF og 5NF involverer opdeling af tabel i flere tabeller for at eliminere JD'er, der ikke er underforstået af CK'er. En tabels prædikat kan udtrykkes som AND af andre, præcis når en JD holder svarende til prædikaternes kolonnesæt. En relation er i 5NF, når hver konjunkt i hver JD overlapper en anden på mindst en CK. (Fagins medlemskabsalgoritme.)

PS Hvis du bekymrer dig om begrænsninger, mistede du så en, da du gik fra et bord til to?



  1. Mysql forbinder fire tabeller og viser NULL værdi

  2. Definer dynamisk klassenavn i peewee-modellen

  3. Database:Kan jeg have nullbare attributter i en tredje normalform database?

  4. MySQL MIN() og MAX() med LIMIT