2011-03-28 4 views
1

j'ai une situation où un site web (source) comportant des flux multiples (catégorie séparée)colonnes spéciales uniques

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 

le vrai id est l'id j'essaie d'obtenir à partir du site source.
Je veux l'ID d'article 2 & 3 sont les mêmes, parce qu'ils partagent la même source (exemple.com), l'article 4 n'est pas la même parce qu'il a une source différente (textample.com) Y at-il un moyen que je peux appliquer cette cohérence, sans ajouter l'ID source à la table d'éléments?

+0

En supposant que vous dites que dans le tableau 'Item', un' 'paire est unique que si les aliments ont différentes' source_id'. Ensuite, je pense que vous auriez besoin d'ajouter le 'source_id' avec un' UNIQUE 'ajouté, je ne peux pas penser à un moyen de cascade une contrainte d'unicité. – Orbling

+0

C'est ce que j'essaie de dire, j'ai juste ressenti que l'ajout de l'identifiant de la source est en quelque sorte redudant, parce que la paire 'feed_id, source_id' est toujours la même – Moak

+0

Oui, ça l'est. Du point de vue de la normalisation des données. Mais votre contrainte d'unicité est sur le 'source_id', pas le' feed_id', tout en ayant besoin de référencer le 'feed_id' comme contrainte de clé étrangère. – Orbling

Répondre

1

RUN

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

Désolé, cela ferait bien que item_id 1 et 2 ne pourraient pas partager le même feed_id – Moak

+0

première exécution 'ALTER TABLE itemTable DROP INDEX feed_id' puis' ALTER TABLE itemTable AJOUTER UNIQUE ('feed_id', 'true_id') ' – diEcho

+0

Encore une fois, ce n'est pas en relation avec le feed_id, mais le source_id qui est référencé dans la table de flux. Mon argument était qu'il semblait redondant d'inclure le code source en tant que colonne dans la liste des éléments de flux, lorsqu'il est clair que tous les flux ont le même identifiant – Moak

Questions connexes