Mark Rittman's Oracle Weblog: Degenerate Dimensions Defined

Mark Rittman’s Oracle Weblog: Degenerate Dimensions Defined
Degenerate Dimensions Defined

Much of my work involves designing and reviewing dimensional data models, and an interesting issue that often comes up is how to deal with data items such as invoice number, order number and so on, that are not strictly facts – you’re not going to want to add them up, or average them, or perform any other maths on them – but they don’t seem to fit into existing dimensions.

Ralph Kimball coined the term ‘Degenerate Dimensions’ for these data items, as they perform much the same function as dimensions: they sit in the fact table and allow you to limit down or ‘slice and dice’ your fact table measures, but they aren’t foreign key links through to dimension tables, as all the information you want – the invoice number, or the order number – is contained in the degenerate dimension column itself. Degenerate dimensions are useful as they tie the transactions, or events, in the fact table back to real-life items – invoices, orders and so on – and they can be a quick way to group together similar transactions for further analysis.