【问题标题】:Storing precedence of operations in database? Patterns?在数据库中存储操作的优先级?模式?
【发布时间】:2014-05-02 10:31:01
【问题描述】:

我需要在数据库中存储操作列表及其优先级或顺序。 我不确定是否将具有最高优先级的操作存储为零或其他。 换一种说法, 优先操作的顺序是否应该存储在数据库中:

'0 1 2 3 4 5 6'  

'6 5 4 3 2 1 0'

表数据结构:

[operationName, precedence]

此外,用户可以从列表中的 UI(WPF 应用程序)重新排序它们并点击“保存”,在这种情况下,我需要更新它们。他还可以创建一个新操作并将其插入到 UI 中的列表中,然后点击 SAVE ...,这也应该根据 UI 中的顺序将操作存储在数据库中。

编辑:
其他事情是他们甚至可以从需要更新到数据库的 UI 中删除或删除它们。 有没有围绕这个的最佳实践或模式?

谢谢

【问题讨论】:

    标签: c# sql wpf


    【解决方案1】:

    这很简单。看起来您有一个需要保存的项目列表。您还需要按用户定义的顺序对项目进行排序。用户可以更改项目的顺序,可以删除项目等。您希望将其保存到数据库中。

    假设您在存储您的项目的数据库中有一个表。刚才还没有存储用户定义的订单。您需要向类型添加单个属性(以及向关系数据库的表添加单个列)以反映订单。

    id | operation_name | user_order
    --------------------------------
    

    因此,当用户重新排序项目时,您将所有项目保存回数据库,或者执行 UPDATE 语句并更新 user_order 列。

    基本上,这就是你刚才所拥有的。当你查询你的数据时,你可以使用这个 SQL

    Select ...
    From ...
    Order by user_order
    

    或在 LINQ 中相同

    【讨论】:

      【解决方案2】:

      这看起来像一个审计跟踪工具。如果这些序列代表一些日期,那么 Martin Fowler 的事件溯源可以向您展示一些模式: Event Sourcing

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-30
        • 2023-04-10
        • 2014-10-25
        • 1970-01-01
        • 1970-01-01
        • 2014-09-30
        • 2021-03-22
        • 2021-05-22
        相关资源
        最近更新 更多