Ejemplo n.º 1
0
  /**
   * Executes the normalization procedures defined in "procedures" on the given schema, exits when
   * the targetNf is reached
   *
   * @param schema the relation to normalize
   * @return the results of the Normalization
   */
  private NormalizationResult startNormalizing(
      RelationSchema schema, ArrayList<NormalizationAlgorithm> procedures, NormalForm targetNf) {
    NormalizationResult result = new NormalizationResult();
    NormalizationResult tempResult;

    result.getRelations().add(schema);

    for (NormalizationAlgorithm procedure : procedures) {
      // Quit if NF already reached
      if (checker.getNF(result.getRelations()).ordinal() >= targetNf.ordinal()) {
        break;
      }

      tempResult = (NormalizationResult) result.getClone();
      for (RelationSchema relation : tempResult.getRelations()) {
        procedure.normalize(relation, result, false);
      }
    }

    compactFds(result);

    return result;
  }