实体-数据库关系(多对多,一对多,一对一)

实体-数据库关系(多对多,一对多,一对一)

用户(user)

SQL

字段 类型 约束 注释
user_id int 主键,自增 ID
name varchar(20) 非空 名字

实体类

public class User {
    private Integer userId;
    private String name;
    // 关联证书(多对多)
    private List<Credentials> credentials;
    // 关联手机号(多对一)
    private List<CellPhoneNumber> cellPhoneNumber;
    // 关联身份证(一对一)
    private IdentityCard identityCard;
}

多对多(证书-credentials)

使用中间表(中间表不需要映射成实体)

SQL

证书表(credentials)

字段 类型 约束 注释
credentials_id int 主键,自增 ID
name varchar(20) 非空 名字

中间表(user_credentials)

字段 类型 约束 注释
user_id int 非空
credentials_id int 非空

实体类

public class Credentials {
    private Integer credentialsId;
    private String credentialsName;
    // 关联用户(多对多)
    private List<User> users;
}

一对多(手机号)

使用外键(不需要外键约束)

SQL(cell_phone_number)

字段 类型 约束 注释
cell_phone_number_id int 主键,自增 ID
cell_phone_number varchar(20) 非空 手机号
user_id int 非空,外键

实体类

public class CellPhoneNumber {
    private Integer cellPhoneNumberId;
    private String cellPhoneNumber;
    // 关联用户(一对多)
    private User users;
}

一对一(身份证)

使用外键,唯一约束

SQL(identity_card)

字段 类型 约束 注释
identity_card_id int 主键,自增 ID
identity_card char(18) 非空 身份证
user_id int 非空,外键,唯一约束

实体类

public class IdentityCard {
    private Integer identityCardId;
    private String identityCard;
    // 关联用户(一对一)
    private User user;
}