Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datenbankdesign zum Speichern von Bildfarbmustern in MySQL zum Suchen von Bildern nach Farbe

Sie sollten dies normalisieren.

3 Tabellen:

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

Das Einfügen von Daten sollte einfach sein, verwenden Sie ...insert_id Funktionen, um die ID aus der gerade eingefügten Zeile zu erhalten.

Wählen Sie mit Joins wie:

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

Unter diesem Link erfahren Sie, wie Sie HEX-Farben in RGB-Werte konvertieren:http://bavotasan.com/2011/convert-hex-color-to-rgb-using-php/

Top 10 der wirklich roten Bilder suchen:

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

Suche eher schwarze Bilder:

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