My first Publication Agile-Data-Warehouse-Design-eBook | Page 68
Modeling Business Events
47
Detail About Detail
A new event detail can sometimes turn out to be an additional characteristic of an Check that each
existing detail, rather than a detail of the whole event itself. It is detail about detail new detail belongs
instead of detail about the event. You can be given unnecessary details if you ask to the whole event
too many what questions as they can sound so open-ended. For example, the what and is not just detail
question: “CUSTOMERS order PRODUCTS with what?” might give you an answer about detail that
“with product type”, but is PRODUCT TYPE a detail of the event that would be lost if only further
it was not recorded in the event or does it belong elsewhere? describes a detail
you already have
Spotting detail about detail is usually intuitive, but if you have any doubts you can
test a detail to see if it is position sensitive. You do this by mentally swapping the
new detail into the middle of the main clause, and reading it both ways: before and
after swapping. If the event still makes sense, then the detail isn’t position sensitive,
and belongs to the event. However, if the event sounds like nonsense (even when
you change the detail preposition), then the detail is really about another detail and
will only make sense if placed directly to the right of the detail that it actually de-
scribes. For example:
“CUSTOMER orders PRODUCT with PRODUCT TYPE”
This sounds okay, but try placing the new detail after the subject:
“CUSTOMER with PRODUCT TYPE orders PRODUCT”
Oops, clearly this no longer makes sense. Customers don’t have product types,
products do. Product type only makes sense if it appears directly after (to the right
of) PRODUCT. It is position sensitive. This tells you that product type describes
PRODUCT, not the event itself, and is therefore detail about detail.
Stripping out any details that are not directly related to the event is important, so that Detail about detail
the event can be used to define an efficient fact table. However, you do not want to isn’t discarded.
completely discard the important finding that PRODUCT TYPE is a detail about It is used to define
products. It’s obviously something that stakeholders want to report on. Instead of dimensions
adding it to the table you can place it above the PRODUCT column in the space set
aside for capturing detail about detail. You will use it shortly to define the PRODUCT
dimension.
You can apply the same test to the SALESPERSON detail from the earlier who
question: swap it around the event main clause and listen to yourself saying:
“from SALESPERSON CUSTOMER orders PRODUCT” or
“CUSTOMER, from SALESPERSON, orders PRODUCT”
You sound strange (like Yoda in Star Wars) but it still makes sense. You can see
that the additional who detail can be placed anywhere in the main clause and its
meaning is not lost. Therefore SALESPERSON is not position sensitive, and this
tells you that it is a detail about the event.