I like the entity-attribute-value thing because I can add new fields and have the rows automatically removed when the foreign table row is removed, but I don't like the fact that I can't enforce a data type. And the select queries are complicated.
Are there better ways that don't involve creating a table for each attribute?
If I create a very big table with every possible attribute, will this table take up space even if most rows will have NULL on most columns?