The answer is zero. A unique identifier adds nothing to any logical problem we have with our data. Let’s see why this is true. I have two sets of data from different systems, which represent information or attributes about a real world user. Those data elements are indistinguishable from each other. Perhaps they are first name, last name, city and state. They are identical as far as I can tell. If I add a unique identifier do I know anything more about them? I just know they are no longer identical and yet they may be in the real world the same person. By adding a unique identifier I may have made a distinction, which is false. It’s impact will only be deleterious never beneficial. The unique identifier becomes ornamental. Metaphorically it is like placing a medallion around the neck of the famous twins and still not knowing if it’s Tweedledee or Tweedledum. At least in this case I could re-name them to something like Dee and Notdee, which would be meaningful to an observer. However, in the foregoing example, we are dealing already with a representation of an entity and it adds nothing. Now let’s add several more attributes, for example, title and department. If I can now distinguish easily whether they are the same person or not I have accomplished my goal and I still have not added a unique identifier. The smallest subset of elements that distinguishes one set from another is a suitable key if the data is in a database and I still haven’t added a unique identifier. So then how are unique identifier’s useful? They are useful within a context in which we are programmatically creating many closely similar but not identical objects whose existence is ephemeral. When we are combining data from many different contexts, they solve nothing; they are just another attribute.