Я впроваджую функціональність для відстеження статей, які користувач прочитав.
create_table "article", :force => true do |t|
t.string "title"
t.text "content"
end
Це моя міграція на даний момент:
create_table :user_views do |t|
t.integer :user_id
t.integer :article_id
end
Таблиця user_views завжди буде запитуватися на пошук обох стовпців, ніколи лише одного. Моє питання полягає в тому, як повинен виглядати мій індекс. Чи є різниця в порядку цих таблиць, чи має бути ще кілька варіантів до нього чи ще. Моя цільова БД - Postgres.
add_index(:user_views, [:article_id, :user_id])
Дякую.
ОНОВЛЕННЯ:
Оскільки може існувати лише один рядок, що містить однакові значення в обох стовпцях (оскільки, знаючи, чи user_id ЧИТАТИ article_id), чи варто розглядати варіант: unique? Якщо я не помиляюсь, це означає, що мені не потрібно самостійно перевіряти, а просто робити вставку кожного разу, коли користувач відвідує статтю.