是否存在允许多种观点的数据库类型的现有实现甚至名称?我的意思是,例如,如果一个用户更改了一篇文章的标题,那么更改将只对该特定用户可见,而其他所有人都会看到原始标题。如果多个用户将其更改为相同的新标题,则新标题将成为数据库的“主视图”或“未过滤视图”,由数据库或应用程序启动。
我正在用 C# 编写代码,熟悉 SQL 并从 MongoDB 开始,但问题是关于概念以及它是否存在抽象、实现或设计模式。
是否存在允许多种观点的数据库类型的现有实现甚至名称?我的意思是,例如,如果一个用户更改了一篇文章的标题,那么更改将只对该特定用户可见,而其他所有人都会看到原始标题。如果多个用户将其更改为相同的新标题,则新标题将成为数据库的“主视图”或“未过滤视图”,由数据库或应用程序启动。
我正在用 C# 编写代码,熟悉 SQL 并从 MongoDB 开始,但问题是关于概念以及它是否存在抽象、实现或设计模式。
如果您的“观点”完全分开,您可以为每个用户使用一个新数据库。
从您的问题来看,您似乎希望具有某种程度的相互联系。也许任何用户创建的文章都应该对所有人可见?是否只有在创建后才更改应该是私有的?原作者的更新怎么样?
我认为你只需要指定你需要的行为,并设计一个可以处理它的数据库。
一种解决方案是同时使用(文章)id 和用户 id 作为表的键。这样您就可以完全替换特定用户的内容。假设您要查找文章 123,如用户 456 所见,或者如果该用户没有编辑它,如用户 789 所见,或者如果该用户尚未编辑它,只需选择任何版本:
SELECT * FROM articles WHERE id = 123 ORDER BY user_id = 456 DESC, user_id = 789 DESC LIMIT 1