Созадйте таблицу
ID ListID Value
где ID — уникальный номер записи в таблице (primary key), ListID — какойто ваш внутренний идентификатор, Value сами понимаете, что. Тогда вы сможете извлеч как одну строку, написав SELECT * From TableName Where ListID = 1 или несколько значений, которые уже и составят для вас список. Узнать, сколько у ваc значений с одним ListID так: SELECT Count( * ) From TableName Where ListID = 1; и не нужно дополнителных полей для отметки список это или нет.
Обратите внимание, что (по вашим вариантам) разделители или мультизначения тоже потом надо будет както обработать, потратив время, и (вероятно) еще раз сделать SELECT, затратив и на него дополнительное время и ресурсы. С моим вариантов у вас будет просто join если потрубется.
Не в коем случае не теряйте уникальный ключ в вашей таблиц, как вы хотите в 3!