Reciprocal

The Reciprocal attribute provides an option for managing many to many relationships between linked records.  It accepts "true" or "false" and is only relevant in cases where two <Relationship> tags can be matched by their Id or FieldId attribute.

When the Reciprocal attribute is absent a <Relationship> tag creates a non reciprocal relationship - Reciprocal="false" is rarely useful.
 

Example with the Reciprocal  attribute

The example below includes two Views, defining Contact records as "Heroes" and "Villains".  Each View defines a Relationship field of Enemies.  The Relationship tag in the "Villains" View includes Reciprocal="true" defines "Enemies" as a reciprocal relationship that can be managed from either View.

<View Id="Heroes" TableId="Contacts">
    <Fields>
        <Relationship Id="Enemies" TableId="Contacts" ViewId="Villains" />
    </Fields>
</View>

<View Id="Villains" TableId="Contacts">
    <Fields>
        <Relationship Id="Enemies" TableId="Contacts" ViewId="Heroes" Reciprocal="true" />
    </Fields>
</View>

If there is a Hero record for "Eliot Ness" and a Villain record for "Al Capone" - Al Capone can be added to the Enemies field of Eliot Ness.  Since the Enemies relationship is reciprocal - Eliot Ness will now be included in the Enemies field of Al Capone.

If the Reciprocal attribute were not used - Enemy relationships would be independent between the Views.  Eliot Ness being an Enemy of Al Capone would not be connected to Al Capone being an enemy of Eliot Ness.

This example fulfills the two requirements for creating a reciprocal relationship.
Reciprocal="true" is included in one (and only one) of the <Relationship> tags, and
The Id="Enemies" is identical for each of the <Relationship> fields

Example with the Reciprocal and FieldId attributes

The example below includes two Views, defining Contact types of "Trustees" and "Committees".  Relationships are defined so  Trustees and can be linked to Committees and each Committee can have a "Current Members" field that can be linked to multiple Trustees.
<View Id="Trustees" TableId="Contacts">
    <Fields>
        <Relationship Id="Committees" TableId="Contacts" ViewId="Committees" />
    </Fields>
</View>

<View Id="Committees" TableId="Contacts">
    <Fields>
        <Relationship Id="Trustees" TableId="Contacts"  Name="Current Members" ViewId="Trustees" FieldId="Committees" Reciprocal="true" />
    </Fields>
</View>
Since each <Relationship> does not use the same Id attribute - the <Relationship> in the Committees View uses the attribute FieldId="Committees" - to override it's Id="Trustees" and allow a reciprocal link to <Relationship Id="Committees"> in the Trustees View.