Поправьте spawn на spawn(main, do_something , [Line]),, тут моя ошибка, и замените -compile(export_all). на явное определение экспорта -export([start/0, do_something/1]).
Можете вместо добавления строки в массив просто вызывать spawn для её обработки, только учтите, что обратно никаких данных не вернётся, все процессы независимые.
Поток под каждую строку создавать никакого смысла нет, они всё равно на экран выводить смогут только по очереди. А с поиском - полнотекстовый поиск в MyISAM базе, на мой взгляд, будет быстрее, чем чтение из файла и поиск в памяти.
Потому, что одноразовое действие можно представить как многоразовое со следующими атрибутами:
Частота повторений: один раз
Количество повторений: одно
День окончания = дню начала
Список дней недели - пустой
Сразу упрощается логика работы с базой.
Нормализация же базы - не самоцель, а одно из средств поддержания структурной целостности базы. Она не должна возводиться в абсолют и использоваться в ущерб остальному.
Я говорю не про Цели и Действия, а про Действия и Расписание. Если у каждого Действия может быть одно и только одно Расписание, то не надо создавать лишние сущности.