J86*_*J86 4 erd database-design version-control
我正在做一个新项目。项目的域逻辑如下:
用户上传文件(文档)并给出标题,然后另一个用户出现并且(她)也尝试上传具有相同标题的文件。只要文档的正文有差异,这就可以了。
如何设计我的域模型,以便稍后使用数据的 Web 应用程序可以通知查看特定文档的用户“嘿,此文档还有另一个版本”。
这是我所拥有的一个简单的 ERD,但这显然不能执行我上面想要的。
我将不胜感激任何帮助和建议。
谢谢
您可以将它们全部保存在同一个表中,只需使用一列来跟踪版本号:
文件 --------- id(PK的一部分) version_number(PK的一部分) 标题 文件 creator_id(FK 到 users.id) version_date(创建此版本的日期 - 不是必需的,但最好有) 文件
当添加新记录但它是现有文档的新版本时,您的应用程序将需要能够处理更新文档的版本号。您还需要确保将任何文档元数据(例如Title
)更改传播到所有相关文档。您可以通过允许文档 ID 不是唯一的来实现此目的,并且主键是文档 ID 和版本号的组合。否则,可能无法确定要更新哪个记录。
另一种方法是为文档元数据创建一个存根,并为所有版本创建一个单独的表:
文件 --------- 身份证(PK) 标题 创建者(FK 到 users.id) (其他元数据) 文档版本 ----------------- 身份证(PK) document_id(FK 到documents.id) 文档版本号 文件 (其他领域)
第二个选项是一个稍微复杂的结构,但会为您提供更好的参照完整性,因为所有版本都必须通过外键链接到文档存根。
就个人而言,我会选择第二个版本。