私はある種の資源管理システムを書いています。
リソースは定義のインスタンスです。定義はメタデータであり、基本的にはプロパティが含まれています。
これは一般的に私のDBです:
TypeDefinition
id name
===============
1 CPU
PropertyDefinition
id name typeDefinitionId valueType
================================================
1 frequency 1 int
2 status 1 string
TypeInstance
id name typeDefinitionId
=================================
1 CPU#1 1
2 CPU#2 1
PropertyInstanceValue
id propertyDefinitionId typeInstanceId valueType intValue StringValue FloatValue
========================================================================================
1 1 1 int 10
2 2 1 string Pending
3 1 2 int 20
4 2 2 string Approved
要件:
特定のプロパティ値に従ってすべてのリソースを並べ替えます。
例:すべてのリソースをステータスに従って並べ替えます->「承認済み」は「保留中」の前にあるため、CPU#2はCPU#1の前に表示されます。
頻度で注文すると、10は20より前なので、CPU#1はCPU#2より前に表示されます。
そのため、プロパティのvalueTypeに応じて、毎回異なる列(intValue / stringValue / FloatValueなど)に従って並べ替える必要があります。
なにか提案を?
制限:
現在、PIVOTは私たちが考えている唯一のオプションですが、DBが巨大であり、クエリをできるだけ高速にする必要があるため、実際には不可能です。
よろしくお願いします、
ミハル。