Primary keys revisited

Following [Bauer2015] (p.88) we list important properties of primary keys with respect to best practices on top of their relational counterparts:

  • A primary key's values never change

  • Primary key values should not have a business meaning

  • Primary keys should be chosen to have proper indexing support with respect to the database product in question.

Regarding persistence we have three different concepts related to object identity:

Java Object identity

The operator == checks whether two identifiers point to the same memory address.

Java Object equality

The Object.equals(Object).

Database identity

Two distinct datasets (tuples) are identical if all primary key attributes have the same value.

In other words: Two distinct database objects differ at least in one of their primary key attribute values.

We recommend [Bloch2008] regarding Java identity and equality of objects.