You should save the position relative to the base instead of relative to the world origin.
For example, if each base is a model with a PrimaryPart set in a consistent way, then you could write:
local cframeToSave = baseModel.PrimaryPart.CFrame:Inverse() * itemObject.CFrame
-- later, after retrieving from data store
local cframeToSet = baseModel.PrimaryPart.CFrame * cframeFromDataStore
Edit: My original code was incorrect because I had the left and right sides of the multiply flipped around. It should work now.