Могут ли несколько таблиц загружать каждый файл `ownTo` и каждый загружаемый файл? - PullRequest
1 голос
/ 24 марта 2011

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

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

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

1 Ответ

2 голосов
/ 24 марта 2011

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

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

Загрузка имеет много заметок Загрузка имеет много заполнений

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

Если у вас есть случай, когда в примечании или заполнении содержится более одного файла, вам нужно перейти на отношение 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

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

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

...