I’ve got two tables
A:
plant_ID | name.
1 | tree
2 | shrubbery
20 | notashrubbery
B:
area_ID | name | plants
1 | forrest | *needhelphere*
now I want the area to store any number of plants, in a specific order and some plants might show up a number of times: e.g 2,20,1,2,2,20,1
Whats the most efficient way to store this array of plants?
Keeping in mind I need to make it so that if I perform a search to find areas with plant 2, i don’t get areas which are e.g 1,20,232,12,20 (pad with leading 0s?) What would be the query for that?
if it helps, let’s assume I have a database of no more than 99999999 different plants. And yes, this question doesn’t have anything to do with plants….
Bonus Question
Is it time to step away from MySQL? Is there a better DB to manage this?
If you’re going to be searching both by forest and by plant, sounds like you would benefit from a full-on many-to-many relationship. Ditch your
plantscolumn, and create a whole newareas_plantstable (or whatever you want to call it) to relate the two tables.If area 1 has plants 1 and 2, and area 2 has plants 2 and 3, your
areas_plantstable would look like this:You can then look up relationships from either side, and use simple JOINs to get the relevant data from either table. No need to muck about in LIKE conditions to figure out if it’s in the list, blah, bleh, yuck. I’ve been there for a legacy database. No fun. Use SQL to its greatest potential.