Структура таблиц группировки SQL с рекомендациями по условному соединению - PullRequest
0 голосов
/ 05 марта 2012

у меня 3 стола

1) Photos (PhotoId,Title, CreatedById,etc...)

2) Stories (StotyId,StoryDesc,CoverPhotoId,CreatedById,etc...)

3) Groups (GroupId,GroupDesc,CreatedById)

Теперь я хочу создать таблицу, в которой я могу хранить содержимое группы. Каждая группа может иметь 1 или более фотографий и историй. Как я буду хранить это? Если я использую только таблицу, как это

 GroupContents (Id,GroupId,ItemId,ItemType)  

Где я буду хранить StoryId или PhotoId в столбце ItemId и хранить либо «Story», либо «Photo» в столбце ItemType.

Когда я пишу запрос для получения содержимого группы, должен ли я добавить условное соединение? то есть; Если ItemType имеет тип «История», таблица «Соединение из истории», или «Таблица объединения из фотографии»? Поскольку в обеих таблицах существует один и тот же идентификатор истории и PhotoId в виде столбца Identity

Как лучше всего справиться с этим сценарием? Должен ли я создать 2 отдельные таблицы, такие как GroupPhotos(GroupId,PhotoId) и GroupStories(GroupId,StoryId)?

1 Ответ

2 голосов
/ 05 марта 2012

Как лучше всего справиться с этим сценарием? Должен ли я создать 2 отдельные таблицы, такие как GroupPhotos (GroupId, PhotoId) и GroupStories (GroupId, StoryId)?

Да, именно так.

Тогда вы бы просто сделали группу LEFT JOIN GroupPhotos LEFT JOIN GroupStories

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...