Creating Customer Portal Service-Invoice relationship

This is just a learning exercise. I've just started playing with Knack today and I'd like to know how people would tackle a problem like this.

If I wanted to alter the Customer Portal application so that every Invoice is generally associated with a Service in a one to one relationship (perhaps consider this an optional, 0-1 relationship for now), would I typically use Javascript to lookup the Customer associated with the Service via View-based API if a Service is selected? Looking at the existing documentation, I'm guessing that's the way to go about this. Please let me know if there's an easier option.

If it was a strict 1 to 1 relationship and it turned out there was never an instance where a Customer would get an Invoice without a corresponding Service, would I still need to maintain the connection to Customer in the Invoice table? Would removing this connection unnecessarily complicate my ability to bring back the Customer associated with an Invoice?