I need to store three items as an array in a single column and be able to quickly/easily modify that data in later functions.
[—YOU CAN SKIP THIS PART IF YOU TRUST ME–]
To be clear, I love and use x_ref tables all the time but an x_ref doesn’t work here because this is not a one-to-many relationship. I am making a project management tool that among other things, assigns a user to a project and assigns hours to that project on a weekly basis, per user, sometimes for weeks many weeks into the future. Of course there are many projects, a project can have many team members, a team member can be involved with many projects at one time BUT its not one-to-many because a team member can be working many weeks on the same project but have different hours for different weeks. In other words, each object really is unique. Also/finally, this data can be changed at any time by any team-member – hence it needs to be easily to manipulate.
Basically, I need to handle three values (the team member, the week we’re talking about, and how many hours) dropped into a project row in the projects table (under the column for project team members) and treated as one item – a team member – that will actually be part of a larger array of all the team members involved on the project.
[–END SKIP, START READING HERE 🙂 –]
So assuming that the application’s general schema and relation tables aren’t total crap and that we are in fact up against a wall in this one case to use an array/object as a value for this column, is there a best practice for that? Like a particular SQL data-type? A particular object/array format? CSV? JSON? XML? Most of the app is in C# but (for very odd reasons that I won’t explain) we could really use any environment if there is a particular one that handles this well.
For the moment, I am thinking either (webservice + JS/JSON) or PHP unserialize/serialize (but I am bit sketched out by the PHP solution because it seems a bit cumbersome when using ajax?) Thoughts anyone?
Hmm it sounds like you should rethink your schema, If I understand you why don’t you just create one like this:
To find what the user is doing for the next 3 weeks,
This will give you the ability to assign multiple users to multiple projects, and projects to multiple users. It also makes updating easy. Does this make sense?