Могут ли несколько таблиц, каждая загрузка файла `belongTo`, и каждая загрузка файла не иметь отношения в модели?

Я играю с использованием таблицы загрузки файлов (поля: id, name, size, type) и с использованием ряда других таблиц (заметки, документы), каждая из которых имеет внешний ключ, указывающий на одну запись в таблице загрузки файлов (поле: upload_id). Модель для каждой из серий таблиц (например, заметок, документов) будет включать отношение «принадлежность», указывающее на таблицу загрузки файлов.

Это означает, что таблица загрузки файлов не будет иметь внешнего ключа (на нее указывают несколько таблиц), поэтому поле внешнего идентификатора не будет работать, если у меня нет поля для каждой другой таблицы (например, note_id, filing_id и т. д.). Модель не упомянула ни о каких отношениях.

Должен ли я сделать это по-другому? Я не могу придумать более эффективного.


person thf    schedule 24.03.2011    source источник


Ответы (1)


Зависит в основном от бизнес-логики.

Если ваши файлы распределены между другими таблицами (заполнения заметок и т.д.), то

Загрузить hasMany Примечание Загрузить hasMany Заполнение

но это в случае, когда у вас только один файл на запись.

Если у вас есть случай, когда заметка или заполнение имеют более одного файла, то вам необходимо перейти в раздел HABTM или:

Table notes:
id, name, desc ...

Table uploads:
id, name, size, type

Table notes_uploads:
id, note_id, upload_id

Table fillings_uploads:
id, filling_id, upload_id

Таким образом, вы определите отношение «многие ко многим» для каждого объекта, в котором есть файлы.

Я думаю, что второй способ является более гибким, но действительно зависит от требований.

person Nik Chankov    schedule 24.03.2011