2010-07-09 36 views
2

我最近被要求重寫預訂系統,而且客戶的表現不盡如人意。我發現數據庫模式/對象映射技術曾經很不尋常,並且想知道是否有其他人遇到類似的東西。這是一種常見的數據庫設計/ OO Mapping技術嗎?

舊系統使用了大約25個類來處理客戶,約會和訂單等事情,每個類都有一個稱爲'class_id'的獨特屬性。

查看數據庫時,每個類都有一個相應的表,但是它們都不包含任何外鍵字段,儘管它們必須以某種方式鏈接,因爲應用程序允許客戶端執行各種級別的報告。

經過進一步調查,我注意到數據庫包含另一個名爲'application_hierarchy'的表。

此表包含4列其映射出不同的記錄之間的關係:

  1. 類標識碼 - 哪些鑑定的記錄類型
  2. OBJECT_ID - 其中其對應的表中引用的記錄的ID
  3. parent_class_id - 標識相關記錄的記錄類型
  4. parent_object_id - 引用其對應表中的父記錄的ID

例如,如果顧客5具有ID號3名不同的順序10,11和12:

Customer類物ID 4 Order類是ID 7 所以:

class_id | object_id | parent_class_id | parent_object_id 
7   10   4     5 
7   11   4     5 
7   12   4     5 

對於應用程序中的每個對象記錄,此表中會有大量的行,並且這些行將與大型連接查詢組合以創建報告。

試圖將這些數據導入到新模式中一直是一個絕對的噩夢,主要是因爲原作者忽略記錄哪個類是由哪個id號標識的!

這是一種常用的技術,還是原來只是PITA的開發者?

任何意見/讚賞。

謝謝。

回答