• 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)