I'm wondering if it is actually good practise to store Arrays in the database ? I tend to use json_encode
rather than serialize
, but was just wondering if it is a good idea. If not, then I can make some small changes and just implode the array with a comma.
No, it's a terrible practice. Please refrain from inserting CSV, JSON*, serialize()
or ANY kind of serialized data in a relational database. Denormalization is almost always a bad idea - don't do it unless you really know what you are doing, or you'll start asking
questions like: this, this, this, this, ...
Doing that, you lose or it severely hinders your ability to:
JOIN
s.It may sound pedantic, but seeing people do this is one of my pet peeves - especially in light of the plethora of questions asked on SO that would be avoided if they did the right way.
Here's the right way to do one-to-many and many-to-many relationships in an RDBMS.
*Although some SQL databases have built-in support for JSON, it's often better to restructure your data so that you don't need this
Depends on your usage pattern. If you're going to need to access smaller portions of the array (e.g. for use in a where clause or similar), then it's a bad idea - you lose all the benefits of storing data in a relational database by making the data un-relatable. You'll end up with major overhead extracting that small piece of data over and over and over again.
On the other hand, if you're just using the database as a data store and never need to slice that stored array apart - just insert and retrieve, then there's probably no problem at all, other than maybe waste of space, as a serialized/json'd format tends to be "wordy" and take up more space than the raw data itself does.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With