我正在编写某种资源管理系统。
资源是定义的一个实例。定义是元数据,基本上它包含属性。
这通常是我的数据库:
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 之前,因为“Approved”在“Pending”之前。
如果我们按照频率排序,CPU#1 会出现在 CPU#2 之前,因为 10 在 20 之前。
所以我每次都需要根据不同的列(intValue / stringValue / FloatValue / etc)进行排序,具体取决于属性的valueType。
有什么建议吗?
局限性:
PIVOT 目前是我们想到的唯一选择,但这实际上是不可能的,因为数据库很大,我需要尽可能快的查询。
非常感谢提前,
迈克尔。