账号表 CREATE TABLE `account` ( `id` BIGINT NOT NULL COMMENT '主键ID', `user_id` BIGINT NOT NULL COMMENT '用户ID', `account` VARCHAR(64) NOT NULL COMMENT '账号', `password` VARCHAR(128) NOT NULL COMMENT '密码', `account_type` int DEFAULT 1 COMMENT '账号类型 {[1:邮箱] [2:手机] [3:工号]}' ........ ) 用户表 CREATE TABLE `user` ( `id` BIGINT NOT NULL COMMENT '主键ID', `name` VARCHAR(128) NOT NULL COMMENT '姓名', `avatar` VARCHAR(255) default null comment '头像', `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注' ........ ) 员工信息表 CREATE TABLE `employee` ( `id` BIGINT NOT NULL COMMENT '主键ID', `user_id` BIGINT NOT NULL COMMENT '用户ID', `employee_no` int NOT NULL COMMENT '工号', `join_date` date NOT NULL COMMENT '入职时间' ........ ) user与account是一对多 user与employee是一对一  **系统需要支持以工号、邮箱、手机号登录(手机验证码或密码)** 在上述表设计中会存在一下问题 1. 查询用户信息的时候需要显示邮箱、手机号、工号等信息,如果用户表中没有这些信息,则需要通过关联查询账号表,但是如果用户表中存在这些信息,则需要冗余这些字段,并且修改账号表数据时需要同步修改冗余字段 2. 用户表与账号表是一对多,同一个用户多个账号的密码是相同的,修改密码就需要同步修改多个账号 3. 查询用户信息的时候表需要跨多张表 4. 有些情况用户不一定是员工,可能是临时用户所有区分了用户表和员工表 5. 如果user冗余(邮箱、手机号、工号)的话是需要加密存储的,这种情况账号表需要加密吗,常规做法是怎么样的 根据以上情况,这些表改如何优化