Dependencies

Overview

 

A DataVeil dependency associates a parent field with a child field to enable automatic synchronization of masked values to maintain referential integrity.

There are two possible origins of a dependency in DataVeil:

1) A DBMS Foreign Key Definition

2) A DataVeil User Defined Dependency

 

You can view a DataVeil Project's dependencies in the Dependencies Window.

In this example, you can see that one of the dependencies is user-defined (indicated as "User" in the Origin column) and all of the remaining dependencies are foreign keys (indicated as "DB" in the Origin column.)

 

When a Dependency is Enabled it means that DataVeil shall synchronize the masked values among the dependants. This is the default and is recommended for most cases.

When a Dependency is Disabled it means that DataVeil shall not synchronize masked values among dependants. To disable a dependency you must first unlock the "Enabled" column by unchecking the "Lock Enabled column". You can then uncheck the "Enabled" column for those dependencies that you wish to disable. Please refer to the section "Relationship Obfuscation" below for an explanation of the reasons why you might want to disable dependencies.

 

The Diagram Window shows dependencies as arrows where the direction points toward the parent column of a dependency.

Arrows

There are four types of arrows:

1.Regular line: DBMS Foreign Key, dependency is Enabled in DataVeil

2.Regular dotted line: DBMS Foreign Key, dependency is Disabled in DataVeil

3.Thick line: User Defined Dependency, dependency is Enabled

4.Thick dotted line: User Defined Dependency, dependency is Disabled

DBMS Foreign Key Definition

DataVeil shall automatically create dependencies in a Project corresponding to all Foreign Keys defined on your database.

If you mask a column in a dependency then DataVeil shall automatically mask all other columns in the dependency to maintain referential integrity.

DataVeil performs the synchronization using an automatically-generated Inherit Mask.

 

DataVeil User Defined Dependency

If you wish to synchronize values between columns as described for Foreign Keys above, but there are no Foreign Key definitions for those columns then you can create a DataVeil  User Defined Dependency.

DataVeil performs the synchronization using an automatically-generated Inherit Mask.


 Duplicates in The Parent Column

User Defined Dependencies are actually more versatile than Foreign Keys because they allow duplicate values in the parent column whereas Foreign Keys do not.

For example, suppose that you have an Incident table with a column called ClientNumber. There can be many rows in the Incident table with the same ClientNumber.

You also have an Dispatch table with a column called ClientNumber. There can be many rows in the Dispatch table with the same ClientNumber.

The ClientNumber must be synchronized between the two tables. Therefore, you would create a User Defined Dependency.

In the parent column (Incident.ClientNumber) you should ensure that duplicates are masked consistently either by using a mask in Deterministic mode or by defining Column Duplicates.

Note: As an alternative approach, instead of a defining a dependency you could just use two identical masks in Deterministic mode, one in the parent column and one in the child column, because that means that the same masked value would be generated for a given value wherever it occurs. However, using a Dependency (one user-selected mask and an automatic INHERIT mask) is usually much faster in masking execution than two user-selected masks because the INHERIT mask simply copies masked values instead of computing them.