I have read Rob's CRUD Dapp post and I'm now wondering if someone might know how to create solidity contracts that represent general tables, not application specific, but a contract that could store and retrieve data in an organized way for any application?
That way a developer would have to worry less about organizing their data.
Hope I understood your question correctly. If I would have to create a contract to store all kinds of data in the form of a table I would use a mapping.
If you have a table like this:
| ID | Product | Price | .... |
---------------------------------
| 123 | Phone | 1000 | .... |
| 124 | Laptop | 2000 | .... |
You could create a multi-purpose mapping for all kinds of tables, where the key represents the ID and the bytes all the data:
public mapping(uint256 => bytes);
It is very common to pass a bunch of data of which you do not know what form it has as a byte array (you can look at the ERC827 token proposal).
Because the mappings are public getters are automatically created, however keep in mind that you can only ever get one element at a time (this is a restriction for mappings and arrays), which makes bulk actions practically infeasible.
You can also not create a custom function to do bulk actions for the user because it is not possible for functions to return mappings or dynamic arrays. In addition there is no easy way to get an array of all values of a mapping. You could however either retrieve a fixed amount of elements manually and save them in a fixed length array and return this (very expensive) or you could transform the elements retrieved into a byte array and return them this way.
Also to retrieve an element you must know the product ID, if your users do not know the IDs you could provide them in an public array.
All in all, you should try to store as little data as possible on the blockchain. Saving data is very expensive (storing a new value in the storage of contract costs 20000 gas) which is why you practically do not see any contracts that fulfill the purpose you describe.
Hope that answers your question.