Nelius
кипарис во дворе
Не могу разобраться почему использован varchar, пожалуйста помогите понять
Возможно мне просто не хватает знаний чтобы понять, поэтому обращаюсь с вопросом.
Я реализую хранение ролей в БД, использую Zend_Acl.
Чтобы не создавать велосипеды, гуглил, изучал как делают люди.
Наткнулся вот на такой класс MyACL (скачать без регистрации на phpclasses можно тут: nelius.in)
И возник вопрос по структуре таблиц, как их реализует автор...
Структура таблиц (размещаю структуру 2-х из 4-х таблиц чтобы пост не получался огромным, остальное по ссылкам):
Как видно автор использует в таблице acl_roles varchar(50) для ID, причем, это единственное поле (то есть id и role_name в его реализации одно и то же).
Из второй таблицы видно, что автор использует foreign keys для поддержания целостности данных.
Так вот я не понимаю почему автор не использовал INT в качестве ID?
Подскажите пожалуйста что я упускаю из виду, потому что мне кажется что использовать 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;
Из второй таблицы видно, что автор использует foreign keys для поддержания целостности данных.
Так вот я не понимаю почему автор не использовал INT в качестве ID?
Подскажите пожалуйста что я упускаю из виду, потому что мне кажется что использовать varchar тут не стоит.