I'm trying to evaluate the pros and cons of structuring my data model in various ways, and I'd like to know if I'd be shooting myself in the foot by stuffing rather complex nested data types into individual columns of a SQL table.
For example, let's say I want to serialize an array of structs (or even worse, array of hashes of hashes) and save it in a single column. It'd most likely be a somewhat nested JSON dictionary. Something like:
user_id | user_related_data_blob
---------------------------
1 | { .... }
The obvious cons I can immediately see are data coupling, in case some data isn't quite tightly related to the user. There's also the size of each retrieved row, which might make fetching from the web rather slow, especially if most of the data isn't even immediately necessary by the client. Doing SQL by those columns also becomes rather complex (and probably not indexable) unless there's special tech in place to support it.
Pretty much the only upside, and it might be significant depending on the context, is that if you don't want to create a complex schema and spend a lot of time making sure that all the constraints are sane and that you have a lot fewer moving parts. For something like a quick prototype, it might even make sense.
Am I missing anything here? Is there a rule of thumb out there in the SQL world that states that you should never nest data in an individual column? Any good guidelines?