Вам никогда не нужен суррогатный ключ (отсюда и его название). Похоже, вы смешиваете логическую модель и физическую модель. Для вашей логической модели вы, вероятно, имели бы
CREATE TABLE A (
Val1 varchar() not null,
constraint PK_A KEY (Val1) --?
)
CREATE TABLE B (
Val1 varchar() not null,
Val2 varchar() not null,
constraint PK_B KEY (Val2), --? or Val1,Val2?
constraint FK_A FOREIGN KEY (Val1) references A
)
(Выше в выдуманном SQL, но, надеюсь, вы понимаете смысл)
Теперь для физической модели вы можете вводить суррогаты везде, где они имеют смысл - где логические ключи длинные (например, varchars). Но действительно ли вы это делаете или нет, зависит от вас. И не забывайте применять логические ключи еще