2012-03-05 1 views
-1

У меня есть 3 таблицыSQL Группировка структуры таблицы с условной присоединиться к совету

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

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

3) Groups (GroupId,GroupDesc,CreatedById)

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

GroupContents (Id,GroupId,ItemId,ItemType) 

Где я буду хранить StoryId или PHOTOID в колонке Itemid и хранить либо «Story» или «Фото» в колонке ItemType.

Когда я пишу запрос, чтобы получить содержимое группы, должен ли я добавить conditinal join? то есть; Если ItemType - это «Story», «Join from Story table», «Else Join from Photos»? Поскольку одинаковый идентификатор истории и PhotoId существуют как столбец Identity в обеих таблицах

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

ответ

2

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

Да, точно.

Тогда вы просто сделаете Группу ВЛЕВО РАБОТЫ GroupPhotos LEFT JOIN GroupStories

Смежные вопросы