У меня была аналогичная проблема, надо было хранить список упражнений (спорт) в виде: id => name.
Решил так: основное хранилище в БД, далее у меня пускается вручную скрипт, который автоматом вставляет этот список в js и в php файл в виде массива. Т.е. при изменении данных в БД (крайне редко, но есть), я пускаю скрипт и данные в js и php меняются автоматом.
Зачем: у меня много работы вынесено на сторону клиента в js и чтобы вечно через ajax не дергать сервер - мне проще хранить часть данных в клиенте, в итоге клиент спокойно работает с разными упражнениями и не дергает мой сервак каждый раз. В php я генерирую по той же причине, только вместо слово "сервак" - "БД". У меня код общается по id упражнениям, пользователю в шаблонах/письмах надо выводить name. Каждый раз селектить из БД то что по сути почти статично - считаю не айс. Но напоминаю - основное хранилище данных - БД, потому как джоины тоже бывают.
p.s. некоторые мне говорили уже что это экономия на спичках, но сэконмил тут пару обращений в БД, там парочку, еще в нескольких местах сэкономил * (умножить) на одновременное кол-во юзеров на ресурсе = профит. Причем напоминаю еще раз - основа в БД, в статику делает скрипт - т.е. я не имею гемороя.
p.s.s. касательно вопроса автора - если вам нужны статичные данные и в будущем не будет расширения, join'ов, и ничего не изменится в задаче - юзайте массив, если все же есть шанс расширения или join'ов - то лучше БД. Реализация должна соотвествовать требованиям, а не моде или "правилам" IMHO