我想知道 Dropbox 的数据库模式是如何设计的?我正在考虑三个表:具有以下约束的用户、文件、文件夹。
约束:
- 一个用户可以包含多个文件和文件夹。
- 每个文件都可以在多个用户之间共享。
- 一个文件可以组织在一个用户的文件夹中,但不能为另一个用户组织(如果文件是共享的)。
- 每个文件夹可以包含多个文件以及其他文件夹。
你会如何在他们之间建立关系?
最佳答案
此 ERD 符合您描述的规则:
请注意,在此架构中,每个用户都有自己的个性化文件夹 View 。另一方面,文件只表示一次,但可以分配给一个或多个文件夹,甚至可以分配给不同的用户。
编辑:(稍微)扩展模型:
通过添加单个表来跟踪物理文件夹及其内容,我提议的架构还解决了 Branko Dimitrijevic 建议的所有附加功能:
关于数据库架构 : How the relationship can be designed between user, 文件和文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736548/