Máte zde několik otázek, takže se jim budu věnovat samostatně:
Potřebuji uložit několik vybraných položek do jednoho pole v databázi
Moje obecné pravidlo zní:ne. To je něco, co všechno kromě vyžaduje druhá tabulka (nebo třetí) s cizím klíčem. Jistě, nyní se to může zdát snazší, ale co když se objeví případ použití, kdy je potřeba tyto položky skutečně hledat jednotlivě? Znamená to také, že máte více možností pro líné vytváření instancí a máte konzistentnější zkušenosti ve více rámcích/jazycích. Dále je méně pravděpodobné, že budete mít problémy s časovým limitem připojení (30 000 znaků je hodně).
Zmínil jste, že uvažujete o použití ENUM. Jsou tyto hodnoty pevné? Znáte je dopředu? Pokud ano, toto by byla moje struktura:
Základní tabulka (to, co máte nyní):
| id primary_key sequence
| -- other columns here.
Tabulka položek:
| id primary_key sequence
| descript VARCHAR(30) UNIQUE
Tabulka mapy:
| base_id bigint
| items_id bigint
Tabulka map by měla cizí klíče, takže base_id se mapuje na základní tabulku a items_id se mapuje na tabulku položek.
A pokud byste chtěli snadný způsob, jak to získat z DB, vytvořte pohled, který provede spojení. Můžete dokonce vytvořit pravidla pro vkládání a aktualizaci, takže se budete prakticky zabývat pouze jednou tabulkou.
Jaký formát mám použít pro ukládání dat?
Pokud něco takového musíte udělat, proč nepoužít pouze řetězec ohraničený znakem? Bude vyžadovat menší výpočetní výkon než CSV, XML nebo JSON a bude kratší.
Jaký typ sloupce bych měl použít pro ukládání dat?
Osobně bych použil TEXT
. Nezdá se, že byste tím, že z toho uděláte BLOB
, moc získali a TEXT
, podle mých zkušeností je snazší číst, pokud používáte nějakou formu IDE.