title: Dynamic columns in database tables vs EAV
body: <p>I'm trying to decide which way to go if I have an app that needs to be able to change the db schema based on the user input.</p>
  
  <p>For example, if I have a "car" object that contains car properties, like year, model, # of doors etc, how do I store it in the DB in such a way, that the user should be able to add new properties?</p>
  
  <p>I read about EAV tables and they seem right for this thing, but the problem is that queries will get pretty complicated when I try to get a list of cars filtered by a set of properties.</p>
  
  <p>Could I generate the tables dynamically instead? I see that Sqlite has support for <code>ADD COLUMN</code>, but how fast is it when the table reaches many records? And it looks like there's no way to remove a column. I have to create a new table without the column I want to remove, and copy the data from the old table. That's certainly slow on large tables :(</p>