关系数据库不是您最好的首选。
为什么?
您希望您的所有编辑器都将更改传递给您的播放器。
您的播放器实际上是所有这些编辑器的服务器。您的播放器需要多个打开的连接。它必须监听所有这些连接以进行更改。它必须显示这些更改。
如果更改非常大,您可以使用混合解决方案,编辑器会保留更改并通知玩家。
无论哪种方式,编辑都必须通知他们的玩家他们有更改。这比玩家试图发现数据库中的变化要简单得多。
更好的设计是一个服务器,它接受来自编辑器的消息,持久化它们,并通知玩家。该服务器既不是编辑器也不是播放器,而只是一个确保所有消息都得到处理的代理。它接受来自编辑和播放器的连接。它管理数据库。
有两种实现。服务器是玩家。服务器与播放器是分开的。服务器的设计没有改变——只有协议。当服务器为播放器时,服务器直接调用播放器对象。当服务器与播放器分离时,服务器会写入播放器的套接字。
当播放器是服务器的一部分时,当从编辑器接收到消息时直接调用播放器对象。当播放器分离时,一个小型阅读器从套接字收集消息并调用播放器对象。
播放器连接到服务器,然后等待信息流。这可以是来自编辑器的输入,也可以是对服务器保存在数据库中的数据的引用。
如果您的消息流量足够小以至于网络延迟不成问题,编辑器会将所有数据发送到服务器/播放器。如果消息流量太大,则编辑器写入数据库并将仅包含数据库 FK 的消息发送到服务器/播放器。
请在您的问题中澄清“如果编辑器在通知时崩溃,则播放器会永久混乱”。
这听起来像是播放器服务的糟糕设计。除非它没有从各个编辑那里得到状态,否则它不能“永远搞砸”。如果它从编辑器获取状态(例如,但试图反映该状态),那么您应该考虑一种设计,玩家只需从编辑器获取状态并且不会“永久混乱”。