Не могу понять почему использован varchar, пожалуйста помогите понять

Nelius

кипарис во дворе
Не могу разобраться почему использован varchar, пожалуйста помогите понять

Возможно мне просто не хватает знаний чтобы понять, поэтому обращаюсь с вопросом.
Я реализую хранение ролей в БД, использую Zend_Acl.
Чтобы не создавать велосипеды, гуглил, изучал как делают люди.
Наткнулся вот на такой класс MyACL (скачать без регистрации на phpclasses можно тут: nelius.in)

И возник вопрос по структуре таблиц, как их реализует автор...

Структура таблиц (размещаю структуру 2-х из 4-х таблиц чтобы пост не получался огромным, остальное по ссылкам):

PHP:
CREATE TABLE `acl_roles` (
  `id` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `acl_inheritance` (
  `child_id` varchar(50) NOT NULL,
  `parent_id` varchar(50) NOT NULL,
  `order` int(11) NOT NULL default '0',
  PRIMARY KEY  (`child_id`,`parent_id`),
  KEY `parent_id` (`parent_id`),
  CONSTRAINT `acl_inheritance_ibfk_3` FOREIGN KEY (`child_id`) REFERENCES `acl_roles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `acl_inheritance_ibfk_4` FOREIGN KEY (`parent_id`) REFERENCES `acl_roles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Как видно автор использует в таблице acl_roles varchar(50) для ID, причем, это единственное поле (то есть id и role_name в его реализации одно и то же).
Из второй таблицы видно, что автор использует foreign keys для поддержания целостности данных.
Так вот я не понимаю почему автор не использовал INT в качестве ID?
Подскажите пожалуйста что я упускаю из виду, потому что мне кажется что использовать varchar тут не стоит.
 

whirlwind

TDD infected, paranoid
Ну, видимо, смысла особого нет. Скорее всего из-за того, что количество ролей довольно ограничено. Почему varchar, надеюсь понятно?
 
Сверху