Just want some advice from people about what fields to include in a fact table in a data warehouse schema. Should the fact table contain the dimension values, or just the dimension foreign keys? For example, my fact table contains CurrencyId which is a foreign key into the Currency dimension. Should the fact table also contain a field for CurrencyCode and CurrencyName?
No, the fact table should contains keys to the dimension tables and then measures. Some times fact table can contains values, which are not keys to dimension tables (like degenerated dimensions etc). You can read some book about the dimensional modelling. eg. [The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling] by Ralph Kimball :