title: If a database table is expected to grow more columns later, then is it good design to keep those columns as rows of another table?
body: <p>I have a database for a device and the columns are like this:  </p>
  
  <pre><code>DeviceID | DeviceParameter1 | DeviceParameter2  
  </code></pre>
  
  <p>At this stage I need only these parameters, but maybe a few months down the line, I may need a few more devices which have more parameters, so I'll have to add <code>DeviceParameter3</code> etc as columns.  </p>
  
  <p>A friend suggested that I keep the parameters as rows in another table (ParamCol) like this:  </p>
  
  <pre><code>Column           | ColumnNumber 
  ---------------------------------
  DeviceParameter1 | 1  
  DeviceParameter2 | 2  
  DeviceParameter3 | 3  
  </code></pre>
  
  <p>and then refer to the columns like this:  </p>
  
  <pre><code>DeviceID | ColumnNumber &lt;- this is from the ParamCol table   
  ---------------------------------------------------
  switchA  |   1  
  switchA  |   2  
  routerB  |   1  
  routerB  |   2  
  routerC  |   3  
  </code></pre>
  
  <p>He says that for 3NF, when we expect a table whose columns may increase dynamically, it's better to keep the columns as rows. I don't believe him.  </p>
  
  <p>In your opinion, is this really the best way to handle a situation where the columns may increase or is there a better way to design a database for such a situation?</p>