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

色で画像を検索するためにMySQLに画像のカラーパターンを保存するデータベース設計

    これを正規化する必要があります。

    3つのテーブル:

    Image {image_id, name}
    Colors {color_id, red, green, blue, alpha}
    ImageHasColor {image_id, color_id, number_of_times_appeared}
    

    データの挿入は簡単である必要があります。...insert_idを使用してください 挿入した行からIDを取得する関数。

    次のような結合で選択します:

    SELECT * FROM
    Image i
    JOIN ImageHasColors h
    ON i.image_id = h.image_id
    JOIN Colors c
    ON c.color_id = h.color_id
    ORDER BY i.image_id
    

    HEXカラーをRGB値に変換する方法については、次のリンクを確認してください: http://bavotasan.com/2011/convert-hex-color-to-rgb-using-php/

    本当に赤い写真トップ10を検索:

    SELECT * FROM
    Image i
    JOIN ImageHasColors h
    ON i.image_id = h.image_id
    JOIN Colors c
    ON c.color_id = h.color_id
    WHERE c.red > 200
    AND   c.green < 50
    AND   c. green < 50
    ORDER BY h.number_of_times_appeared
    LIMIT 10
    

    かなり黒い写真を検索する:

    SELECT * FROM
    Image i
    JOIN ImageHasColors h
    ON i.image_id = h.image_id
    JOIN Colors c
    ON c.color_id = h.color_id
    WHERE c.red < 30
    AND   c.green < 30
    AND   c. green < 30
    ORDER BY h.number_of_times_appeared
    LIMIT 10
    


    1. Rails3Mysqlの問題

    2. Oracleでテーブル定義を取得する方法は?

    3. SQLServerでのトリグラムワイルドカード文字列検索

    4. PostgreSQL高可用性インストールPatroni