When a booking is made, there is no need to store the entire Customer document, nor is there a need to store the entire Property document. Instead, we define intermediary structures that leverage the lower level structures we just described. The first is a set of structures that tie a customer to a booking.
Using this approach, we minimize redundancy by using only subsets of Customer and Property documents when making a booking. At the same time, we avoid having to join two collections together in a relationship, which would introduce excessive overhead and drag down performance.