Inside a classifieds website, there are several groups (cars, mc, houses etc). For each category selected, a concealed div becomes visible and shows additional options the consumer may specify if he/she wishes.

I'm developing a db now, and that i read some articles about normalization and which makes it enhanced etc...

Here's my layup today

CATEGORY TABLE:
- cars
- mc
- houses

CLASSIFIED TABLE:
- headline
- description
- hide_telephone_nr
- changeable
- action
- cost
- modify_date

POSTER TABLE:
- title
- passw
- tel
- email

AREA TABLE:
- area
- community

CARS TABLE:
- year
- fuel
- gearbox
- colour

MC TABLE:
- year
- type

HOUSE TABLE:
- Rental property
- Apartment
- Size
- rooms
etc

I've to date one table for every category, to ensure that is about 30 tables. Is not this too many?

I've not produced PK or FK for these to date, don't have that far yet...

Would you let me know if the setup is nice, or must i get it made in a different way?

ALSO, how does one setup the FK and also the PK here?

Thanks

From the understanding, I'd create a table for the groups and keep categories' title and ID there. Next, I'd produce a separate table to keep the extra choices for each category.

MySQL Table 1  
----------------   
Category_ID int PRIMARY KEY  
Category_name varchar  

MySQL Table 2  
---------------- 
Category_ID int   
Entry_Number int PRIMARY KEY (this will keep track of which entry everything belongs to)
Additional_Option varchar  
Additional_Option_Answer varchar (this is the one that stores what your user clicks/inputs)

For instance, using:

POSTER TABLE:
- name
- passw
- tel
- email

You'd keep category_id this information is for in Category_ID and store name passw tel email into Additional_Option in it's own row and also the user's input for individuals criteria could be saved in Additional_Option_Answer.

Category_ID for Posters is going to be 1 as well as for Area is going to be 2.

It might seem like this when the first user added something:

---------------------------------------------------------------------------------------------
Category_ID   |    Entry_Number    |    Additional_Options   |   Additional_Options_Answers
---------------------------------------------------------------------------------------------
       1      |   1                |    name                 |   doug
       1      |   1                |    passw                |   1234

It might seem like this when the second user added something:

---------------------------------------------------------------------------------------------
Category_ID   |    Entry_Number    |    Additional_Options   |   Additional_Options_Answers
---------------------------------------------------------------------------------------------
       1      |   2                |    name                 |   Hamlet
       1      |   2                |    passw                |   iliketurtles

Additionally, let us apply another category:

AREA TABLE:
- area
- community

---------------------------------------------------------------------------------------------
    Category_ID   |    Entry_Number    |    Additional_Options   |   Additional_Options_Answers
    ---------------------------------------------------------------------------------------------
           2      |   3                |    area                 |   San Francisco
           2      |   3                |    community            |   community_name