title: Using custom column fields instead of EAV
body: <p>I'm in the process of making an application that among other stuff, also has a user info management section. There are 10 basic fields that the users fill to register (first name, last name, address etc) but the admin can also define custom fields that that will be included in the registration form.
  At the moment I implemented it with EAV. I have a table <strong>"users"</strong> which contains all the 10 basic fields as columns, <strong>users_custom_fields</strong> (<strong>field_id, field_name, field_type</strong>) which contains all the custom added fields and a table <strong>"users_custom_data" (user_id, field_id, field_value)</strong>, which contains all the data for the custom fields.</p>
  
  <p>My question is this: Wouldn't it be better if adding a new field in the php backend would just create a new column in the "users" table instead of creating a one-to-many relationship where each user entry also matches a few rows in the "user_custom_data" which makes it really hard to search and adds unneeded complexity?
  Is it considered bad practice if the application dynamically alters the structure of a table?</p>
  
  <p>Thanks</p>