我有一张users桌子。我想跟踪我所做的所有更改,姓名,电话等。我想创建一个额外的表changes来存储用户的id上一个和下一个版本。我保留所有users记录。这是一个好方法吗?

我也想过使用单独的表来记录历史,见下文

或者,使用单个表并从timestamp或跟踪其版本id(因为它是增量),但我认为这是一个糟糕的解决方案。

谁能向我解释以下两个查询之间的区别?尽管它们看起来相同,但结果却不同。
select concept.concept_id, concept.PARENT_ID
from ebti_thes_concept_v concept
start with PARENT_ID = '11025'
connect by parent_id = prior concept_id
and exists (..)
Run Code Online (Sandbox Code Playgroud)
在第二个中,exists谓词从connect by子句移动到where子句。
select concept.concept_id, concept.PARENT_ID
from ebti_thes_concept_v concept
where exists (..)
start with PARENT_ID = '11025'
connect by parent_id = prior concept_id;
Run Code Online (Sandbox Code Playgroud) 我有以下设计。每个用户都有它自己的联系人,它自己的主机并将它们分配给一个只属于他的域。
我想确保您分配给域的主机属于该域分配给的用户。
这是我必须在我的应用程序逻辑中确保的东西吗?
如果我设置domains.user_id foreign key为参考host.user_id,user_id.id它会消除我的问题吗?

顺便说一句,谁能建议我为我的架构设计更好的设计?