类似审计的资产跟踪的模式定义(实体框架)

时间:2013-10-05 04:51:06

标签: c# database-design entity-framework-5

我在设计架构中的实体之间的关系时遇到了问题。问题是每个Asset(投影仪,笔记本电脑等......)可能会改变目的/位置(以及其他内容),如果我想获得最新这些价值目前涉及大量加入等......为了跟踪这些变化,我已经定义了一个类似的架构:

enter image description here

意味着AssetInstance表示使用Asset,即被借出,送去修理。每个AssetInstance负责记录Asset的位置,架子(如果适用)和目的。但是,如果我使用这种方法并且我希望获得Asset AssetID = 1的当前用户,我需要加入Asset,AssetInstance然后按 Date 排序并选择顶部一个,然后与User加入以获取他们的名字。

理想情况下,我希望Asset能够保留与之关联的最新目的,位置,货架和用户。我意识到这可以通过将这些关系添加到Asset然后在我的代码中为资产更新Assets列创建新的AssetInstance后实现。

对我而言,这似乎远非理想,我想知道是否有更好的方法。

谢谢:)

1 个答案:

答案 0 :(得分:2)

我认为你可以从另一个角度看到设计 让我们说AssetInstance is a重新分配货架,位置和目的。所以我更喜欢调用表TransactionRelocation-Transaction
作为货架,位置和目的是Asset的自然属性,我们将在资产表中将它们关联起来。 最后位置,货架和目的保存在资产表中的这些外键中 relocation-transaction表包含重定位的历史记录,因此我们将在资产重新定位时插入一行(甚至可能在资产创建的第一位)。
我认为为交易建立一个基表是个好主意,可能需要对资产进行进一步的跟踪和报告,例如资产不在订购,销售...... 草案模型将是这样的:
enter image description here 希望这会有所帮助。