Как хранить наборы статических данных (справочники) PHP или БД?
Все в базу данных. Иначе бардак получится, если у вас скрипт будет со справочниками одной версии, а база - со справочниками другой.
Как вариант такая схема:
Таблица dataset_list - содержит список наборов данных, где
- caption это название "Единицы измерения"
- alias это псевдоним "unit_list"CREATE TABLE `dataset_list` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `caption` varchar(255) NOT NULL DEFAULT '',
  `alias` varchar(255) NOT NULL DEFAULT '',
  `active` enum('1','0') NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Таблица dataset_item содержит сами наборы данных
- catalog_id ссылка на таблицу dataset_list (к какому списку относится данная позиция)
- key это псевдо ключ как в массиве
-captionA-Е - это поля данных, несколько полей для "многомерности" CREATE TABLE `dataset_item` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `catalog_id` int(11) NOT NULL DEFAULT '0',
  `key` int(11) NOT NULL DEFAULT '0',
  `captionA` varchar(255) NOT NULL DEFAULT '',
  `captionB` varchar(255) NOT NULL DEFAULT '',
  `captionC` varchar(255) NOT NULL DEFAULT '',
  `captionD` varchar(255) NOT NULL DEFAULT '',
  `captionE` varchar(255) NOT NULL DEFAULT '',
  `active` enum('1','0') NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  KEY `catalog_id` (`catalog_id`),
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;