Проектирование базы данных: назначение файла нескольким пользователям - PullRequest
0 голосов
/ 20 ноября 2018

В настоящее время я создаю систему обмена файлами для изучения в Laravel.В настоящее время есть возможность загрузить файлы, а затем загрузить их позже.Теперь я хотел бы расширить его так, чтобы один файл мог быть загружен несколькими (но не всеми) лицами.

В настоящее время у меня есть таблица пользователей, а идентификатор пользователя указан в таблице файлов.Таким образом, я знаю, какой файл принадлежит какому пользователю.

Таблица файлов выглядит примерно так:

id |  filename | user_id |

1  |  doc.php  |    2    |

2  |  fly.php  |    4    |

3  |  dog.jpg  |    3    |

4  |  cat.gif  |    2    |

И так далее ... Таким образом, я могу просто проверить, является ли user_idто же самое, что и прошедший проверку подлинности и вошедший в систему пользователь.

Проблема в том, что я не могу понять, как сделать файл доступным для нескольких пользователей (10-20).Должен ли я просто создать новую таблицу, которая будет выглядеть следующим образом:?

user_id | file_id_1 | file_id_2 |

1       |     3     |     6     |

И каждый раз, когда пользователю назначается дополнительный файл, создается новый столбец?

Мне это кажетсяочень плохая схема данных.

1 Ответ

0 голосов
/ 20 ноября 2018

K

Как уже заметил @Greg, лучше всего использовать сводную таблицу, чтобы связать файлы и пользователей друг с другом.

Это позволит вам использовать отношение hasManyThrough для получения всех файлов, к которым имеет доступ пользователь, и всех пользователей, имеющих доступ к файлу

https://laravel.com/docs/5.7/eloquent-relationships#has-many-through

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...