0

我有一个应用程序可以评估用户提交并根据各种公式为每个提交分配一个点值(所有人的统一费率,第一个“x”条目的统一费率,第一个“x”条目的降级值)。公式基于提交的类型(提交的类别决定了点值和用于计算所述值的公式)。

问题是客户希望历史地存储这些公式,以便对于任何给定的记录,他们可以查看用于计算点值的公式。

关于如何实现这一点,我有一些想法,但似乎没有一个是一个好的选择:

1) 将公式存储在 PHP 代码中并注释掉过去的公式,确保记下生效日期范围。

2) 每次更改公式时创建一个视图,并更新代码以使用新视图。请注意视图名称或代码中的生效日期。

3) 将公式存储在公式表中,为每个公式提供一个唯一的 ID,以及日期有效/停用值。

是否有另一种或更好的方法来实现这一目标?如果更新公式,前两个需要编写/更改大量代码,第三个需要解析并将公式存储在数据库中(我试图避免的事情)。

想法?

4

2 回答 2

0

I would certainly store the results of the formulae in a history table at the very least. Whether you need to store the formulae themselves or not depends on how many formulae you have and how they vary. Your basic table might look something like this

calculation_id
record_id
points
formula_ref

If you have, say, 6 fixed formulae of which the active formulae are some combination of these then your "formula_ref" might be a unique string per formula (i.e. "first10"). If your formulae vary more than that, or the values vary (i.e. "first x" might change from "first 5" to "first 10" etc) then you might need a separate table for the formula combinations and link to them from the history table using a foreign key. The same goes if you need to allow dynamic adding/editing of the formulae from the app (via an admin GUI or similar) as opposed to manual changes in the code.

Your schema will also depending on how you intend to use the data. If you are only ever interested in the history per record, the basic schema as above with a text based formula_ref field would probably suffice (with an index on the record_id).

Feel free to post back your specific schema plan for more comment...

于 2012-03-01T19:35:20.977 回答
0

假设您指的是存储实际代码,那么正确的位置是在GitSubversion (SVN) 等源代码管理器中。您可以使用特定公式标记发布。这样,每当您发布新公式时,它都会被标记。您还可以跟踪任何微小的变化。这意味着在任何时候,您都可以检索旧公式进行审查。

于 2012-03-01T15:47:00.907 回答