private void processSpecialRels(ORASSNode child, ORASSNode parent) throws MainException{
		List<String> pkList = new ArrayList<String>();
		List<String> fkList = new ArrayList<String>();
		String table1 = parent.getOriginalName();
		String table2 = child.getOriginalName();
		CachedRowSet table1FKs = dbCache.getForeignKeys(table1);
		try{
			while(table1FKs.next()){
				String pkTable = table1FKs.getString("PKTABLE_NAME");
				if(pkTable.equals(table2)){
					pkList.add(table1FKs.getString("PKCOLUMN_NAME"));
					fkList.add(table1FKs.getString("FKCOLUMN_NAME"));
				}
			}
			if(fkList.size() == 0){
				CachedRowSet table2FKs = dbCache.getForeignKeys(table2);
				while(table2FKs.next()){
					String pkTable = table2FKs.getString("PKTABLE_NAME");
					if(pkTable.equals(table1)){
						pkList.add(table2FKs.getString("PKCOLUMN_NAME"));
						fkList.add(table2FKs.getString("FKCOLUMN_NAME"));
					}
				}

				NodeRelationship rel = new NodeRelationship(child.getName(), parent.getName(), fkList, pkList, table2, table1);
				relationships.add(rel);
			}else{
				NodeRelationship rel = new NodeRelationship(child.getName(), parent.getName(), pkList, fkList, table2, table1);
				relationships.add(rel);
			}
			logger.info("special rel added: " + child.getName() + " " + parent.getName());
		}catch(SQLException ex){
			throw new MainException(ex.getMessage());
		}
	}