I have a couple of questions about DataStores. My first one is that the key for each player having a value, can the key have multiple values, or would you need to make a custom key name for each thing you want to save? The second question is that if you were to do some sort of inventory system, with datastores, let's say you wanted the value of a key to be the name of a weapon. Could you make the key value a stringvalue, so if you were to iterate through the players values and see if it matches with a tool name and clone it to their backpack?
Maybe im confused, but i think you are. What you're calling a 'key', is essentially just the players userId. Its used to differentiate between each players save data.
And the second part of your question, what you'd do in that situation is you'd save a table in the data store, you'd save the name of each weapon as a bool. If a player purchases the weapon turn the bool 'true', then have a separate function that on player connect give that player the weapon and add it to their starter pack.