At first glance this seems horrible, and I'm tempted to make a table to store member-organization entries. But unfortunately there are several hundred queries in the app and this is nontrivial to write, much less exhaustively test.
So it got me thinking, why is this the programmer's responsibly? Why not just make a database where you can do anything you want, and the contents of each field would be stored once uniquely, with the duplicates represented by pointers or hashes under the hood? Then run in a mode that guarantees atomic updates over any number of rows.
Then the database could infer relationships by the queries that are executed instead of how the data is organized. It would generate the relationship graph automagically so the programmer just has to sign off on it. It could even run in a mode where if the code tries to execute an operation that breaks the graph, a notification could be sent to IT or whatever.
So this isn't really nosql, it's more like unstructured or self-organizing SQL. Has anyone heard of something like this? I googled a bit but all I found were these unhelpful links:
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=4564486&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D4564486
http://stackoverflow.com/questions/4477257/is-there-any-software-that-can-normalize-data-bases-tables
http://www.codinghorror.com/blog/2008/07/maybe-normalizing-isnt-normal.html
Thanks!