предложенная схема базы данных для сайта фотографий - PullRequest
3 голосов
/ 08 августа 2009

Я пытаюсь упорядочить свои фотографии и создать внешний интерфейс ajax. У меня есть много фотографий, и на существующем хостинг-сайте, который оплачивается, на нем много места на диске, поэтому я не хочу платить за его хранение в сети Picasa или в другом варианте.

Я создаю сайт asp.net для просмотра этих фотографий, но я пытаюсь определить наилучшую схему для хранения. У меня есть несколько фундаментальных вопросов:

Фотографии
Альбомы
Теги (возможно)

Несколько вопросов: 1. у меня есть отдельная таблица для каждого альбома или все фотографии в одной фотографии. отдельные таблицы будут идентичны, поэтому я пытаюсь определить, есть ли какая-либо польза от этого разделения 2. Есть ли существенное преимущество использования SQL-сервера по сравнению с MYsql (это мой выбор в данном случае) для этой схемы. Я не думаю, что я делаю что-нибудь для фантазии.

Ответы [ 2 ]

12 голосов
/ 08 августа 2009

Вы должны поместить все фотографии в одну таблицу, где у вас есть 1: N с внешним ключом для альбомов, например

Photos | id, title, url, description, album
Albums | id, title, description

где альбом является внешним ключом для Albums.id

О тегах, вы, вероятно, хотите иметь много тегов для одной фотографии, так что это будет N: N, где вам понадобится еще одна таблица, чтобы объединить эти два, поэтому у вас есть

Tags | id, name
Photo_Tag | id, id_tag, id_photo

, где id_tag и id_photo - внешние ключи для Tag.id, соответствующие Photo.id

Если вы делаете проект только для личного использования, я думаю, что MySQL подойдет просто так.

2 голосов
/ 08 августа 2009

Одна таблица для альбомов (идентификатор, имя, описание), одна таблица для фотографий (идентификатор, имя, описание, PhotoData, parentAlbum), вы не получите никакой выгоды и много сложностей, если разбиваетесь на разные таблицы по альбом. Если вы хотите, чтобы фотографии принадлежали нескольким альбомам, используйте таблицу ссылок для отношения 1: N Альбомы: Фотографии, а не используйте идентификатор альбома как часть фотографии. Если вы выбираете теги, решите, хотите ли вы пометить фотографии или альбомы (или оба), тогда, возможно, перейдите на таблицу тегов и таблицу сопоставления 1: N для AlbumTags и PhotoTags

Что касается выбора БД, то единственным различием на этом уровне является стоимость, поэтому используйте то, что вам лучше всего известно (если у вас есть оба варианта по одной цене).

...