For photo albums I see many people use 3 tables: Albums Photos PhtoAlbums.

If however i consider a site like facebook this schema wont work (basically understand correct) because I could have a photo during my profile album and also the general albums however i can provide exactly the same picture different explanations, different tags, etc. The photo ID differs. So my prediction is whenever a user produces a duplicate of the photo it's treated a a completely new photo and therefore we want only two tables: Albums and Photos (that has FK to album)

Other available choices is have photo table with only one column (photo_id) and set all of the photo particulars within the PhotoAlbum table in order to give each unique qualities per Album. Shall We Be Held valid within this design?

Photo <- Photo_Album -> Album. May be the relationship, so place the various payload (description, tags etc) around the Photo_Album table (along with the photo itself) so while a photograph is incorporated in the database, each demonstration of the photo within an album can also be labeled/referred to.

After that you can be clever about how exactly you merge/display this data towards the user.

Also, remember Facebook is not a relational model. It is a "NoSQL"-style database for scaling reasons, and works very in a different way. You are able to research "NOSQL" on the internet for additional info on that train of thought.

Inside a relational database the Photo/Photo_Album/Album may be the normal method to keep data. The key since you store a photograph (or single entity) only one time but use other other systems to supply the consumer functionality you need.

You do not really need to produce a "copy" within the database from the photo to possess different meta-data affect it. You might have the meta-data (different tags, explanations ect) inside a table associated with the Photo_Album table that consists of this meta-data rather than keeping it within the Photo table. By doing this you'd have different meta-data for every mixture of a photograph as well as an Album.

Applying this three (well technically four) table related approach you could have meta-data about just a photograph or just an album or a mix of the 2.

Everything comes lower for your finish condition &lifier potential future needs, obviously but the purpose of this design pattern would be to treat your database like a separate, economical &lifier optimized data storage system. After this you use SQL/TSQL and several other "intermediate" systems to supply the interface for your GUI.