2010-12-11 3 views
4

현재 자산 관리 시스템을 구현하는 중입니다. 그다지 복잡하지는 않습니다. 이름, 일련 번호, 부품 번호 및 유형 등으로 자산을 추적 할 수있는 무언가가 있습니다. 그러나 문제는 제가 책을 통합하고자하는 것입니다. 유감스럽게도 도서는 일반적인 저작물과 매우 다른 구조를 가지고 있습니다 (예 : 제목, 작가, ISBN 코드 등).자산 관리 데이터베이스 디자인

커뮤니티에서 가장 좋은 것으로 생각하는 디자인에 대한 의견을 듣고 싶습니다. 저작물을 자산 관리에 통합하고 (그렇다면 데이터베이스 디자인을 어떻게 보이게 할 것인가?) 또는 완전히 독립적이고 독립적 인 라이브러리 모듈을 작성해야합니다 (어쩌면 자산 관리 시스템에 책을 내보내는 기능이있을 수도 있습니다. ]).

감사합니다.

편집 : 가능한 다른 뭔가 캡처 화면이 동적으로 만들 것입니다, 그래서 사용자가 필드와 값을 지정할 수 있습니다. 그런 다음 데이터베이스에 XML로 저장할 수 있습니다. 그러나 그의 선호하는 방식이 아닐 것이다.

은 편집 2 : 내가 얘기를 깜빡 했네요는, 나는 매우 내가 사용하는 수있는 기술을 준수하고 있습니다. 이것들은 MySQL, GWT, Hibernate 및 Spring (아니요 봄 트랜잭션)입니다.

답변

1

자산을 저장하기 위해 문서 스타일의 no-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입니다. –

+0

@Nico Huysamen : 그것은 분명히 수치 스럽습니다. 이러한 종류의 유연성, 특히 사용자 정의 필드를 가지려면 XML로 텍스트 블롭에 저장하는 것이 가장 좋습니다. 관계형 데이터베이스에는 적합하지 않지만 작동합니다. 상대적으로 적은 양의 데이터 (얼마나 많은 자산이 합쳐 졌습니까?)에 대해서 말하면 괜찮을 것입니다. 인덱싱 등을 위해 "필수"필드를 다른 열로 분리하십시오. 사용의 편의성을 위해 직렬화/비 직렬화 추상화에서 모든 것을 래핑하십시오. , 사용자 정의 필드에서 검색 할 수있는 확실하지 않은 경우, 필요하면 ... – David

+0

그건 내가 두려워했다. 그러나 시스템은 확장 가능해야합니다. 현재 약 6000 명의 직원을 보유한 회사에서 사용할 수 있습니다 (따라서 자산 수를 계량 할 수 있음). 그러나 이론 상으로는 어떤 크기에서도 작동하기를 원합니다. 필자는 또한 필수 필드에 대한 명시 적 열을 가질 수 있고 사용자 정의 XML에 대한 열만 가질 수 있다고 생각했습니다. 그러나 당신이 말했듯이, 그것은 책의 저자가 말하기를 매우 어렵게 만들 것입니다. –

1

자산의 일반적인 개념을 통합 할 수있는 자산의 각 유형에 대한 세부 사항 일반적으로 도서, 하드웨어, 가구와 같은 저작물 유형별로 각기 다른 표가있는 마스터 자산 표 형식을 취합니다. 구조는 다음과 같습니다

HardwareAssetBookAsset 모두 AssetIdAsset 테이블에 외래 키입니다
Asset(AssetId, Description, Comments) 

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

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

. 그렇게하면 서로 다른 자산을 추적하고 문제가 발생할 때 함께 그룹화 할 수 있습니다.


편집이 : 또는 당신은 키 생성 할 수 있습니다 - 다음과 같을 수 개별 개체에 대한 값을 저장하는 값 테이블, 그러나

AssetValue(AssetValueId, AssetId, Key, Value) 

을,이 성가신 해결책이 여전히 동안 검색 가능한 필드를 제공하면 데이터베이스가 빠르게 확장됩니다. 문제를 완화하기 위해 요구 사항에 따라 필드 크기를 제한 할 수 있습니다. 단일 필드 내에서 사전을 직렬화하는 것은 권장하지 않습니다. 데이터베이스가 더 커지게하기 때문입니다.

+0

답변 해 주셔서 감사합니다. 그것은 이상적인 세계에서 작동 할 것이지만 불행히도 특정 유형의 자산에 시스템을 묶고 싶지는 않습니다. 기업이 필요로하는 모든 유형의 자산을 추측하는 것은 불가능합니다. 시스템의 요점은 모든 솔루션에 맞는 * 하나의 크기가되는 것입니다. –

+0

@Nico : 내 게시물을 편집했습니다. –

1

기술 제약 조건에서 모듈을 분리하여 보관하는 것이 좋습니다.

+0

사실! 답장을 보내 주셔서 감사합니다. –

1

예 메인 테이블에서 어떤 자산 유형을 신고 할 수 있습니다. 따라서 이 도서 자산 인 경우 외래 키는 도서 항목에 연결할 수 있습니다. 이 이러한 항목이없는 자산에 공간을 낭비하지 마십시오.