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

Toxiの方法を正規化することは本当に価値がありますか? (3NF)

    すべてのタグを異なるレコード(正規化)に含めると、必要に応じてタグの名前を簡単に変更し、タグ名の履歴を追跡できるようになります。

    SO たとえば、名前をSQL Serverに変更しました 関連するタグが少なくとも3回(mssql -> sqlserver -> sql-server

    1つのレコードにすべてのタグがある(非正規化)ということは、この列にFULLTEXTでインデックスを付けることができることを意味します 一度に2つ以上のタグを持つ投稿にインデックスを付けて検索します:

    SELECT  *
    FROM    posts
    WHERE   MATCH(tags) AGAINST('+mma +ufc')
    

    これも可能ですが、正規化された設計では効率が低下します。

    @ft_min_word_lenを調整することを忘れないでください 3のタグにインデックスを付ける これが機能するための文字以下)

    両方のデザインを組み合わせることができます。マップテーブルと非正規化列の両方を保存します。ただし、これにはさらにメンテナンスが必要になります。

    正規化されたデザインをデータベースに保存し、指定したクエリを使用してタグをSphinxにフィードすることもできます。 またはLucene

    このようにして、MySQLを使用して履歴を掘り下げることができます 、Sphinxを使用したフルテキストタグ検索 、追加のメンテナンスは必要ありません。



    1. herokuで.sqlスクリプトを実行する方法は?

    2. PostgreSQL-列の最大値を持つ行をフェッチします

    3. SQL Serverの特定のテーブルを参照するすべての外部キーを一覧表示するにはどうすればよいですか?

    4. django.db.utils.OperationalError:(2026、'SSL接続エラー:SSL_CTX_set_tmp_dhが失敗しました')