private void printKeyRefs(List<ORASSNode> roots, String dbName) {
		Iterator<ORASSNode> rootsItr = roots.iterator();
		processedTables = new ArrayList<String>();
		
		while(rootsItr.hasNext()) {
			ORASSNode root = rootsItr.next();
			
			// print key ref for root only if it is a supertype or normal entity of a weak entity
			if (root.getSubtypeNode().size() > 0 || root.getWeakEntityNodes().size() > 0)
				printKeyRef(dbName, root, 1, true);
			
			List<ORASSNode> children = root.getChildren();
			Iterator<ORASSNode> childrenItr  = children.iterator();
			
			while (childrenItr.hasNext()) {
				ORASSNode child = childrenItr.next();
				String childName = child.getName();
				if (!processedTables.contains(childName)) {
					processedTables.add(childName);
					printKeyRef(dbName, child, 1, false);
				}
			}
		
		}
	}