5

我有一個需要將某些項目分配給訪客的場景。用於存儲和評估規則表達式的數據庫設計

GuestTable has columns like 
1. Guest ID 
2. GuestType 
3. Age 
4. Height 
5. Gender 

ItemTable has columns like 
1. ItemID 
2. Item Name 

每個項目是基於項目的可用性以及客人的屬性,即年齡組或高度範圍等

如賣給客人。 每週一和週二,男性水療客人以及酒店客人的身高大於5英寸且小於5英尺5英寸的時候,酒店將於下午2點至6點和下午6點至8點提供一件物品。

由於過濾條件的數量很大,並且可由最終用戶配置。系統應該具有足夠的可擴展性以適應新的過濾標準,我應該如何管理這些規則。將這些規則作爲表達式存儲在數據庫表中可以嗎?如何爲這種情況建模數據庫表?

我應該考慮使用一些規則引擎嗎?

+1

聽起來您正在創建自己的表達式構建器,因此您需要向用戶展示所有可能的列和運算符列表(+, - ,<等)。我懷疑你需要將它轉換成有效的WHERE條件,將它作爲文本存儲,並使用動態SQL來生成結束查詢。或者,您可以創建一個包含大量參數的SSRS報告以顯示有效項目的報告。只有評論,因爲我希望有人有更好的建議。 – 2013-05-05 20:34:52

+1

沒有關於如何應用規則的設計,那麼您如何獲得關於如何存儲規則的答案。特定於某個項目的規則是什麼?真的,你有一件你不會在5'5以上賣給客人的東西?庫存如何?不能出售你沒有庫存的物品。缺少這麼多東西。 – Paparazzi 2013-05-05 20:36:22

+0

@Blam - 鞋跟高跟鞋堆放? – APC 2013-05-06 06:56:14

回答

1

由於APC在評論中寫道,決定是否使用業務規則引擎並不是您應該信任的一羣陌生人在互聯網上。

但是......您的情況相對簡單且受到限制。它似乎只是一個步驟,而不是一個工作流程 - 「如果客戶滿足標準x,提供產品y」,而不是「所有客戶匹配標準x必須得到經理批准」。它似乎僅限於數據庫 - 不調用Web服務來決定產品是否合適。

在此基礎上 - 不,不要選擇規則引擎。他們是大型複雜的機器,只爲自己付出比您所描述的更大的問題。

我建議使用.Net「查詢示例」庫來允許您的用戶創建過濾條件;有幾種商業選擇,例如EasyQuery

+0

謝謝,「按實例查詢」可以舉幾個例子嗎? – 2013-07-18 17:22:28

+0

我發現只有一個 - 曾經有一個來自Telerik,Crystal也有,但找不到鏈接... – 2013-07-19 10:54:26

1

你應該考慮使用類似Flee的東西,並避免使用數據庫作爲規則引擎。客戶端解析將會更快,並且不會給您的數據庫服務器帶來太多負載。只需讀取值,然後使用Flee解析表達式。它是一個很棒的評估引擎。試着讓我們知道你的想法。