title: How to build a data warehouse based on an entity attribute value database?
body: <p>Is it possible to create a data warehouse based on an <a href="http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model" rel="nofollow noreferrer">entity attribute value</a> database?</p>
  
  <p>If so, how?</p>
  
  <p>Basically I have data in the following format:</p>
  
  <pre><code>id  name   value
  ----------------
  1   name1   10
  1   name2   20
  1   name3   30
  2   name1   40
  2   name2   50
  2   name3   60
  ...
  </code></pre>
  
  <p>instead of the following:</p>
  
  <pre><code>id name1 name2 name3
  --------------------
  1   10    20    30
  2   40    50    60
  </code></pre>
  
  <p>The problem I have is that there is no specific set of names/measures I can put in the fact table.</p>
  
  <p><code>name1</code>, <code>name2</code> and <code>name3</code> are <strong>not known in advance</strong> (not even how many of them could exist).</p>
  
  <p>Any ideas on how to solve this? I searched on the Internet, but couldn't find any relevant information. Any help is greatly appreciated...</p>
  
  <p><strong>Note</strong>: I don't have any experience building data warehouses. I'm currently reading:
  The Data Warehouse ETL Toolkit: Practical Techniques for Extracting, Cleaning, Conforming, and Delivering Data (by Ralph Kimball)</p>
  
  <hr>
  
  <p>So to answer <a href="https://stackoverflow.com/questions/12358709/how-to-build-a-data-warehouse-based-on-an-entity-attribute-value-database#comment16596850_12358709">Ben (from comments)</a>: "<strong>Your table is actually normalised... why would you want to de-normalise it?</strong>"</p>
  
  <p><strong>Long answer</strong>:<br>
  Our customer uses a tool which allows him to drag and drop dimensions &amp; measures from an OLAP cube in a workspace and then shows him the selected data.  </p>
  
  <p>If I use <a href="https://stackoverflow.com/a/12358802/354009">the model Paul Grimshaw suggested</a> the customer would need to drag the name in the workspace and then add a filter for name to be equal for example with <code>name1</code> (if he so desires).  </p>
  
  <p>On the other hand if the customer would have a list of names he could drag in the workspace he would need only one action (ease of use) to access the data associated with <code>name1</code> (just an example). And there is one more reason: discoverability. The customer can look at the list of available names and just choose from it instead of adding a filter for name (and he would need to know the exact name).</p>
  
  <p><strong>Short answer</strong>: ease of use for customer (which includes discoverability of names).</p>