我想创建项目,其中每个项目可以有多个属性的数据库。我也有一个容器表(容器可以容纳物品)。每个容器都有多个必需的属性。项目属性必须符合容器属性的要求才能使项目适合容器。SQL - 动态属性
注:新的属性可以随时加入。
Example:
Item 1 Attributes
Color: Red
Material: Aluminum
Length: 100
Width: 200
Rating: 4
Container 1 Required Attributes:
Color=Red
Material=Aluminum
Length<105
Width<300
Rating=4
我想找到所有适合容器的项目。如果Container Required Attributes表中有一个用于比较器的字段,则可以获取容器1的所有必需属性,然后根据比较器字段动态生成查询。我不是数据库专家,但这似乎不是一个好的设计。
另一种选择是为具有多个容器所要求的属性表 - 一个用于最大值,一个用于最低值,一个用于同值数字,一个同值串等
Example:
Container 1 Maximum Attributes
Length: 105
Width: 300
Container 1 Minimum Attributes
<none>
Container 1 Equal Attributes (Float)
Rating: 4
Container 1 Equal Attributes (String)
Color: Red
Material: Aluminum
在这种情况下,我没有动态生成查询,但这似乎并不像最好的解决办法,因为我最终将需要为> =和< =表。
有没有人有一个更好的设计有什么建议?
“'Steel'”是否小于''Wood'“,或者仅仅是数字属性的排序约束? –
订购约束仅适用于数字属性。数字属性可以是<, >,<=, > =,==或!=。所有其他值可以是==或!=。 – mtb81