4

私は現在、基本的な資産管理システムの実装で忙しくしています。それほど複雑ではありません。名前、シリアル番号、部品番号、タイプなどの資産を追跡するための単純なものです。しかし、私が抱えている問題は、本も組み込みたいということです。残念ながら、書籍は通常のアセットとは構造が大きく異なります (たとえば、タイトル、著者、ISBN コードなど)。

コミュニティがどのデザインが最適だと考えるかについて、コミュニティからの洞察を求めています。資産管理に本を組み込むか (そうであれば、データベースの設計はどのように見えるべきか)、または、完全に分離した独立したライブラリ モジュールを単純に作成する必要があります (おそらく、本を資産管理システムにエクスポートする機能を備えた [少ない/他のフィールドを使用する] ]))。

ありがとう!

編集:他に可能なことは、キャプチャ画面を動的にすることです。これにより、ユーザーはフィールドと値を指定できます。これは、データベースに XML として格納できます。しかし、彼は私の好みの方法ではありません。

編集 2:言い忘れていましたが、私は使用する可能性のあるテクノロジに非常に縛られています。これらは、MySQL、GWT、Hibernate、および Spring ( Spring トランザクションなし) です。

4

4 に答える 4

1

はい、メインテーブルで、アセットのタイプにフラグを立てることができます。したがって、それが本の資産である場合、外部キーはそれを本のアイテムにリンクできます。このようにして、これらのアイテムを持たないアセットのスペースを無駄にすることはありません。

于 2012-05-28T00:40:54.993 に答える
1

アセットの一般的な概念を、組み込みたい各タイプのアセットの詳細から分離することは理にかなっています。通常、これはマスター アセット テーブルの形式を取り、含めるアセットの種類 (本、ハードウェア、家具など) ごとに異なるテーブルを使用します。構造は次のようになります。

Asset(AssetId, Description, Comments)

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

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

AssetIdと の両方でHardwareAsset、テーブルBookAssetへの外部キーです。Assetそうすることで、さまざまなアセットを追跡し、必要なときにそれらをグループ化できます。


編集: または、キーと値のテーブルを作成して、個々のオブジェクトの値を格納することもできます。これは次のようになります。

AssetValue(AssetValueId, AssetId, Key, Value)

ただし、これは扱いにくいソリューションであり、検索可能なフィールドを提供する一方で、データベースがすぐに肥大化します。問題を軽減するために、要件に応じてフィールド サイズを制限できます。単一のフィールド内で辞書をシリアル化することはお勧めしません。データベースがさらに肥大化するためです。

于 2010-12-11T16:12:14.710 に答える
1

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.

したがって、追加のアセット タイプは、追加の派生クラスにすぎません。次に、各資産は独自の個別の文書として文書データベースに書き込まれ、資産番号 (または含まれるフィールドなどに基づいて検索) または名前、または保管方法によって取得されます。

これにより、追加の資産や既存の資産に関する追加情報を追跡する際に必要となる柔軟性を備えた、迅速かつ簡単なシステムが得られます。

編集に基づいて編集:ユーザー定義フィールドはこれで問題なく機能するはずです。オブジェクトのある種のキー/値ディクショナリとして設定することも、より動的な言語を使用している場合はオブジェクト自体にフィールドを追加することもできます。「基本アセット」は、絶対に必要なフィールドで構成され、残りはより大まかに定義したり、条件付きで必須にしたり、ユーザー指定したりできます。

于 2010-12-11T16:02:50.137 に答える
1

技術的な制約から、モジュールを分離しておくことをお勧めします。

于 2010-12-14T10:40:56.290 に答える