diff --git a/src/main/java/edu/bjtu/groupone/backend/api/UserController.java b/src/main/java/edu/bjtu/groupone/backend/api/UserController.java
index 1e2746f..d510cee 100644
--- a/src/main/java/edu/bjtu/groupone/backend/api/UserController.java
+++ b/src/main/java/edu/bjtu/groupone/backend/api/UserController.java
@@ -116,7 +116,6 @@
         String email = request.getEmail();
         String code = request.getVerificationCode();
         String pwd = request.getPassword();
-        String idNumStr = request.getIdentificationNumber();
 
         // 验证验证码
         if (!userService.verifyCode(email, code)) {
@@ -134,18 +133,12 @@
             return Result.error("用户名已被占用");
         }
 
-        // 验证身份证号码
-        int idNum = Integer.parseInt(idNumStr);
-        if (userService.isIdentificationNumberExists(idNum)) {
-            return Result.error("身份证号码已被注册");
-        }
 
         // 创建新用户
         User newUser = new User();
         newUser.setUsername(username);
         newUser.setEmail(email);
         newUser.setPassword(pwd);
-        newUser.setIdentificationNumber(idNum);
 
         userService.register(newUser);
         return Result.success("注册成功");
diff --git a/src/main/java/edu/bjtu/groupone/backend/domain/dto/RegisterRequest.java b/src/main/java/edu/bjtu/groupone/backend/domain/dto/RegisterRequest.java
index fd4cc5a..fd147a9 100644
--- a/src/main/java/edu/bjtu/groupone/backend/domain/dto/RegisterRequest.java
+++ b/src/main/java/edu/bjtu/groupone/backend/domain/dto/RegisterRequest.java
@@ -29,9 +29,4 @@
     @Schema(description = "用户密码", required = true, example = "password123")
     private String password;
 
-    @NotNull(message = "身份证号码不能为空")
-    @Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X|x)$", 
-             message = "请输入有效的身份证号码")
-    @Schema(description = "用户身份证号码", required = true, example = "110101199001011234")
-    private String identificationNumber;
 }    
\ No newline at end of file
diff --git a/src/main/java/edu/bjtu/groupone/backend/domain/entity/User.java b/src/main/java/edu/bjtu/groupone/backend/domain/entity/User.java
index 2e4ddef..6db1f7f 100644
--- a/src/main/java/edu/bjtu/groupone/backend/domain/entity/User.java
+++ b/src/main/java/edu/bjtu/groupone/backend/domain/entity/User.java
@@ -17,7 +17,6 @@
     private String role;
     private String profilePic;
     private String registrationDate;
-    private int identificationNumber;
     private String avatar;// 头像
     private boolean isfollowed = false;
 }
diff --git a/src/main/java/edu/bjtu/groupone/backend/mapper/UserMapper.java b/src/main/java/edu/bjtu/groupone/backend/mapper/UserMapper.java
index ba0763e..8049e6a 100644
--- a/src/main/java/edu/bjtu/groupone/backend/mapper/UserMapper.java
+++ b/src/main/java/edu/bjtu/groupone/backend/mapper/UserMapper.java
@@ -21,8 +21,8 @@
     @Select("SELECT * FROM user WHERE email = #{email}")
     User selectByEmail(String email);
 
-    @Insert("INSERT INTO user(username, email, password, registration_date, identification_number) " +
-            "VALUES(#{username}, #{email}, #{password}, #{registrationDate}, #{identificationNumber})")
+    @Insert("INSERT INTO user(username, email, password, registration_date) " +
+            "VALUES(#{username}, #{email}, #{password}, #{registrationDate})")
     @Options(useGeneratedKeys = true, keyProperty = "userId")
     void insertUser(User user);
 
@@ -30,19 +30,16 @@
     int updatePasswordByEmail(@Param("email") String email,
                               @Param("password") String password);
 
-    @Select("SELECT COUNT(*) FROM user WHERE identification_number = #{identificationNumber}")
-    int countByIdentificationNumber(int identificationNumber);
-
     @Delete("DELETE FROM user WHERE user_id = #{userId}")
     int deleteUser(int userId);
 
-    @Update("UPDATE user SET username=#{username}, email=#{email}, password=#{password}, " +
-            "identification_number=#{identificationNumber} WHERE user_id=#{userId}")
+    @Update("UPDATE user SET username=#{username}, email=#{email}, password=#{password} " +
+            " WHERE user_id=#{userId}")
     int updateUser(User user);
 
     @Select("SELECT * FROM user")
     List<User> selectAllUsers();
 
-    @Select({"SELECT * FROM user WHERE userid = #{id}"})
+    @Select({"SELECT * FROM user WHERE user_id = #{id}"})
     User selectById(@Param("id") Long id);
 }
diff --git a/src/main/java/edu/bjtu/groupone/backend/service/UserService.java b/src/main/java/edu/bjtu/groupone/backend/service/UserService.java
index 867aead..77d3bba 100644
--- a/src/main/java/edu/bjtu/groupone/backend/service/UserService.java
+++ b/src/main/java/edu/bjtu/groupone/backend/service/UserService.java
@@ -12,7 +12,6 @@
     void register(User user);
     void sendVerificationCode(String email);
     boolean verifyCode(String email, String code);
-    boolean isIdentificationNumberExists(int idNum);
     // 新增重置密码相关
     void sendResetCode(String email);
     boolean resetPassword(String email, String code, String newPassword);
diff --git a/src/main/java/edu/bjtu/groupone/backend/service/impl/UserServImpl.java b/src/main/java/edu/bjtu/groupone/backend/service/impl/UserServImpl.java
index 82593f7..5cdc9c1 100644
--- a/src/main/java/edu/bjtu/groupone/backend/service/impl/UserServImpl.java
+++ b/src/main/java/edu/bjtu/groupone/backend/service/impl/UserServImpl.java
@@ -40,11 +40,6 @@
     }
 
     @Override
-    public boolean isIdentificationNumberExists(int idNum) {
-        return userMapper.countByIdentificationNumber(idNum) > 0;
-    }
-
-    @Override
     public void register(User user) {
         // 如果前端未提供用户名，可生成默认
         String username = user.getUsername();
