Ja, det är normalt att lagra förberäknade värden, baserat på andra data i databasen, i en databas. Men inte nödvändigtvis av den anledningen du nämner. Jag har aldrig haft problem med MAX_JOIN_SIZE
.
Det främsta, och förmodligen enda, skälet till att lagra beräknade värden är hastighet. Så du gör det för värden som inte ändras så ofta och som kan användas i frågor som använder mycket data och kan därför vara för långsamma om du inte använde dem.
Till exempel:Om du vill veta det genomsnittliga värdet av alla beställningar i din databas skulle frågan vara mycket snabbare om du redan har ordersumman.
Varför och hur du uppdaterar värdena är helt upp till dig. Men du måste vara konsekvent med det . Om du använder MVC-mönstret skulle det vara vettigt att integrera det i styrenheten. Eller förenklat:Närhelst ett formulär skickas som kan ändra ett av värdena, från vilka det förberäknade värdet beräknas, måste du beräkna det igen.
Detta är en tydlig demonstration där "normalisering" inte upprätthålls helt. Det är inte riktigt snyggt, men ibland värt det. Du kan naturligtvis hävda att det beräknade värdet representerar "ny" information och därför inte strider mot "normalisering".