I am designing a global ERP / scheduling system that has to be hosted on Google Cloud SQL and Google Datastore.
For the most part the data is strongly relational and not large in volume or volatile, so is a natural fit for a relational database.
The current design has addresses stored locally in the customer, contract, employee, site, workorder, contractedSites tables.. about 12 different places in total. I requested the DEV team modify the design to create an ADDRESS table that can be referenced by all other entities (with linking tables if necessary to provide flexiblity for address history, multiple addresses, etc).
THE QUESTION - As the address / contact details format wildly differs for all these scenarios, different countries and multiple phone numbers etc, I was thinking that the ADDRESS & CONTACTDETAILS should be moved to the DataStore and reference them by id's from the Cloud SQL platform. So the structure is completely flexible to accomodate the address formats of the world.
Does this sound sensible or is it over engineering the solution and should go with a generic address table in CLoud SQL only?
I have a concern as the bottleneck in the Google platform appears to be the single MySQL master.. This is a managed service limited to 16 vCPU's so I am attempting to move more functional areas into the Datastore.
Hope that makes sense!