Am I missing something ( probably am), but I don't see how or why this is better than using a surrogate key and join clause. If it needs to be simple for queries, write a view.
The point of the tiny fact table and foreign key is that to add new items is an INSERT. To change the check constraint you must drop the old check constraint and add the revised version back.