我是数据建模的新手,我无法想出能够存储逻辑的数据模型。
数据模型将用于存储位置和营销属性。
当客户访问公司的某个网站时,他们会输入他们的邮政编码,根据他们的位置,这些属性将用于安排在线商品目录。
项目目录将与数据库分开,因此数据模型将仅生成用于排列项目的属性的输出。目录中的每个项目都具有诸如项目编号,价格,条件,制造和营销细分(年龄:成人,教育:学院,收入:高等)等属性。
**For example:**
**Input zip code**: 90210
**Output Attributes**: (ItemNumber:123456, Segment:HighIncome, Condition:New)
这个例子说的是zip 90210,首先显示项目#123456,然后是所有带有HighIncome段的项目,然后显示所有未翻新的项目。
到目前为止,我有2个表有多对多的关系,我想添加一个额外的表,以便我可以合并逻辑(AND& OR)。
第一个表格中包含用户所在公司网站的位置和其他信息。
Table Location(
Location_Unique_Identifier number
ZipCode varchar2
State varchar2
Site varchar2
..
)
第二个表将具有属性类型(制造,价格,条件等)和属性值(IBM,10.00,翻新等)。
Table Attributes(
Attribute_Unique_Identifier number
Attribute_Type varchar2
Attribute_Value varchar2
..
..
)
在这两个表之间分解多对多关系我会添加逻辑表。这个表应该允许我输出
item#123456 AND (item#768900 OR Condition:New)
我对逻辑表的问题是试图使其足够灵活,以处理未知数量的AND / OR并处理分组。
答案 0 :(得分:0)
这是将两个(多个)表一起加入AND / OR / XOR或其他逻辑的典型场景。
最好的选择是构建一个meterailized视图,将多个表中的属性一起归一化为一个表(此表称为视图)。
在您的情况下,视图可能是:
table location_join_attributes{
number,
zipcode,
state,
site,
Manufacture,
Price,
Condition,
......
}
然后,您将在此表/视图上操作逻辑语句(从您的示例中修改):
item#123456 OR (item#768900 AND Condition:New) AND (more condition)
如果我们没有这个视图,这个操作将首先获取所有具有项目#768900的记录,然后在第二个表中过滤以知道它们中的哪个具有条件:new。完成需要很长时间。如果情况复杂,表现很糟糕。
对于快速查询,您应该在您操作的列上构建二级索引。
在可伸缩性方面,如果业务逻辑发生更改,您可以构建一个新视图,旧视图将被丢弃。原始表不会改变,这也是物化视图的优点之一。