sql >> Database >  >> RDS >> Mysql

Database-ontwerp om het kleurpatroon van afbeeldingen op te slaan in MySQL om afbeeldingen op kleur te zoeken

Je zou dit moeten normaliseren.

3 Tafels:

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

Het invoeren van gegevens zou eenvoudig moeten zijn, gebruik ...insert_id functies om de id te halen uit de rij die u zojuist hebt ingevoegd.

Selecteer met joins zoals:

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

Bekijk deze link om HEX-kleur om te zetten naar RGB-waarden:http://bavotasan.com/2011/convert-hex-color-to-rgb-using-php/

Zoek top 10 echt rode foto's:

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

Zoek nogal zwarte afbeeldingen:

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. MySQL:zeer langzame update/insert/deletquery's hangen aan de eindstap van de query

  2. controleer op dubbele gegevens voordat u deze invoegt

  3. NextForm v3:vijf opties voor gegevens- en databasemigratie

  4. AWS Python Lambda met Oracle