Note the potential for ambiguity that can arise from this last property: two objects can
appear to be the same to the user (all attribute values are the same), yet have different
OIDs and so be different objects. If the OIDs are invisible, how does the user distinguish
between these two objects? From this we may conclude that primary keys are still required
to allow users to distinguish objects. With this approach to designating an object, we
can distinguish between object identity (sometimes called object equivalence) and object
equality. Two objects are identical (equivalent) if and only if they are the same object
(denoted by ‘=’), that is their OIDs are the same. Two objects are equal if their states are
the same (denoted by ‘= =’). We can also distinguish between shallow and deep equality: