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.