2010-12-11 86 views
4

我目前正在忙於實施基本資產管理系統。它不會很複雜。只需要跟蹤任何資產的名稱,序列號,零件號和類型等等。然而,我所遇到的問題是我也想整合書籍。不幸的是,書籍的結構與普通資產(例如標題,作者,isbn代碼等)完全不同。資產管理數據庫設計

我想從社區瞭解他們認爲最好的設計。將書籍合併到資產管理中(如果是這樣,數據庫設計應該如何查看),還是應該編寫完全獨立的獨立庫模塊(可能有一些功能可將圖書導出到資產管理系統[使用較少/其他字段])。

謝謝!

編輯:別的東西,可能是使拍攝畫面的動態,這樣用戶可以指定字段和值。然後這可以作爲XML存儲在數據庫中。但他不會是我喜歡的方式。

編輯2:我忘了提及,我很受我可能使用的技術的約束。這些是MySQL,GWT,Hibernate和Spring(沒有春季交易)。

回答

1

一種方法可能是使用文檔樣式的非sql數據庫(如Mongo)來存儲資產。這樣,每個不同類型的資產可以輕鬆擁有自己的一套領域,而不需要額外的表格等

基本上我想象是僞代碼類似於:

class Asset 
{ 
    int AssetNumber; 
    int AssetType; 
    string Description; 
    // etc. 
} 
class BookAsset : Asset 
{ 
    // book-specific fields 
} 
class ElectronicsAsset : Asset 
{ 
    // electronics-specific fields 
} 
// etc. 

所以額外的資產類型可以只是額外的派生類。然後將每個資產作爲自己的獨特文檔寫入文檔數據庫,並通過資產編號檢索(或根據其包含的字段等進行搜索)或名稱或存儲。

這將爲您提供一個快速而簡便的系統,具有您在跟蹤其他資產或關於現有資產的其他信息時可能需要的靈活性。

根據您的編輯編輯:用戶定義的字段應該可以正常工作。您可以將它設置爲對象上的某種鍵/值字典,或者如果使用更動態的語言,甚至可以將這些字段添加到對象本身。 「基礎資產」將由絕對必需的字段組成,其餘部分可以更鬆散地定義,有條件地要求,用戶指定等。

+0

感謝您的回答。不幸的是,我非常關注我可能使用的技術(將在問題中提及它)。這些是MySQL,GWT和Hibernate。 – 2010-12-11 16:07:25

+0

@Nico Huysamen:這當然是一個恥辱。爲了獲得這種靈活性,特別是用戶定義的字段,最好的辦法可能是將它作爲XML存儲在文本塊中。這對於關係數據庫來說並不理想,但它可以工作。如果你談論的是相對較少的數據(總共有多少資產?),那麼它應該沒問題。將「required」字段分解爲其他列以進行索引等。並嘗試將整個事件封裝在序列化/反序列化抽象中以便於使用。不知道如何搜索用戶定義的字段,但如果需要的話... – David 2010-12-11 16:13:23

+0

這就是我所害怕的。該系統應該是可擴展的。目前,它應該爲擁有大約6000名員工的公司工作(這樣您可以量化資產數量)。但是,理論上我希望它可以適用於任何規模。我還想到了這樣一個想法,即可以爲必填字段顯示明確的列,然後只有用戶在XML中定義的列。但正如你所說,它會讓尋找一本書的作者非常困難。 – 2010-12-11 16:19:51

1

將資產的一般概念與您希望能夠包含的每種資產的具體細節。通常情況下,這將採用主資產表格的形式,對於您希望包括的每種不同類型的資產(即書籍,硬件,傢俱)使用不同的表格。結構可能是這樣的:

Asset(AssetId, Description, Comments) 

HardwareAsset(HardwareAssetId, AssetId, SerialNumber, ...) 

BookAsset(BookAssetId, AssetId, ISBN, Publisher, Author, ...) 

AssetId兩個HardwareAssetBookAsset是一個外鍵Asset表。這樣,您可以跟蹤不同的資產,並在重要時將它們分組在一起。


編輯:或者,你可以創建一個鍵 - 值表存儲爲單個對象的值,這可能是這樣的:

AssetValue(AssetValueId, AssetId, Key, Value) 

然而,這是一個繁瑣的解決方案,同時還提供可搜索的字段,將快速膨脹你的數據庫。爲了緩解問題,您可以根據您的要求限制字段大小。我不建議在單個字段內序列化字典,因爲這會使數據庫膨脹得更厲害。

+0

感謝您的回答。這將在理想的世界中發揮作用,但不幸的是,我不想將系統與特定類型的資產聯繫起來。我猜測一家公司可能需要的所有資產類型是不可能的。該系統的要點是成爲一種適合所有人的解決方案。 – 2010-12-11 16:17:23

+0

@Nico:我編輯了我的帖子。 – 2010-12-11 17:27:11

1

從技術約束我建議保持模塊分開。

+0

確實!謝謝回覆。 – 2010-12-14 10:41:42

1

在主表上可以標記它是什麼類型的資產。因此,如果它是 是書籍資產,它們可以將外鍵鏈接到書籍項目。這種方式不會浪費那些沒有這些物品的資產。