Oracle Cloud Infrastructure Documentation

Referential Relationships

Dictionary-Based Referential Relationships

In addition to discovering sensitive data by sensitive types, Data Discovery automatically searches the Oracle data dictionary to find relationships between primary key columns and foreign key columns. It then flags those related columns as sensitive.

For example, suppose that you have two tables. The first is called CUSTOMERS, and it stores information like the customer’s first name, last name, and start date. The second table is called LOCATIONS, and it stores information about all of your sales locations. The LOCATION_ID in the CUSTOMERS table is configured as a foreign key and references the primary key, which is LOCATION_ID in the LOCATIONS table. Data Discovery automatically finds this type of referential relationship. In this example, if there is a sensitive type for location, LOCATION_ID in both tables would be captured as sensitive.

Non-Dictionary Referential Relationships

In Data Discovery, you can also choose to discover non-dictionary referential relationships to find sensitive columns. Non-dictionary referential relationships are relationships between database columns that are defined in applications, but not in the Oracle data dictionary. Data Discovery uses column name patterns and column data patterns from your selected sensitive types to discover potential relationships between columns.

For example, suppose that a parent table is called CUSTOMER and a related table is called PAYMENT_METHOD. The sensitive column is CUST_NAME in the parent table and CUST_NM in the related table. If the related table was created without showing a link in the data dictionary to the parent table (that is, no foreign key information was entered into the data dictionary), the relationship between the parent and related table is a “non-dictionary referential relationship.”