Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Desain basis data untuk komentar dan balasan

Anda bisa menggunakan satu tabel, yang menyertakan bidang ParentID. Jika catatan tidak memiliki nilai, itu adalah komentar, jika tidak, itu adalah balasan (baik untuk komentar atau balasan).

Anda dapat menanyakan catatan ParentID catatan (periksa itu ParentID) untuk melihat apakah balasan ini untuk komentar atau balasan.

Sunting :Di atas adalah solusi yang cukup praktis. Namun, untuk menggunakan versi yang dinormalisasi, tetap pertahankan satu tabel Komentar (tanpa ParentID), dan buat tabel ReplyTo yang memiliki CommentID, dan ResponseID, yang keduanya merupakan ID catatan di tabel Komentar.

Menggunakan ide ini, sql berikut akan menampilkan komentar dan 'balasan' untuk setiap komentar untuk setiap balasan yang memiliki komentar:

select c.comment, r.comment as reply
from comment as c, comment as r, replyto as rt
where c.ID = rt.CommentID
and r.ID = rt.ReplyID

Seperti yang Dimitrii tunjukkan, itu tidak akan menampilkan komentar tanpa balasan - untuk ini Anda memerlukan kueri gabungan luar (tidak menguji sintaks):

SELECT c.comment, r.comment as reply,
from Comment c 
  left outer join Comment r on c.id = r.id  
  left outer join replyto rt on rt.responseid = r.id



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ruby, Rails:permata mysql2, apakah ada yang menggunakan permata ini? Apakah stabil?

  2. Konversi database MySQL dari latin ke UTF-8

  3. Campuran ilegal dari collations (utf8_general_ci,IMPLICIT) dan (utf8_unicode_ci,IMPLICIT) untuk operasi '=' di MySQL Stored Procedure

  4. Akankah memindahkan data dari EBS ke penyimpanan sementara akan meningkatkan kinerja kueri MySQL?

  5. mysql_fetch_assoc():argumen yang diberikan bukan sumber hasil MySQL yang valid