There are several ways in which object identity can be implemented. In an RDBMS,
object identity is value-based: the primary key is used to provide uniqueness of each tuple
in a relation. Primary keys do not provide the type of object identity that is required in
object-oriented systems. First, as already noted, the primary key is only unique within a
relation, not across the entire system. Second, the primary key is generally chosen from
the attributes of the relation, making it dependent on object state. If a potential key is subject
to change, identity has to be simulated by unique identifiers, such as the branch number
branchNo, but as these are not under system control there is no guarantee of protection
against violations of identity. Furthermore, simulated keys such as B001, B002, B003,
have little semantic meaning to the user.