2011-03-28 7 views
1

У меня есть ситуации, когда веб-сайт (источник) имеет несколько каналов (категория разделена)Специальных уникальные столбцов

Feed Table 
feed_id | source_id | feed_url 
1  | 1  | http://example.com/rss?category=1 
2  | 1  | http://example.com/rss?category=5 
3  | 2  | http://textample.com/rss 

Item Table 
item_id | true_id | feed_id 
1  | 1332 | 1 
2  | 76549 | 1 
3  | 76549 | 2 
4  | 76549 | 3 

истинный идентификатор идентификатор я пытаюсь получить от исходного сайта.
Я хочу, чтобы элемент id 2 & 3 были одинаковыми, потому что они имеют один и тот же источник (пример.com), элемент 4 - это не то же самое, потому что он имеет другой источник (textample.com) Есть ли способ, которым я могу обеспечить согласованность, не добавляя исходный идентификатор в таблицу позиций?

+0

Предполагая, что вы говорите, что в 'Item' столе,' 'пара уникальна, только если каналы имеют разные' source_id'. Тогда я думаю, вам нужно добавить 'source_id' с добавлением' UNIQUE ', я не могу придумать способ каскадировать ограничение уникальности. – Orbling

+0

Вот что я пытаюсь сказать, я просто чувствовал, что добавление идентификатора источника является своего рода redudant, потому что пара 'feed_id, source_id' всегда одна и та же – Moak

+0

Да, это так. С точки зрения нормализации данных. Но ваше ограничение уникальности находится в 'source_id', а не' feed_id', в то время как все еще нужно ссылаться на 'feed_id' как ограничение внешнего ключа. – Orbling

ответ

1

RUN

ALTER TABLE `itemTable` ADD UNIQUE (`feed_id`); 
+0

Извините, это обеспечит, чтобы item_id 1 и 2 не могли совместно использовать один и тот же файл feed_id – Moak

+0

, первый запуск 'ALTER TABLE itemTable DROP INDEX feed_id', затем' ALTER TABLE itemTable ADD UNIQUE ('feed_id', 'true_id') ' – diEcho

+0

Опять же, это не связанный с feed_id, но source_id, на который ссылается таблица фида. Я хотел сказать, что было излишним включить source_id в качестве столбца в списке элементов фида, когда становится ясно, что весь один канал имеет один и тот же идентификатор – Moak

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