There are three ways to implement Referential Integrity in a database system. Primary and Foreign Keys, Triggers, Application code. And each method results in different database performance.
After discovering so many tables that no primary key, at so many shops, I finally wrote an Oracle script to list all the tables that did not have a PK.