Regarding the truncation prevention: you can create a single table (empty) table with a handful columns (one for each data type used as PK) and create FK's from this table to multiple other tables
ALTER TABLE dbo.TruncProt WITH CHECK ADD CONSTRAINT [FK_TruncProt_tbl1]
FOREIGN KEY(id_bigint) REFERENCES dbo.tbl1 (id);
ALTER TABLE dbo.TruncProt WITH CHECK ADD CONSTRAINT [FK_TruncProt_tbl2]
FOREIGN KEY(id_bigint) REFERENCES dbo.tbl2 (id);
ALTER TABLE dbo.TruncProt WITH CHECK ADD CONSTRAINT [FK_TruncProt_tbl3]
FOREIGN KEY(id_int) REFERENCES dbo.tbl3 (id);
ALTER TABLE dbo.TruncProt WITH CHECK ADD CONSTRAINT [FK_TruncProt_tbl4]
FOREIGN KEY(id_unid) REFERENCES dbo.tbl4 (unid);
Maybe you want to set up some check constraints to prevent that someone inserts a row in the TruncProt table (e.g. id_bigint > 1 and id_bigint < 2)