The max. number of digits to keep a value numeric is 14-15 (by a join 15 should work and by other processings like a mapping only 14). This is caused by the in Qlik used number-system. This meant you need to load the keys as strings (this could be done in Qlik with text() which meant it's not necessary to do it in the database) as far you want to store the data into qvd's or applying a joining or similar actions but by associate the tables within the datamodel you could use an autonumber() on these key-fields.
Before doing it I would check if the keys couldn't be reduced in regard to the number of digits - maybe they are also with lesser digits unique.