My question is, how in god's name can I keep track of all this stuff!?
I'm fine querying the data (and returning to a web UI in json) however when the user creates a new row in a table, I need to check (and insert, update if neccessary) basically all of these tables depending on if there are new fields added, new tables, new sources in addition to the data values in the cells themselves.
I guess one solution is just to lose this model and have a lot of redundancy but just have one table to hold rows (and don't split out table and field into separate tables). This feels inefficient though and because I have unknown fields coming back the EAV model seemed appropriate.
Is there a better way to work with the data model above and if not, how should I go about taming it for inserts and updates?