sql >> Database teknologi >  >> RDS >> Mysql

Databasedesign til apps ved hjælp af hashtags

Jeg vil anbefale at gå med et typisk mange-til-mange-forhold mellem beskeder og tags.

Det ville betyde, at du har brug for 3 borde.

  • Messages (kolonne Id , UserId og Content )
  • Tags (kolonne Id og TagName )
  • TagMessageRelations (kolonner:MessageId og TagId - for at skabe forbindelser mellem beskeder og tags - via fremmednøgler, der peger på Messages.Id / Tags.Id )

På den måde gemmer du ikke et tag flere gange, men skaber kun en ny relation til en besked (hvis det tag selvfølgelig allerede findes i tag-tabellen).

På denne måde kan du

  • let tæl hvor mange tags der er (SELECT COUNT(*) FROM Tags )
  • gem kun hvert tag én gang og søgning efter tags kan nemt indekseres
  • eller tæl hvor mange gange et bestemt tag blev brugt pr. bruger - for eksempel:

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. Dato/tidsstempel for at registrere, hvornår en post blev tilføjet til tabellen?

  2. Træk dage fra en dato i SQLite

  3. Hvordan udfylder man datohuller i MySQL?

  4. 2 måder at slette duplikerede rækker i Oracle