sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man lagrar array eller flera värden i en kolumn

Du har ett par frågor här, så jag tar upp dem separat:

Jag behöver lagra ett antal valda objekt i ett fält i en databas

Min allmänna regel är:gör det inte. Detta är något som allt utom kräver en andra tabell (eller tredje) med en främmande nyckel. Visst, det kan tyckas enklare nu, men vad händer om användningsfallet kommer där du faktiskt behöver fråga efter dessa föremål individuellt? Det betyder också att du har fler alternativ för lat instansiering och att du har en mer konsekvent upplevelse över flera ramar/språk. Dessutom är det mindre troligt att du får problem med timeout för anslutningen (30 000 tecken är mycket).

Du nämnde att du funderade på att använda ENUM. Är dessa värden fasta? Känner du till dem i förväg? Om så är fallet skulle detta vara min struktur:

Bastabell (vad du har nu):

| id primary_key sequence
| -- other columns here.

Objekttabell:

| id primary_key sequence
| descript VARCHAR(30) UNIQUE

Karttabell:

| base_id  bigint
| items_id bigint

Karttabellen skulle ha främmande nycklar så base_id mappas till bastabellen och items_id skulle mappas till objekttabellen.

Och om du vill ha ett enkelt sätt att hämta detta från en DB, skapa då en vy som gör kopplingarna. Du kan till och med skapa regler för infogning och uppdatering så att du praktiskt taget bara har att göra med en tabell.

Vilket format ska jag använda för att lagra data?

Om du måste göra något liknande, varför inte bara använda en teckenavgränsad sträng? Den kommer att ta mindre processorkraft än en CSV, XML eller JSON, och den blir kortare.

Vilken kolumntyp ska jag använda för att lagra data?

Personligen skulle jag använda TEXT . Det låter inte som att du skulle tjäna mycket på att göra detta till en BLOB och TEXT , enligt min erfarenhet, är lättare att läsa om du använder någon form av IDE.



  1. SQL-fråga för att ta bort databas i MySQL

  2. Fix Msg 529 "Explicit konvertering från datatyp int till xml är inte tillåten" i SQL Server

  3. Hur man automatiserar Galera Cluster med ClusterControl CLI

  4. EXP() Exempel i SQL Server