public int create(Answer answer, Diagnosis diagnosis) {

    try {
      establishConnection();

      Statement stmt = connection.createStatement();
      String SQL =
          "SELECT id FROM perfect_diagnosis_diagnoses_to_answers WHERE answer = "
              + answer.getId()
              + " AND diagnosis = "
              + diagnosis.getId()
              + ";";
      ResultSet res = stmt.executeQuery(SQL);

      if (res.next()) System.out.println("Perfect diagnosis diagnoses to answers already exists!");
      else {

        stmt = connection.createStatement();
        SQL =
            "INSERT INTO perfect_diagnosis_diagnoses_to_answers (answer, diagnosis) VALUES("
                + answer.getId()
                + ", "
                + diagnosis.getId()
                + ");";

        int rows = stmt.executeUpdate(SQL, Statement.RETURN_GENERATED_KEYS);
        int id = 0;
        if (rows > 0) {
          ResultSet set = stmt.getGeneratedKeys();
          if (set.next()) id = set.getInt(1);
        }
        return id;
      }
    } catch (SQLException ex) {
      System.out.println("SQL Error create perfect diagnosis to answer");
    }

    return -1;
  }
  /**
   * Diese Methode überprüft ob ein Dependency Loop existiert.
   *
   * <p>Dafür wird die Abhängigkeitskette einer Frage Rekursiv durchgegangen und die Fragen jeweils
   * einem Set hinzugefügt.
   *
   * <p>Kommt eine Frage zwei mal vor, dann existiert ein Loop.
   *
   * @param question Die nächste zu überprüfende Frage
   * @param previousQuestions Ein Set mit allen Bisher überprüften Fragen
   * @return true fals ein Loop entsteht, false falls kein Loop entsteht
   */
  private boolean hasDependencyLoop(Question question, HashSet<Question> previousQuestions) {
    if (previousQuestions.contains(question)) {
      return true;
    }
    previousQuestions.add(question);

    final Answer answer = question.getDependsOn();
    if (answer == null) {
      return false;
    } else {
      Question nextQuestion = answer.getAnswerOf();
      if (nextQuestion == null) {
        final Answer fetchedAnswer = answerManager.get(answer.getId());
        nextQuestion = fetchedAnswer.getAnswerOf();
      }
      return hasDependencyLoop(nextQuestion, previousQuestions);
    }
  }