Benefits of a join table vs. array to express relations? (outside of SQL)
Benefits of a join table vs. array to express relations? (outside of SQL)
I am building an application that is using JSON / XML files to persist data. This is why I indicated "outside of SQL" in the title.
I understand one benefit of join tables is it makes querying easier with SQL syntax. Since I am using JSON as my storage, I do not have that benefit.
But are there any other benefits when using a separate join table when expressing a many-to-many relationship? The exact expression I want to express is one entity's dependency on another. I could do this by just having a "dependencies" field, which would be an array of the IDs of the dependencies.
This approach seems simpler to me than a separate table / entity to track the relation. Am I missing something?
Feel free to ask for more context.
There is no concrete difference between the two options. But in general they will be similar. I think you are talking about these options:
vs
The main difference that I see is that there is a natural place to put data about this relationship with the "join table".
You can still do this at in the second one, but you notice that you are basically heading towards an interleaved join table.
There are other less abstract concerns. Such as performance (are you always loading the list of skills, what if it is long) or correctness (if you delete a Person do you want to delete these relationships, it comes "for free" if they are stored on the Person) But which is better will depend on your use case.