2

我有基於Flex的消費者website,我想根據隨機標準和其他標準更改各種外觀和感覺類型設置,然後跟蹤這些數據以瞭解銷售量最高的結果。用於跟蹤網站中的隨機設置以進行市場營銷的數據庫模式

例如,我可能會完全切換出主頁,根據人來自何處顯示不同的東西。我可能會顯示或隱藏某些功能,或更改某些文本。我可能會改變的東西尚未定義,可能會變得相當複雜。

我想設計最靈活的數據庫模式,但它必須高效且易於搜索。目前我有一個'SiteVisit'表,其中包含有關每個不同訪客的信息。

我想在每個設置的列與單個表格之間找到合適的平衡點,並且只包含鍵值對的表格。

有什麼建議嗎?

回答

3

好的,這是非常棘手的。究其原因,我說,是因爲你提出了兩個要求:

  • 輕鬆庫模式,讓您可以存儲各種數據和改變什麼會動態保存後
  • 固定數據庫架構,這樣你就可以查詢數據有效

解決方案將是一個妥協。你必須明白這一點。

讓我們假設你有用戶表:

+---------------- 
| User 
+---------------- 
| UserId (PK) 
| ... 
+---------------- 

1)XML二進制大對象的方法 您可以將數據作爲一個博客(大XML)保存到列表(實際上是財產袋),但查詢(過濾)將是一場噩夢。

+---------------- 
| CustomProperty 
+---------------- 
| PropId (PK) 
| UserId (FK) 
| Data of type memo/binary/... 
+---------------- 

好處是您(業務邏輯)擁有架構。這同時也是該解決方案的缺點。另一個巨大的缺點是查詢/過濾將非常困難和慢!

2)每個屬性表 另一個解決方案是爲每個屬性(主頁等)製作一個特殊的表。該表將包含每個用戶的價值(基於FK的用戶表格)。

+---------------- 
| HomePage 
+---------------- 
| HomePageId (PK) 
| UserId (FK) 
| Value of type string 
+---------------- 

這種方法的優點是您可以快速查看該屬性的所有值。缺點是你將有太多的表(每個自定義屬性一個),並且你會在查詢操作中經常聯接表。

3)CustomProperty表 在此解決方案中,您有一個表包含所有自定義屬性。

+---------------- 
| CustomPropertyEnum 
+---------------- 
| PropertyId (PK) 
| Name of type string 
+---------------- 

+---------------- 
| CustomProperty 
+---------------- 
| PropId (PK) 
| PropertyId (FK) 
| UserId (FK) 
| Value of type string 
+---------------- 

在此解決方案中,您將所有自定義屬性存儲在一個表中。您還有一個特殊的枚舉表,可以讓您更高效地查詢數據。缺點是你會在查詢操作中經常連接表。

請自行選擇。我會根據你的工作量決定在2到3之間(最可能是3,因爲它更容易)。

1

這是使用NoSQL數據庫的經典案例。它可以用來輕鬆存儲各種鍵值對,而不需要任何預定義的模式。

相關問題