Zastanawiam się jaki schemat bazy danych przyjąć do trzymania informacji o plikach. Mam tebelki takie jak profiles/users/realestates
itd. i każdy rekord z tych tablel może mieć kilka plików. W każdym wypadku będzie tabela files
oraz - no właśnie - oto moje pomysły (w przykładzie uzyję tylko tabeli users)
- Dla każdej z tabel utworzę pivot table w której będzie id z tabeli
files
oraz id z tabeliusers
i żeby dogrzebać się do plików danego usera, będę musiał joinować tą tabelę pośredniąuser_files
- W tabeli files dodam kolumny
owner_type
orazowner_id
. Mój ORM wspiera relacje polimorficzne, więc w łatwy sposób mogę wyciągnąć np. wszystkie pliki powiązane z danym rekordem z tabeli users, bo w kolumnieowner_type
będzie nazwa odpowiadającego modelu, czyli będzie tabelafiles
+ odpowiedniousers/profiles
itd.. - Dla każdej tabeli utworzę odpowiadającą jej tabelę files, w której będą pliki tylko dla danej tabeli profile_files/user_files/realestate_files itd. (** uwaga, nie jest to pivot table, tylko pełna tabela files **)
Tyle mi przychodzi do głowy. Jak myślicie, czy któreś z tych rozwiązań jest dobre?
Zastanawia mnie jeszcze jak rozwiązać kwestie dokumentów. W końcu to też plik... Czy lepiej jest to rozdzielic z uwagi na fakt, że taka generyczna tabela files może urosnąć do gigantycznych rozmiarów i mieć tabelki files
oraz documents
, czy po prostu umieścić w tabeli files
z odpowiednim file_type
? Z drugiej strony dokument również może mieć swój typ i tu się sprawa komplikuje, więc chyba sensowniej jest to rozdzielić.