Я бы отдельные взгляды (например, таблица Person с PERSON_BASIC, не имеющей PII и PERSON_PII с столбцами PII). Таким образом, если позже будет принято решение о том, что столбец чувствителен (например, Дата рождения), то вы можете легко воссоздать представления, чтобы удалить столбец из основного представления, а не какое-то масштабное упражнение по реструктуризации данных, которое вы получите с отдельными таблицами.
Оптимизатор также улучшает соотношение между столбцами в одной таблице (и вы ожидаете, что со временем это улучшится). Как только вы начнете присоединяться к таблицам, отличным от PII, к таблицам PII, вы просто усложнили его.
Если вы идете за отдельными столами и считаете, что их нужно будет часто связывать, загляните в кластеры, чтобы записи для одного и того же человека находились в одном блоке.
Рассмотрите возможность использования role, защищенного паролем или пакетом для управления доступом к представлению/столбцам PII.
CONTEXT может сделать это тоже. Они вынуждены вызывать пакет, чтобы установить контекст, прежде чем они увидели столбцы. Вид может быть
SELECT name, date_of_birth,
case when SYS_CONTEXT('SEC','xxx') ='ALLOW' THEN ssn END
from ...