数据库架构 : How the relationship can be designed between user, 文件和文件夹?

标签 database database-design database-schema

我想知道 Dropbox 的数据库模式是如何设计的?我正在考虑三个表:具有以下约束的用户、文件、文件夹。

约束:

  1. 一个用户可以包含多个文件和文件夹。
  2. 每个文件都可以在多个用户之间共享。
  3. 一个文件可以组织在一个用户的文件夹中,但不能为另一个用户组织(如果文件是共享的)。
  4. 每个文件夹可以包含多个文件以及其他文件夹。

你会如何在他们之间建立关系?

最佳答案

此 ERD 符合您描述的规则:

ERD

请注意,在此架构中,每个用户都有自己的个性化文件夹 View 。另一方面,文件只表示一次,但可以分配给一个或多个文件夹,甚至可以分配给不同的用户。


编辑:(稍微)扩展模型:

通过添加单个表来跟踪物理文件夹及其内容,我提议的架构还解决了 Branko Dimitrijevic 建议的所有附加功能:

enter image description here

关于数据库架构 : How the relationship can be designed between user, 文件和文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736548/

相关文章:

java - 导出所有 netbeans 项目和数据库

php - Mysql - 日期范围内的用户分析

c# - 用于处理个人和经常性费用的数据库设计

mongodb - 数据库复合索引最佳实践 Mongodb

mysql - 数据库架构变更 | MySQL 事务性 DDL 语句

database - (PostgreSQL) "Advanced"检查约束问题

java - 如何在LevelDB中存储关联实体列表

java - Postgresql 模式连接键

sql-server - 用约束建模多对一?

database - 主键中允许 NULL - 为什么以及在哪个 DBMS 中?