Question: I am designing a database for an application where a user can comment on pictures & videos.   

Should I keep separate tables for comments like (Picture\_comments & videos\_comments) 

OR   
should I keep single table for comment and other mapping tables like (picture\_comment\_mapping & video\_comment\_mapping).  

Which one will be better approach and why?  

**Detail**   

Approach 1:

```
user
     id
     name

Picture
     id
     link
video
     id
     link

comment_video
     id
     user_id
     video_id
     comment
comment_picture
     id
     user_id
     picture_id
     comment

```

Approach 2:

```
user
     id
     name

picture
     id
     link
video
     id
     link

comment
     id
     user_id
     comment

comment_picture_mapping
     id
     comment_id
     picture_id
comment_video_mapping
     id
     comment_id
     video_id

```

Which one is better approach and why?

Answer: 
I would use your approach number 2 because its much easier to then do things like "Search all comments"
You only need about three entities (or two if you don't include the User entity).

Your approach 2 implies that a particular comment can be about more than one picture or video. Is that what you want?

User {one-to-many} Comment {many-to-one} media (media type)