2011-05-02 111 views
0

我最近的項目處理大量「分段」數據。 就像客戶註冊時一樣,數據存儲在「customer_temp」表中,當他被驗證時,數據被移動到「customer」表。數據庫設計:相同的表結構,但不同的表

在我開始拍攝電子郵件之前,就我認爲這是錯誤的事情發生橫衝直撞,你應該在行上放上一面旗幟,總是有可能我是白癡。 有人可以向我解釋爲什麼這是可取的嗎? 創建2個具有相同結構的表格,填充表格(表格1),然後在發生某些事件時將整行移動到不同的表格(表格2)。

我可以理解,如果表2將存儲檔案,很少使用的數據。

但我不明白表2是否存儲可以不斷變化的實時數據。

回顧: 任何人都可以解釋這種看似相反的方法是錯誤的(或正確的)嗎?

回答

2

如果業務邏輯中的「客戶」和「潛在客戶」之間存在顯着差異,將它們分離出數據庫是有意義的(您不需要始終記住用標誌查詢,例如)。特別是如果爲兩者存儲的數據可能在將來發生分歧。

它使報告更容易一些,並且減少了將這兩種類型的實體視爲同一個實體的可能性。

然而正如你所說,這看起來多餘,可能不會成爲大多數人設計數據庫的方式。

0

似乎有幾個解釋你爲什麼要「customer_temp」。

  1. 正如您所指出的,將用於存檔目的。爲了允許分析數據,但在這種情況下,應根據一些有趣的查詢來彙總歷史數據。然而,它使用實時數據聽起來不合理

  2. 正如oded指出的那樣,可能有一定的業務邏輯區分客戶和潛在客戶。

  3. 或者它可能是一項安全功能,除了存儲已批准的客戶外,還需要記錄所有嘗試註冊客戶的安全功能。

0

任何時候我看到一個permenant表名「customer_temp」,我看到一個紅旗。這通常意味着有人在解決問題時正在努力解決問題,並未提前考慮問題。

至於你描述的結構有一些優點。例如,可以對錶格進行不同的索引或放置在不同的文件位置以獲得性能。

但通常情況下,這些優點是不值得保持結構同步更改(添加到不同的表列搜索兩套依賴等)

的成本費用。如果你真的需要他們不同的處理,然後更好地處理,通過添加一個抽象層與視圖,而不是創建兩個單獨的模型。

0

我會按照你的建議使用一個表格設計。但是我只知道你發佈的這個案子。在決定設計師是一個白癡之前,我想知道兩張桌子設計可能會有哪些其他後果,有意或無意。

例如,它可以減少存儲新潛在客戶的進程與訪問現有客戶羣的進程之間的爭用。或者它可能允許某些列在客戶表中被限制爲非空,並且在潛在客戶表中被允許爲空。或者它可能允許嚴格控制對客戶表的寫入訪問權限,並且不可用於源自網絡的操作。

或者原始設計師可能根本沒有看到您和我在單一表格設計中看到的好處。

相關問題