数据库设计:将文件分配给多个用户

时间:2018-11-19 23:04:44

标签: php database laravel database-design phpmyadmin

出于学习原因,我目前正在Laravel中创建文件共享系统。当前可以上传文件,然后再下载。现在,我想以一种可以让多个(但不是全部)人下载一个文件的方式扩展它。

当前,我有一个用户表,并且在文件表中引用了该用户ID。这样我就知道哪个文件属于哪个用户。

文件Table看起来像这样:

id |  filename | user_id |

1  |  doc.php  |    2    |

2  |  fly.php  |    4    |

3  |  dog.jpg  |    3    |

4  |  cat.gif  |    2    |

以此类推...这样,我可以只检查user_id是否与Authenticated and登录的User相同。

问题是我无法弄清楚如何使一个文件可供多个用户访问(10-20)。 我是否只创建了一个新的表格,看起来像这样:?

user_id | file_id_1 | file_id_2 |

1       |     3     |     6     |

每次向用户分配其他文件时,都会创建一个新列吗?

在我看来,这似乎是非常糟糕的数据示意图。

1 个答案:

答案 0 :(得分:1)

K

@Greg已经发表评论,您最好使用数据透视表将文件和用户彼此链接。

这将允许您使用hasManyThrough关系来获取用户可访问的所有文件以及有权访问文件的所有用户

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