java - 如何在MySQL中创建与包含关系的组合键相对应的java对象

标签 java mysql

我是Java新手,我将这样解释我的问题。

据我所知,在关系数据库中,如果两个表之间存在任何关系,我们都是通过外键来保留引用。如下。 EmployeeCompany 表之间存在关系。 Employee 表通过引用companyId 作为外键来与Company 保持关系。这是关于关系数据库的。

enter image description here

在java编程中,我们可以为上述表EmployeeCompany创建对应的对象,如下所示。

class Company{
    private int companyId;
    private String companyName;
    private String address;

    //getters and setters
}

class Employee{
    private int id;
    private String name;
    private int companyId;//this field use to refer the company table

    //getters and setters
}

在 Employee 类中 companyId 用于引用 Company 类。

当关系表中有多个值时,例如,我们会得到两个表,例如StudentSubject。一个学生可以有多个学科,以及学科,可以属于多个学生。在这种情况下,我们需要根据第一范式使用组合键创建另一个名为 Student_Subject 的表。复合键(studentId,subjectId)可用于唯一引用属于特定学生的科目。

我的问题是这个表(Student_Subject)如何表示java应用程序,如上面的例子。我们是否创建一个与Student_Subject相对应的新类,如下

class StudentSubject{
     private int subjectId;
     private int studentId;

     //getters and setters
}

最佳答案

一个明显的方法是将主题 ID 的集合放入您的 Student 类中:

class Student {
    int id;
    String name;
    ...
    Set<Integer> subjectIds = new HashSet<>();
}

如果需要,您还可以在 Subject 类(class)中添加学生 ID 列表。

关于java - 如何在MySQL中创建与包含关系的组合键相对应的java对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59822362/

相关文章:

php mysql 复选框和文本框值插入数据库

Mysql查询帮助。我需要确保至少返回一条记录

mysql - 错误 1075 : Incorrect table definition; there can be only one auto column and it must be defined as a key

php - 是什么问题导致无法在使用 php 的 MySQL 查询上使用 LIMIT 函数?

java - 实现 'com.android.support:appcompat-v7:28.0.0' - 错误

java - 使用 Java 读取 JSON 数据

java - 计算随机数的代码仅生成 1

php - 评论投票数据库结构的最佳实践

java - 使用 Java 获取 JMeter 远程测试结果

java - OpenCV 应用程序 - Android 相机一直显示黑屏