Для такой задачи хорошо подходит паттерн Фаулера
Class Table Inheritance, задача которого -- сделать некое наследование в таблицах БД.
Принцип в ваших терминах:
Создается некая сущность Client, и у нее наследуются сущности ЮрЛица и ФизЛица, связаны они 1 к 1, то есть на 1 клиента приходится либо одно физлицо, либо одно юрлицо, разруливается это неким маппингом через условное поле
type
в таблице клиента, нужно только соблюсти момент, чтобы id у физлица не пересекались с юрлицом, например используя uuid или любым другим способом создавать id, например через автоинкремент таблицы клиента.
Если вы будете реализовывать бекенд на языке PHP, то
ORM Doctrine из коробки умеет работать с такой структурой:
Документация.