How do I create a bidirectional link between two doctypes?

The use case is that I want to link a license holder (Doc1 about 40 fields and 2 tables) to a driver’s license (Doc2 about 30 fields) from the license holder doctype. This is needed in order to do quick data entries and looking up everything related to a license holder.

However I also need to create reports based on the license data so I have to use the report builder in the license doctype list, and also include some info from the license holder in that report. If I don’t do a one-to-one bidirectional relationship in this case I don’t see a way to retrieve data from the license holder doctype in these reports unless I start fetching pretty much all the fields from the driver license document in custom fields for the license holder doctype.

In OOP it’s not rare to have inverse relationships as well. In such cases and there are design patterns to handle Circular References. I don’t come from a Python background but I see it often in frameworks for PHP.

I also have to do this for 3 other license types which are also one-on-one relationship and then the number of fields increase substantially.