Saya membuat aplikasi web di mana pengguna dapat memposting dan membaca artikel. Saya ingin menampilkan daftar artikel kepada pengguna (yang mudah dilakukan) tetapi saya hanya ingin menampilkan artikel yang belum dibaca pengguna (artikel ditandai sebagai telah dibaca saat pengguna membukanya).

Jenis database apa yang harus saya gunakan untuk mempertahankan hubungan seperti itu mengingat mungkin ada 1000-an artikel dan 1000-an pengguna. Mempertimbangkan RDBMS tradisional, misalkan ada dua tabel terpisah, satu untuk user (user_id) dan satu lagi untuk articles (article_id),

  1. Saya tidak dapat menambahkan user_id pada setiap article_id karena artikel dapat disiapkan oleh 100-an atau 1000-an pengguna.
  2. pengguna bisa membaca 10-an atau 100-an artikel. Saya tidak dapat menambahkan article_id untuk setiap pengguna untuk melacak artikel mana yang telah dibaca pengguna user

Menurut saya, kedua pendekatan di atas dapat memperlambat/mempersulit proses pengambilan artikel

-2
Manu Chadha 14 November 2020, 02:09

1 menjawab

Jawaban Terbaik

Gunakan RDBMS kecuali Anda memiliki alasan untuk tidak melakukannya.

Saya tidak dapat menambahkan article_id untuk setiap pengguna untuk melacak artikel mana yang telah dibaca pengguna user

Ya, Anda pasti bisa, dan itulah yang harus Anda lakukan; tabel seperti (pseudo-SQL)

CREATE TABLE user_read_articles (
  user_id,
  article_id
)

Dengan indeks unik di atas (user_id, article_id) adalah hal yang tepat di sini.

Anda juga dapat menambahkan data tambahan seperti stempel waktu ketika pengguna membaca artikel jika perlu.

2
AKX 13 November 2020, 23:15