sql >> Databáze >  >> RDS >> Mysql

Návrh databáze pro aplikace využívající hashtagy

Doporučil bych postupovat s typickým vztahem many-to-many mezi zprávami a značkami.

To by znamenalo, že potřebujete 3 tabulky.

  • Messages (sloupce Id , UserId a Content )
  • Tags (sloupce Id a TagName )
  • TagMessageRelations (sloupce:MessageId a TagId - vytvořit spojení mezi zprávami a značkami - pomocí cizích klíčů směřujících na Messages.Id / Tags.Id )

Tímto způsobem neukládáte značku vícekrát, ale pouze vytváříte nový vztah ke zprávě (pokud tato značka již v tabulce značek samozřejmě existuje).

Tímto způsobem můžete

  • snadno spočítejte, kolik značek existují (SELECT COUNT(*) FROM Tags )
  • každou značku uložte pouze jednou a vyhledávání značek lze snadno indexovat
  • nebo spočítat, kolikrát byla určitá značka použita na uživatele – například:

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. Jak zvýraznit změny/rozdíl v jednom textovém odstavci od druhého?

  2. #1136 - Počet sloupců neodpovídá počtu hodnot?

  3. Chování plánu dotazů dočasné tabulky SQL Server 2016

  4. Běžná chyba MySQL:„Došlo k chybě při čtení komunikačního paketu“