CREATE TABLE IF NOT EXISTS `acl_module` ( `acl_module_id` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Module ID', `acl_module_name` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT 'Module Name', PRIMARY KEY (`acl_module_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ACL Modules'; CREATE TABLE IF NOT EXISTS `acl_privilege` ( `acl_privilege_id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Privilege ID', `acl_resource_id` tinyint(3) UNSIGNED NOT NULL COMMENT 'Resource ID', `acl_privilege_name` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT 'Privilege Name', PRIMARY KEY (`acl_privilege_id`), UNIQUE KEY `acl_resource_id_2` (`acl_resource_id`,`acl_privilege_name`), KEY `acl_resource_id` (`acl_resource_id`), KEY `acl_privilege_name` (`acl_privilege_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ACL Privileges'; CREATE TABLE IF NOT EXISTS `acl_resource` ( `acl_resource_id` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Resource ID', `acl_module_id` tinyint(3) UNSIGNED NOT NULL COMMENT 'Module ID', `acl_resource_name` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT 'Resource Name', PRIMARY KEY (`acl_resource_id`), KEY `acl_module_id` (`acl_module_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ACL Resources'; CREATE TABLE IF NOT EXISTS `acl_role` ( `acl_role_id` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ACL Role ID', `acl_role_name` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT 'Role Name', PRIMARY KEY (`acl_role_id`), KEY `acl_role_name` (`acl_role_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ACL Roles'; CREATE TABLE IF NOT EXISTS `acl_role_privilege` ( `acl_role_id` tinyint(3) UNSIGNED NOT NULL COMMENT 'Role ID', `acl_privilege_id` smallint(5) UNSIGNED NOT NULL COMMENT 'Privilege ID', PRIMARY KEY (`acl_role_id`,`acl_privilege_id`), KEY `acl_role_id` (`acl_role_id`), KEY `acl_privilege_id` (`acl_privilege_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ACL Role Privileges'; ALTER TABLE `acl_privilege` ADD CONSTRAINT `acl_privilege_ibfk_1` FOREIGN KEY (`acl_resource_id`) REFERENCES `acl_resource` (`acl_resource_id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `acl_resource` ADD CONSTRAINT `acl_resource_ibfk_1` FOREIGN KEY (`acl_module_id`) REFERENCES `acl_module` (`acl_module_id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `acl_role_privilege` ADD CONSTRAINT `acl_role_privilege_ibfk_3` FOREIGN KEY (`acl_role_id`) REFERENCES `acl_role` (`acl_role_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `acl_role_privilege_ibfk_4` FOREIGN KEY (`acl_privilege_id`) REFERENCES `acl_privilege` (`acl_privilege_id`) ON DELETE CASCADE ON UPDATE CASCADE;