J'implémente des fonctionnalités pour suivre les articles qu'un utilisateur a lus.
create_table "article", :force => true do |t|
t.string "title"
t.text "content"
end
C'est ma migration jusqu'à présent:
create_table :user_views do |t|
t.integer :user_id
t.integer :article_id
end
La table user_views sera toujours interrogée pour rechercher les deux colonnes, jamais une seule. Ma question est de savoir à quoi devrait ressembler mon index. Y a-t-il une différence dans l'ordre de ces tableaux, devrait-il y avoir plus d'options ou quoi que ce soit? Ma base de données cible est Postgres.
add_index(:user_views, [:article_id, :user_id])
Merci.
MISE À JOUR:
Parce qu'une seule ligne contenant les mêmes valeurs dans les deux colonnes peut exister (car pour savoir si user_id HAS a lu article_id), dois-je considérer l'option: unique? Si je ne me trompe pas, cela signifie que je n'ai pas à faire de vérification par moi-même et à simplement faire une insertion chaque fois qu'un utilisateur visite un article.