Первый вариант более гибкий, так как путь к картинке можно указать отдельной директивой конфиг файле приложения.
Например в джанге используется второй вариант — тоже очень неплох, для каждого поля изображения, в модели, можно установить свой путь к изображению (фактически указать директорию куда будет загружаться файл, относительно общей директории загрузки).
Что же относительно полного пути — не очень удобно, так как привязка к расположения файла жосткая.
На щет 4-го варианта — это как-то странно, зачем создавать еще одну таблицу в которой хранить id записи? Сейчас не вижу смысл.
Я бы скорее использовал первый и второй вариант, а выбор между ними зависел от приложения которое я пишу. Четвертый — при условии что у меня очень много данных в таблице, которые нужны с разной степенью релевантности. Те что более востребованы были в таблице А, а те что менее — в В, и связывались по id.