-- 数据库表结构创建语句
-- 根据实体类 Menu.java, Role.java, User.java, UserRole.java 生成

-- 1. 用户表 (user)
CREATE TABLE `user` (
                        `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',
                        `user_name` varchar(255) DEFAULT NULL COMMENT '用户名称',
                        `email` varchar(255) DEFAULT NULL COMMENT '邮箱',
                        `phone` varchar(20) DEFAULT NULL COMMENT '用户电话',
                        `password` varchar(255) DEFAULT NULL COMMENT '密码',
                        `original_password` varchar(255) DEFAULT NULL COMMENT '原始密码',
                        `token` varchar(255) DEFAULT NULL COMMENT 'token令牌',
                        `avatar` varchar(255) DEFAULT NULL COMMENT '头像',
                        `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                        `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
                        PRIMARY KEY (`user_id`),
                        KEY `idx_phone` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

-- 2. 角色表 (role)
CREATE TABLE `role` (
                        `role_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色编号',
                        `role_name` varchar(255) DEFAULT NULL COMMENT '角色名称',
                        PRIMARY KEY (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';

-- 3. 用户角色关联表 (user_role)
CREATE TABLE `user_role` (
                             `user_id` int(11) NOT NULL COMMENT '用户编号',
                             `role_id` int(11) NOT NULL COMMENT '角色编号',
                             PRIMARY KEY (`user_id`, `role_id`),
                             KEY `fk_user_role_user_id` (`user_id`),
                             KEY `fk_user_role_role_id` (`role_id`),
                             CONSTRAINT `fk_user_role_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE,
                             CONSTRAINT `fk_user_role_role_id` FOREIGN KEY (`role_id`) REFERENCES `role` (`role_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';

-- 4. 菜单表 (menu)
CREATE TABLE `menu` (
                        `menu_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单编号',
                        `name` varchar(255) DEFAULT NULL COMMENT '菜单名称',
                        `redirect` varchar(255) DEFAULT NULL COMMENT '重定向路径',
                        `path` varchar(255) DEFAULT NULL COMMENT '路由路径',
                        `component` varchar(255) DEFAULT NULL COMMENT '组件路径',
                        `parent_id` int(11) DEFAULT NULL COMMENT '父菜单ID',
                        `meta` json DEFAULT NULL COMMENT '元数据信息(JSON格式)',
                        PRIMARY KEY (`menu_id`),
                        KEY `idx_menu_parent_id` (`parent_id`),
                        CONSTRAINT `fk_menu_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `menu` (`menu_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
