sql >> Databasteknik >  >> RDS >> PostgreSQL

Är det någonsin en bra idé att lagra en matris som ett fältvärde, eller lagra matrisvärden som poster?

Jag tycker att du ska läsa om Databasnormalisering och bestäm själv. Kort sagt, det finns ett antal problem med ditt förslag, men du kan bestämma dig för att du kan leva med dem.

De mest uppenbara är:

  1. Vad händer om en ytterligare tagg läggs till i rad(1)? Måste du först analysera, kontrollera om den redan finns och uppdatera sedan raden till tags.append(newTag) .
  2. Är det värre att ta bort en tagg? Sök taggar, finns, återskapa taggar.
  3. Vad händer om en tagg ska byta namn - kanske någon modereringsprocess?
  4. Ännu värre, vad sägs om att olika personer anger ett taggnamn på olika sätt - det skulle vara svårt att rationalisera.
  5. Vad händer om du vill fråga data baserat på taggar? Din fråga blir mycket mer komplex än den skulle behöva vara.
  6. Presentation:Klienten måste analysera taggen för att kunna använda den. Hur är det med separatorfältet? Ändra det och alla klienter måste ändras.

Kort sagt, alla dessa operationer blir svårare och krångligare. Normalisering är utformad för att övervinna sådana problem. Förmodligen är det enda skälet till att göra det du säger, IMO, att du fångar in data som en engångsföreteelse och att det endast är informativt - det vill säga är vettigt för en användare men inte för ett system i sig. Det här är ungefär som att säga att det förmodligen är bäst att undvika (igen, IMO).



  1. Relation mellan katalog, schema, användare och databasinstans

  2. MySQL:Kan en lagrad procedur anropa ett Java-program?

  3. MySQL #1093 - Du kan inte ange måltabellen "giveaways" för uppdatering i FROM-klausulen

  4. Funktionen min(uuid) finns inte i postgresql