sql >> データベース >  >> RDS >> Mysql

ハッシュタグを使用したアプリのデータベース設計

    メッセージとタグの間の典型的な多対多の関係を使用することをお勧めします。

    つまり、3つのテーブルが必要になります。

    • Messages (列IdUserId およびContent
    • Tags (列Id およびTagName
    • TagMessageRelations (列:MessageId およびTagId -メッセージとタグを接続します-Messages.Idを指す外部キーを使用します / Tags.Id

    そうすれば、タグを複数回保存するのではなく、メッセージとの新しい関係を作成するだけです(もちろん、そのタグがすでにタグテーブルに存在する場合)。

    このようにしてできます

    • 簡単にタグの数を数えるSELECT COUNT(*) FROM Tagsがあります )
    • 各タグを1回だけ保存する タグの検索は簡単にインデックスに登録できます
    • または特定のタグが使用された回数を数える ユーザーごと-例:

    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. 'create_date'タイムスタンプフィールドのデフォルト値が無効です

    2. Oracle Database Security –暗号化と復号化

    3. MySQLは5つのフィールドのうち2つに一致します

    4. 同じクエリを使用してmysqlの制限の合計を取得しますか?