sql >> Databasteknik >  >> RDS >> Mysql

Databasdesign för att lagra bildfärgmönster i MySQL för sökning av bild efter färg

Du bör normalisera detta.

3 tabeller:

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

Det ska vara enkelt att infoga data, använd ...insert_id funktioner för att hämta ID:t från raden du precis infogade.

Välj med kopplingar som:

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

Kolla denna länk om hur du konverterar HEX-färg till RGB-värden:http://bavotasan.com/2011/convert-hex-color-to-rgb-using-php/

Sök bland de 10 riktigt röda bilderna:

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

Sök efter ganska svarta 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


  1. VISA TABELLER i MySQL

  2. Kan jag få en unik TIMESTAMP för varje post i MySQL

  3. Hur använder man en Oracle Ref Cursor från C# ODP.NET som en ReturnValue-parameter, utan att använda en lagrad funktion eller procedur?

  4. MySQL &MariaDB Lastbalansering med ProxySQL