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_resource_name` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT 'Resource Name', PRIMARY KEY (`acl_resource_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_referrer` tinyint(3) unsigned default NULL COMMENT 'Referrer', `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'; CREATE TABLE IF NOT EXISTS `navigation` ( `navigation_id` int(10) unsigned NOT NULL auto_increment COMMENT 'Navigation ID', `navigation_parent_id` int(10) unsigned default NULL COMMENT 'Parent ID', `acl_privilege_id` smallint(5) unsigned NOT NULL COMMENT 'ACL Privilege ID', `navigation_order` tinyint(4) NOT NULL default '0' COMMENT 'Order', `navigation_name` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT 'Name', PRIMARY KEY (`navigation_id`), KEY `navigation_parent_id` (`navigation_parent_id`), KEY `avl_privilege_id` (`acl_privilege_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Navigation'; -- -- Constraints for table `acl_privilege` -- 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; -- -- Constraints for table `acl_role_privilege` -- 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; -- -- Constraints for table `navigation` -- ALTER TABLE `navigation` ADD CONSTRAINT `navigation_ibfk_1` FOREIGN KEY (`navigation_parent_id`) REFERENCES `navigation` (`navigation_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `navigation_ibfk_2` FOREIGN KEY (`acl_privilege_id`) REFERENCES `acl_privilege` (`acl_privilege_id`) ON DELETE CASCADE ON UPDATE CASCADE;