あなたは確かに正しい方向に進んでいます。私がお勧めできる他の唯一のことは、キーバリューインジケーターを調べ、この原則を設計に使用することです。KVI(または管理で参照されるKPI)は、異なるソースの値であり、共通のロジックを使用して処理できる共通の値のセットに変換されます。これは、さまざまなタイプのマイルストーンを持つ目標の進捗状況を評価するのに役立ちます。複合目標の場合、これは重要なステップです。これについて少し詳しく説明します。
目標は、特定の期間内に特定のマイルストーンまたはマイルストーンの組み合わせに到達することとして定義されます。マイルストーンは、共通の処理値、つまりキー値インジケーターを持つために必要な値です。たとえば、10ポンドを失う場合、1ポンドを1 KVIに変換する、「減量」のキー値タイプを持つことができます。マイルストーンを相互に比較したい場合は、重みを調整することをお勧めします。たとえば、私はより健康になり、より元気になりたい(目標)。これを行うには、10ポンドを失い、食事から砂糖を減らし、1日あたり少なくとも15マイル(マイルストーン)を循環させる必要があります。これらの値を比較すると、1マイルは1ポンドに相当しません。30マイルのように。私の食事から砂糖を切るのは簡単ではありませんが、KVIを「砂糖のない日」と呼び、砂糖のない毎日に0.5ポンドに相当する値を与えましょう。
1 pound = 2 KVI
1 day without sugar = 1 KVI
1 mile = 1/30 KVI
1日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ポンドを失う余裕がありますが、そうする必要はないので、私はそれに高すぎる値札を付けません。しかし、私の友人のルカは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)
)