我有一个代表特定类型操作的表格。让我们称之为[ACTION]。
一个操作可以由用户 ( [USER]) 执行,所以我有关系[USER] 1:N [ACTION]。
用户可以有孩子 ( [CHILD]),所以[USER] 1:N [CHILD].
问题开始于操作必须由用户执行的事实,但是它可以为用户或其子代之一执行。
如果每个用户总是有一个或多个孩子,我可以简单地做[CHILD] 1:N [ACTION]而不是[USER] 1:N [ACTION],因为在孩子身上我会找到执行操作的用户。
如果我只是 add [CHILD] 0...1:N [ACTION],那么 child 成为 action 表中的一个可选字段,可能会添加一个不属于添加到 action 的用户的 child。
这种情况通常称为什么?
如何克服这个问题或者我能走的最好的方法是什么?
我不想在代码中检查这个,仅数据库(SQL Server 2012)解决方案将是完美的。
行动是一种投资。用户将始终接受投资,但他/她可以决定他/她是为他/她还是为他/她的孩子之一投资。在这种情况下,孩子总是未成年。如果孩子足够大,可以自己进行投资,那么它将注册并成为用户。所以这就是为什么孩子不能成为用户的原因。他们需要保持两个不同的实体。
所以我有点需要两个彼此保持稳定的关系。我需要知道谁(用户)采取了行动(投资),我需要知道为谁(用户或他/她的孩子之一)采取了行动(投资)。
我正在寻求一种解决方案,即不能为与用户无关的孩子采取行动(投资)。换句话说,父亲/母亲只能为他/她或他/她的孩子投资,不能为别人的孩子投资。