Dalam artikel kedua saya tentang forum online, saya menyebutkan bahwa mungkin ada beberapa fitur lanjutan yang akan ditambahkan:
- Forum kategori dan subkategori di mana setiap kategori memiliki subjek, beberapa moderator, dan informasi tambahan seperti tanggal pembuatan kategori.
- Sebuah pos mungkin memiliki subjek selain konten.
- Kami mungkin ingin mengizinkan pengguna untuk memberikan suara dan tidak memilih di utas dan pos.
Untuk dapat memahami model dengan lebih mudah, kami telah menyiapkan contoh forum seperti itu dengan kategori, utas, posting, dll. Kami berharap ini memudahkan untuk memahami berbagai hal:
Entitas dari Bagian 1 diwarnai dengan warna kuning dan entitas dari Bagian 2 diwarnai dengan oranye. Berikut adalah model database saat ini setelah dua artikel pertama:
Detail Lebih Lanjut tentang Postingan
Di artikel kedua, saya hanya menambahkan hubungan ke "status" untuk utas dan posting, tetapi sekarang saya ingin meningkatkan posting dengan detail tambahan di luar konten sederhana. Untuk saat ini, saya akan menambahkan "subjek" untuk setiap posting yang mungkin berbeda dari "subjek" utas. Dengan "subjek" (pikirkan baris subjek pada email atau subjek pesan MMS), kami dapat menampilkan versi konten yang ringkas – seperti baris pertama email yang ditampilkan di Outlook, atau di ponsel Anda. surat. Selain itu, pengguna dapat menggunakan "subjek" kiriman untuk merekam komentar tingkat tinggi seperti "Saya tidak setuju" dan kemudian meletakkan argumen mereka di bagian komentar kiriman. Ini adalah perubahan sederhana yang bagus untuk model.
Kategori
Sekarang setelah kita melakukan pemanasan, mari tambahkan konsep (entitas) baru untuk kategorisasi utas dan posting. Setiap kategori akan ditentukan dengan nama; setiap kategori dibuat oleh pengguna dan akan memiliki setidaknya satu moderator di antara pengguna, ditambah beberapa atribut lain seperti pos dan utas yang sudah kita miliki. Kami menginginkan kategori dan subkategori, jadi kami akan mengizinkan kategori untuk merujuk ke (sub-) kategori lain.
Karena saya ingin memiliki beberapa moderator pada setiap kategori, saya akan membuat tabel untuk menautkan kategori ke grup pengguna, dan menautkan pengguna ke grup tersebut. Tabel ini akan mendefinisikan “grup” pengguna, salah satunya adalah “moderator”, tetapi di masa mendatang, ini dapat diperluas untuk jenis grup lainnya.
Memberi Suara atau “Suka”
Secara pribadi, saya lebih suka "memilih" atau "menolak" pada sesuatu daripada hanya "menyukai" itu (tapi saya kira Mark Zuckerberg tidak setuju dengan saya tentang itu). Saya akan memilih untuk membuat mekanisme pemungutan suara yang memungkinkan pengguna untuk memberikan “suara naik” atau “tidak memberikan suara”. Kami mungkin memilih untuk tidak mengizinkan suara yang turun ketika tidak ada suara yang naik, atau membatasi jumlah suara yang tidak setuju, tetapi itu terserah aplikasi untuk memutuskan, database hanya akan melacak penghitungan suara yang naik dan turun.
Kita mungkin membuat tabel terpisah untuk voting pada thread dan voting pada postingan, tetapi saya akan menyimpannya di tabel yang sama dengan kunci asing opsional dari tabel thread dan postingan. Selain itu, saya memilih untuk tidak memberikan suara pada kategori.
Desain Formal
Untuk saat ini, itu merangkum perubahan pada modelnya, sehingga kita bisa melihat desain formalnya. Sekali lagi, kami memperluas ERD yang dibuat di Bagian 1 &2. Perubahan yang dijelaskan dalam artikel ini dan diperkenalkan ke model diwarnai dengan warna biru.
Kesimpulan
Masih ada perbaikan tambahan yang dapat dilakukan, tetapi di sini kami telah membuat database kami untuk forum online menjadi desain yang cukup lengkap – ini akan mendukung sebagian besar forum diskusi online.
Fitur lain apa yang dibutuhkan forum online Anda?
« Bagian Sebelumnya |