На мой взгляд лучше всего подойдет связующая таблица. И не нужно создавать запись с null при сохранении модели, на тот случай если у модели не будет прикрепленного файла, что бы не плодить пустые записи в БД.
Структура БД может быть такой
resource
-----------
id:PK
name
description
resource_file
---------------
resource_id:PK
file_id:PK
file
---------------
id:PK
path
description
И создать индексы для всех таблиц и внешние ключи для resource_file.resource_id и resource_file.file_id.
Таким образом вы сможете, например, сохранять несколько файлов для одной модели. А если правильно настроить связи с каскадным удалением, то можно переложить эту логику на БД, что бы не чистить базу вручную после удаления записи модели.