title: how to design a schema where the columns of a table are not fixed
body: <p>I am trying to design a schema where the columns of a table are not fixed. Ex: I have an Employee table where the columns of the table are not fixed and vary (attributes of Employee are not fixed and vary). Frequent addition of a new attribute / column is requirement.</p>
  
  <ol>
  <li><p>Nullable columns in the Employee table itself i.e. no normalization </p></li>
  <li><p>Instead of adding nullable columns, separate those columns out in their individual tables ex: if Address is a column to be added then create table Address[EmployeeId, AddressValue]. </p></li>
  <li><p>Create tables ExtensionColumnName [EmployeeId, ColumnName] and ExtensionColumnValue [EmployeeId, ColumnValue]. ExtensionColumnName would have ColumnName as "Address" and ExtensionColumnValue would have ColumnValue as address value. </p>
  
  <p>Employee table<br>
  EmployeeId<br>
  Name  </p>
  
  <p>ExtensionColumnName table<br>
  ColumnNameId<br>
  EmployeeId<br>
  ColumnName</p>
  
  <p>ExtensionColumnValue table<br>
  EmployeeId<br>
  ColumnNameId<br>
  ColumnValue  </p></li>
  </ol>
  
  <p>There is a drawback is the first two ways as the schema changes with every new attribute. Note that adding a new attribute is frequent and a requirement. </p>
  
  <p>I am not sure if this is the good or bad design. If someone had a similar decision to make, please give an insight on things like foreign keys / data integrity, indexing, performance, reporting etc. </p>