Marking a relation as required would mean the object for which we're trying to establish relations for is simply skipped if one of the required relations can't be established.
For instance, a student could be required to have a SchoolUnit where the student is enrolled. Students without a school unit attribute, or an attribute that doesn't match a school unit, would be removed.
This is similar to the orphan filtering, but done earlier and filters out the object if any of the required relations are missing (whereas the orphans filtering filters out the object if all relations are missing).
So for instance, a group could have a required SchoolUnit relation, but use the orphan filtering for Student and Teacher. This way the group is skipped if it's missing its SchoolUnit, or if has neither Students nor Teachers (but it doesn't have to have both Students and Teachers)
Marking a relation as required would mean the object for which we're trying to establish relations for is simply skipped if one of the required relations can't be established.
For instance, a student could be required to have a SchoolUnit where the student is enrolled. Students without a school unit attribute, or an attribute that doesn't match a school unit, would be removed.
This is similar to the orphan filtering, but done earlier and filters out the object if any of the required relations are missing (whereas the orphans filtering filters out the object if all relations are missing).
So for instance, a group could have a required SchoolUnit relation, but use the orphan filtering for Student and Teacher. This way the group is skipped if it's missing its SchoolUnit, or if has neither Students nor Teachers (but it doesn't have to have both Students and Teachers)