Pinterest Clone
Complete database schema for a Pinterest-like visual discovery platform featuring user profiles, curated boards with collaborator access, pin creation and saving, nested board sections, pin comments and likes, user and board follows, topic-based discovery, tag system for content categorization, and personalized notifications.
socialvisualpinsboardspinterest
MySQL13 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, globally unique user identifier
Unique username used in profile URLs and mentions
User email address for authentication and notifications
Bcrypt-hashed password for secure authentication
Full display name shown on the user profile
Short biography displayed on the user profile page
URL to the user profile picture
External website URL linked on the user profile
Denormalized count of users following this user
Denormalized count of users this user follows
Whether the user account has been verified
Timestamp when the account was created
Timestamp when the account was last updated
IXUQCK|💬
MySQL9 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, globally unique board identifier
FK to users: the user who owns this board
Display name of the board shown on the user profile
Optional description of the board theme or purpose
URL to the cover image representing the board
Whether the board is visible only to the owner and collaborators
Denormalized count of pins saved to this board
Timestamp when the board was created
Timestamp when the board was last modified
IXUQCK|💬
MySQL5 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique board collaborator record identifier
FK to boards: the board this user collaborates on
FK to users: the collaborator user
Role of the collaborator: contributor or viewer
Timestamp when the user was invited to collaborate
IXUQCK|💬
MySQL5 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique board section identifier
FK to boards: the board this section belongs to
Display name of the section within the board
Ordering position of the section within the board
Timestamp when the section was created
IXUQCK|💬
MySQL13 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, globally unique pin identifier
FK to users: the user who created or originally uploaded this pin
FK to boards: the board where the pin was originally saved
Optional title describing the pin content
Detailed description or note accompanying the pin
URL to the pinned image stored in object storage
External URL the pin links to when clicked
Denormalized count of times this pin has been saved by users
Denormalized count of likes received on this pin
Denormalized count of comments posted on this pin
Whether the pin contains a video rather than a static image
Timestamp when the pin was created
Timestamp when the pin was last edited
IXUQCK|💬
MySQL5 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique section-pin record identifier
FK to sections: the board section the pin is placed in
FK to pins: the pin placed in the section
Ordering position of the pin within the section
Timestamp when the pin was added to the section
IXUQCK|💬
MySQL5 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique pin save record identifier
FK to pins: the pin that was saved
FK to users: the user who saved the pin
FK to boards: the board the pin was saved to
Timestamp when the pin was saved by the user
IXUQCK|💬
MySQL5 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique pin comment identifier
FK to pins: the pin this comment was posted on
FK to users: the user who wrote the comment
Text content of the comment on the pin
Timestamp when the comment was posted
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique pin like record identifier
FK to pins: the pin that was liked
FK to users: the user who liked the pin
Timestamp when the pin was liked
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique follow relationship identifier
FK to users: the user who is following
FK to users: the user being followed
Timestamp when the follow relationship was established
IXUQCK|💬
MySQL3 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique tag identifier
Unique lowercase tag name used for content discovery
Timestamp when the tag was first created
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique pin-tag association identifier
FK to pins: the pin being tagged
FK to tags: the tag applied to the pin
Timestamp when the tag was applied to the pin
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique board-tag association identifier
FK to boards: the board being tagged
FK to tags: the tag applied to the board
Timestamp when the tag was applied to the board
IXUQCK|💬
MySQL5 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique topic identifier
Unique topic name used for content categorization (e.g. Travel, Food)
Description of the topic for display in onboarding and discovery
URL to the icon image representing the topic
Timestamp when the topic was created
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique user-topic preference record identifier
FK to users: the user who selected the topic interest
FK to topics: the topic the user is interested in
Timestamp when the user subscribed to this topic
IXUQCK|💬
MySQL8 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Primary key, unique notification record identifier
FK to users: the user who receives this notification
FK to users: the user who triggered the notification
Type of notification: follow, save, comment, like
Type of entity related to the notification: pin, board, or user
UUID of the related entity (pin, board, or user)
Whether the user has read/dismissed the notification
Timestamp when the notification was generated
IXUQCK|💬
Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.
Created with ERD Studio
Tables in this template
usersUsers
13 colsboardsBoards
9 colsboard_collaboratorsBoard Collaborators
5 colssectionsSections
5 colspinsPins
13 colssection_pinsSection Pins
5 colspin_savesPin Saves
5 colspin_commentsPin Comments
5 colspin_likesPin Likes
4 colsfollowsFollows
4 colstagsTags
3 colspin_tagsPin Tags
4 colsboard_tagsBoard Tags
4 colstopicsTopics
5 colsuser_topicsUser Topics
4 colsnotificationsNotifications
8 colsRelated Templates
View all templates →Twitter / X
CloneMicroblogging platform with tweets, follows, likes, retweets, and DMs
PostgreSQL17 tables
socialmicrobloggingreal-time+2
Social
Photo and video sharing platform with stories, reels, explore, and direct messaging
PostgreSQL17 tables
photosocialstories+2
Social
YouTube
CloneVideo streaming platform with channels, videos, playlists, comments, and monetization
PostgreSQL15 tables
videostreamingcontent+2
Social
Reddit Clone
CloneCommunity voting platform with subreddits, posts, comments, and awards
PostgreSQL16 tables
socialcommunityvoting+2
Social