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?
I would make an entity with name “Comment”, and add relation mapping on on that comment entity with user. The comment entity will also contain enumerated value on one column saying if its for picture or its for video. Something like –
Why I like this approach? Because its cleaner, and resulting entities will be less, and I do not have to write different queries to search for different types of mime type comments. And since comments are on diff table, i can load them lazily.