- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个看似简单的问题,但我想不出解决办法。我正在创建一个数据库设计来存储目标。目标是手动更新的,每次更新目标时我都需要一个条目。例如:
减掉 10 磅:
第 1 天:减掉 1 磅。第 3 天:减掉 2 磅。第 7 天:减掉 7 磅。
一旦总磅数达到目标数量,该目标就完成了。到目前为止,这是我的设计,但我发现了一些问题:
目标表:
GoalId - int - PK
UserId = int - FK
GoalTypeId = int - FK
标题 - 字符串
进度表:
ProgressId - int - PK
GoalId - int - FK
IntervalX - 字符串?
IntervalY - 字符串?
GoalAmount - 字符串?
这是最好的追踪方式吗?有没有人看到我可以构建的基本模式来完成这个?
我的另一个想法是可以对我所有的原始数据使用这种设计,并依靠存储过程和 View 以我想要的方式呈现数据吗?
编辑:
抱歉,我会详细说明一下。区间 X 和 Y 将是图表上的区间值。所以如果 X = 1 和 Y = 10 那么 x 轴将变为 1,2,3,... Y 将变为 10,20,30,...(这完全是另外一回事,我需要找出最好的实现的方式,但现在是次要的)
目标的类型很棘手,因为有很多我想做的。它们需要是一堆不同的数据类型:
目标示例:
每日阅读 - bool 值
减掉 10 磅 - int 或 float
节省 5000 美元 - 金钱或 float
达到销售配额 - float
学习一门新语言——字符串? (不确定跟踪这个的最佳方式)
等等..希望这有助于澄清一点
最佳答案
您肯定走在正确的轨道上。我唯一可以推荐的另一件事是研究关键值(value)指标,并在您的设计中使用这一原则。 KVI(或 KPI,因为它们在管理中被引用)是不同来源的值,这些值被转换成一组可以使用通用逻辑处理的通用值。这将有助于评估具有不同类型里程碑的目标的进展情况,对于复合目标,这是至关重要的一步。我将对此进行详细说明:
目标定义为在特定时期内达到特定里程碑或里程碑组合。里程碑是需要具有共同处理值或关键值指标的值。例如,减掉 10 磅,您可以使用“减重”键值类型,将 1 磅转换为 1 KVI。在您希望相互比较里程碑的地方,您可能希望调整权重。例如,我希望变得更健康、更有活力(目标)。为了做到这一点,我必须减掉 10 磅,从我的饮食中减少糖分,并且每天至少骑行 15 英里(里程碑)。比较这些值时,1 英里不等于 1 磅。更像是30英里。从我的饮食中减少糖分并不容易,但让我们将 KVI 称为“无糖日”,并给每一天不加糖的值相当于半磅。然后 KVI 是:
1 pound = 2 KVI
1 day without sugar = 1 KVI
1 mile = 1/30 KVI
如果我每天多骑 15 英里,我可能会原谅自己吃一点糖,所以这应该被纳入里程碑。换句话说,我可以达到我的自行车里程碑的 200% 和我的糖分里程碑的 75%,并且仍然实现我的总体目标。但是,我无法克服这一点,但仍然希望感觉健康。因此,我实现此目标的里程碑类似于:
Lose 10 pounds: KVIType="Weight Loss", Target=20KVI, cap=100%
No sugar for period (let's say 2 weeks):KVIType="Days without sugar", target=14KVI, cap=100%
Cycle 15 miles per day: KVIType="Cycling", target=7KVI, cap=200%
学习一门新语言就是一个很好的例子。这需要学习语言的语法细微差别,有时需要学习不同的字母表,学习全新的词汇,然后将这些都结合到日常使用中。所以这是一个例子:
Learn language grammar = 100 KVI, which you can work as a percentage of a grammar course completed, for example
1000 words vocabulary = 100 KVI
Conversation = 20 KVI
在此示例中,您会将每个里程碑的上限设为 100%。您可能背熟了语法并且掌握了 10,000 个单词,但是在您花一些时间说这门语言之前,您还没有学会它。
通过调整转换表中的权重,您可以开始以一种对您有意义的方式相互比较目标。我有能力减掉 10 磅,但没必要,所以我不会为此付出过高的代价。然而,我的 friend Luka 超重了 100 磅并且出于健康原因不得不超重,因此他的 KVI 值应该更高。您还可以扩展里程碑的组合方式以提供目标的进度指示(即使用所有 KVI 的总和、任何组件里程碑的平均或最小完成百分比)。
这就是我的想法:
CREATE TABLE KVIType (
KVITypeId INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
KVIName VARCHAR(50),
Description VARCHAR(200),
Multiplier DOUBLE PRECISION
)
CREATE TABLE Goal (
GoalId INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
UserId INT FOREIGN KEY REFERENCES User(UserId),
GoalName VARCHAR(50),
GoalStart DATETIME,
GoalComplete DATETIME,
TargetKVI DOUBLE PRECISION,
CurrentKVI DOUBLE PRECISION
)
CREATE TABLE Milestone (
MilestoneId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
GoalId INT FOREIGN KEY REFERENCES Goal(GoalId),
KVITypeId INT FOREIGN KEY REFERENCES KVIType(KVITypeId),
MilestoneName VARCHAR(50),
Description VARCHAR(200),
TargetKVI DOUBLE PRECISION,
CurrentKVI DOUBLE PRECISION,
TargetDate DATETIME,
CompletedDate DATETIME,
Cap INT)
CREATE TABLE Progress (
ProgressId INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
MilestoneID INT FOREIGN KEY REFERENCES Milestone(MilestoneId),
InputValue DOUBLE PRECISIoN,
KVIValue DOUBLE PRECISION,
OccuranceDate DATETIME
)
CREATE TABLE User (
UserId INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
UserName VARCHAR(100)
)
关于sql-server - 用于跟踪随时间推移的进度的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038393/
我正在开发一个在 gridview 中显示数据表内容的网页。而且,还有一个名为“发送到 Excel”的按钮。如果用户单击此按钮,该程序将开始生成报告(将数据表内容写入 excel 文件)。完成后,会出
理论:我在开始时做出了大约 100 个 promise ,然后使用 Promise.all() 解决它们。 这 100 个 promise 中的每一个依次进行一些异步 REST 调用,其响应可能主要不
在将文件添加到 python 中的 tar 存档时,是否有任何库可以显示进度,或者可以扩展 tarfile 模块的功能来执行此操作? 在理想情况下,我想展示 tar 创建的总体进度以及关于何时完成的预
有没有办法在 Xcode 中更改进度 View 栏的高度? 我正在使用 Xcode 4.3 并且需要一个垂直进度条。我旋转了栏,但现在无法更改高度并且显示为一个圆圈。 还有一种更有效的旋转进度条的方法
您好,我想在栏按钮项上制作未确定的进度 View 。完成后我想让它隐藏,但 hidden() 方法没有像 disabled(Bool) 这样的参数。任务完成后如何隐藏进度 View ? 这就是我要的
我有一个管理员控制的功能(导入数据库)可能需要一些时间才能完成,所以我想在这段时间内向用户显示一些反馈 - 例如进度条,或者只是一些消息。即使在长时间的 Action 中分部分发送页面也足够了。 在
我是一个进步的菜鸟,实际上在基本 block 方面有问题。 下面的问题是在我的 if else 语句中。它在 if, then, else then 时工作正常,但是当我想将多个语句放入 if 部分时
我有一个来自 rsync 命令的日志文件,其中有进度。运行此进度时,会更新同一行上的显示信息。当我捕获此命令的输出时,我得到一个在终端上使用 cat 正常显示的文件(重播所有退格键和重新编辑)但我希望
我需要处理一些数据,每 5-10 秒显示一个进度(我以 % 显示进度,但我也更新了一些图表)。我想在没有多线程的情况下做到这一点。 循环可能相当大。它可以从数百万开始,可以高达数十亿。 我可以使用 G
我正在致力于使用 PHP、HTML 和 JavaScript 制作半直播互联网 channel 。 您可以在此处查看演示:http://mariocreative.host/chanelko/inde
我实际上正在使用图像为“点点点”进度设置动画。我想通过使用下面的代码来使用不透明度。 动画将持续 3 秒,有没有更简单的动画方法? 最佳答案 这是一个快速版本,它会在控
我写了这个程序,它返回用户插入的最大整数。现在,我希望程序返回第二大整数。我创建了一个新变量(称为“状态”),该变量应该在每次循环重复时增加 1 个单位。然后,在中断条件发生后,我将在状态变量中后退
我正在制作一个需要保存进度的java游戏。但我不想让外部文件保存进度(像《我的世界》这样的游戏有一个存储文件的“保存”目录)。所以基本上我希望它存储一些数据,当用户退出并再次返回时可以检索这些数据。比
我正在使用 forEach_root 方法在 Android 上计算图像。 RenderScript RS=RenderScript.create(context); Allocation inPix
我希望这个进度 View 在完成后基本上“重置”。 尝试将计数重置为 0,它确实重置了,但是对于每次重置,计时器只会变得越来越快。 .h @property (nonatomic, strong) N
我不确定这是否可能。当您单击“提交”按钮时,似乎有一种方法可以做到这一点。 private Button getButton(String id) { return new AjaxButto
我找不到关于如何在迭代循环时更新 UIProgressbar 进度的明确答案,例如: for (int i=0;i
我正在尝试在 Xcode 中翻转 UIProgressView 180,同时我正在尝试缩放进度 View 。在我添加翻转之前缩放效果很好,然后缩放不再起作用。有什么建议么?谢谢! [self.seco
我目前正在通过评估 prepareForSegue 中的 segue.identifier 动态加载新 View : - (void)prepareForSegue:(UIStoryboardSegu
当任意进程发生时,我需要在屏幕上为用户提供状态。我无法知道需要多长时间。我怎样才能永远增加 progressView (当它接近 1 时它会减慢)。 最佳答案 This如果您愿意更换进度 View ,
我是一名优秀的程序员,十分优秀!