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

Desain basis data untuk aplikasi menggunakan tagar

Saya akan menyarankan untuk menggunakan hubungan banyak-ke-banyak yang khas antara pesan dan tag.

Itu berarti Anda membutuhkan 3 tabel.

  • Messages (kolom Id , UserId dan Content )
  • Tags (kolom Id dan TagName )
  • TagMessageRelations (kolom:MessageId dan TagId - untuk membuat hubungan antara pesan dan tag - melalui kunci asing yang menunjuk ke Messages.Id / Tags.Id )

Dengan begitu Anda tidak menyimpan tag berkali-kali tetapi hanya membuat relasi baru dengan sebuah pesan (tentu saja jika tag tersebut sudah ada di tabel tag).

Dengan cara ini Anda bisa

  • dengan mudah menghitung berapa banyak tag ada (SELECT COUNT(*) FROM Tags )
  • hanya menyimpan setiap tag sekali dan mencari tag dapat dengan mudah diindeks
  • atau hitung berapa kali tag tertentu digunakan per pengguna - misalnya:

SELECT COUNT(*) FROM Tags INNER JOIN TagMessageRelations ON Tags.Id = TagMessageRelations.TagId INNER JOIN Messages ON TagMessageRelations.MessageId = Messages.Id GROUP BY Messages.UserId




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. periksa apakah ada nilai di json encode array di mysql

  2. Bagaimana memulihkan baris yang baru saja dihapus di mysql?

  3. Pilih Baris dengan Grup Nilai Kolom Maksimum dengan Kolom Lain

  4. Kesalahan dengan Pernyataan Siap

  5. Ditemukan:sedikit, diharapkan:boolean setelah pemutakhiran Hibernate 4