Mysql
 sql >> база данни >  >> RDS >> Mysql

Дизайн на база данни за приложения, използващи хештагове

Бих посъветвал да използвате типична връзка много към много между съобщения и тагове.

Това би означавало, че имате нужда от 3 маси.

  • Messages (колони Id , UserId и Content )
  • Tags (колони Id и TagName )
  • TagMessageRelations (колони:MessageId и TagId - за осъществяване на връзките между съобщения и тагове - чрез външни ключове, сочещи към Messages.Id / Tags.Id )

По този начин не съхранявате маркер няколко пъти, а само създавате нова връзка със съобщение (ако този маркер вече съществува в таблицата с етикети, разбира се).

По този начин можете

  • Лесно пребройте колко маркера има (SELECT COUNT(*) FROM Tags). )
  • Запазете всеки маркер само веднъж и търсенето на тагове може лесно да се индексира
  • или пребройте колко пъти е бил използван определен маркер на потребител - например:

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. Как да получите всички публикации с всички категории в wordpress чрез mysql?

  2. Вмъкване на списък със стойности не съответства на списъка с колони:1136 Броят на колоните не съвпада с броя на стойностите

  3. Избягване на вложени заявки

  4. неправилно убиване на mysqld - сега не се стартира

  5. Прочетете една колона от един ред от MySQL база данни