Как правило, у вас есть таблицы расширений. Это просто дополнительные таблицы в вашей схеме, которые содержат дополнительную информацию, связанную с основной таблицей некоторым типом ключа
Например, допустим, ваша основная таблица:
People
PersonId int, PK
GroupTypeId int, FK to GroupTypes
Name varchar(100)
GroupTypes
GroupTypeId int, PK
GroupTypeName varchar(20)
BuyerTypes
BuyerTypeId int, PK
BuyerTypeName varchar(20)
BuyerData
PersonId int, FK
BuyerTypeId int FK
====
Кроме того, BuyerData будет иметь составной первичный ключ (PK) для PersonId и BuyerTypeId
При извлечении данных о покупателе вы можете использовать запрос типа
SELECT *
FROM People P
INNER JOIN BuyerData BD on (P.PersonId = BD.PersonId)
INNER JOIN BuyerTypes BT on (BD.BuyerTypeId = BT.BuyerTypeId)