私は違いについて一般的な直感を持っていますが、データベースがグローバル状態と異なる理由を正確に特定することはできません.
「グローバル状態」の単純な定義により、データベースは通常、少なくともアプリケーショングローバルです。実行中にデータベースを変更するアプリを使用することも考えられますが、一般的にはグローバルに使用されます。
状態に関しては、データベースに状態が含まれている場合について議論する必要はないと思います。
では、データベースが「悪い」種類のグローバル状態と異なるのはなぜでしょうか?
この質問は、オブジェクトがその親について知る必要がある密結合を回避しようとしているために発生しました。
たとえば、戦略ゲームをプレイしていて、ユニットの 1 つに、敵ユニットにダメージを与えると、そのユニットの所有者が x ゴールド (x は与えられたダメージの量) を失うという能力があるとします。
通常の状況では、ユニットは自分の所有者が誰であるかを知る必要はありません。所有者はユニットを制御する人なので、所有者はユニットにコマンドを発行するだけで、ユニットはその役割を果たします。
ただし、外部要因により、ユニットの所有者が誰であるかを調べる必要が生じます。この場合、攻撃しているユニットは攻撃しているユニットを知っているので問題ありません。しかし今では、攻撃しているユニットを知ることに加えて、所有者が 5 ゴールドを失うようにするために、所有者をさらに知る必要があります。
元の質問から意図した以上に逸脱してしまいましたが、ゲームの状態がリレーショナル データベースに保存されている場合、ユニットが所有者を直接知る必要なく、ターゲットの所有者を照会するのは簡単です。そのようなデータベースがオブジェクトである場合、そのデータベースはすべての状態を完全に把握しており、さらに変更可能であるという意味で、そのデータベースを神のオブジェクトと呼びます。
では、データベースがグローバルな状態と異なるのはなぜでしょうか?