Originally posted by jjoske
Use the first option. If you take care with indexing etc you shouldn't notice much of a perfomance hit, and 30,000 records isn't really that big.
The fist option will give you the following advantages:
Easier to add new categories.
If you ever have to easier to migrate to a new database system as it uses standard SQL. The set type isn't standard SQL and wouldn't be available in other database systems.
Yeah when they say large databases they are talking in the hundreds of thousands and even millions of entries. If you know a little predicate algebra (which is what relational databases are built on) you know that every database slows down with every table created for normalization. As a programmer don't worry about this it is not your concern, it is the dm admins concern. If you are one in the same then don't worry about it when you program. You can always through hardware at a database server to make it run faster but good mornalization will keep your code clean.
Here are just a couple of the benefits you get by breaking it out into a features table, aside from what's mentioned above.
Quickly & Easily search for cars with a specific feature set
Give car types a base price and features an increase price and dynamically calculate the price of cars
Sorting based on features is very easy
Deleting a feature does not corrupt your cars table.