В реляционной базе данных Photo / Photo_Album / Album является обычным способом хранения данных. Принцип заключается в том, что вы сохраняете фотографию (или отдельную сущность) только один раз, но используете другие другие механизмы для обеспечения требуемой функциональности конечного пользователя.
На самом деле вам не нужно создавать «копию» в базе данных фотографии, чтобы к ней применялись разные метаданные. Вы можете иметь метаданные (различные теги, описания и т. Д.) В таблице, связанной с таблицей Photo_Album, которая содержит эти метаданные, вместо того, чтобы хранить их в таблице фотографий. Таким образом, у вас будут разные метаданные для каждой комбинации фотографии и альбома.
Используя этот подход, связанный с тремя (и технически четырьмя) таблицами, вы можете получить метаданные о просто фотографии или просто альбоме или их комбинации.
Конечно, все сводится к вашему конечному состоянию и потенциальным будущим требованиям, но суть этого шаблона проектирования - рассматривать вашу базу данных как отдельную, экономичную и оптимизированную систему хранения данных. Затем вы используете SQL / TSQL и многие другие «промежуточные» механизмы для предоставления интерфейса вашему графическому интерфейсу.