I always have a dilema: For a record, I can use column images (tinyint) that is true if there is image for that record or false if there is not.
I can also not put that information in the database and in my code I "snoop" with disk filesystem check if the image exists.
Both give the same results of course. Having in database means maintaining the image state separately from the real image on disk, means harder to program and more prone to errors (disk image is not there any more, in the database the record has true on column image).
So I use disk check usually. But it occured to me, maybe this has a hard penalty on the disk access. I know database check must be faster, I have to get the record off the database anyway. But is looking for image using filesystem as bad as it occured to me or not?
Pros for storing it in the database:
I can see no pros for only storing it on disk. Use a pattern with a "single place of responsibility", meaning that only one place in your code saves, updates, deletes images. In this place you update the file and the database. Done this way, its not very prone for errors.
Put the other way round: if this makes your application prone for errors, you should check your architecture.