2012-02-06 2 views
1

현재 여러 창고 (하위 위치 포함)를 사용하는 재고 관리 시스템을 만들고 있는데 이것이 내 첫 번째 큰 프로젝트이므로 일부 피드백을 환영합니다.데이터베이스 설계에 대한 의견/제안 - 창고 재고 관리

당신은, 당신은 그 창고 내에서 위치를 창고를 만들 수있는 최초의 필요성을 만들 수 있습니다 ... Link as Im still new here

제가 지금까지 한 일을 보여 드리겠습니다.

또한 ItemType (ItemGroup)을 만들 수 있습니다. 그러면 해당 그룹에 대한 Item을 만들 수 있습니다.

주식을 추가 할 수있는 항목과 위치가 있으면 주식 테이블에 중복 키가 추가 될 수 있도록 복합 키가 있습니다. 또한 제약 조건을 추가하여 잘못된 ItemType의 Item을 입력 할 수 없었습니다. Warehouse/Location에서 동일한 제약 조건을 입력 할 수 없었습니다.

그런 다음 각 주식, SerialisedItems 및 NonSerialisedItems의 기록을 보관해야합니다. 예 : 일련 번호가 아닌 주식이 수량 10으로 추가되면 현재 관련 재고 정보가있는 '재고 있음'으로 설정된 NonSerialisedItems 테이블 (1) 안에 10 개의 행을 작성합니다. 그들이 주식의 금액을 변경하면 행이 삭제되거나 추가됩니다 (2).

나는 Warehouse와 비슷한 어딘가에 Van 테이블을 사용할 수도 있지만 Warehouse 테이블을 Warehouse와 Van이라는 두 테이블을 참조하는 Storage와 같은 것으로 변경해야한다고 생각합니까?

(1) 현재 페이지 x 개에 TransactionScope가 있습니다.이 값을 처리하는 가장 좋은 방법입니까? (2) Stock 테이블의 Quantity 금액은 해당 항목에 대한 행 수를 계산 한 다음 재고가 추가되거나 제거 될 때마다 Quantity를 업데이트해야합니다. 여기에 문제가 있습니까? - 두 가지 모두 고정 된 질문 - 일련 번호가 지정된 항목에 대해서만 행을 만듭니다.

다른 문제가 있습니까?

그게 좋든 끔찍한 지 알려 주면 잘 했어. 또한 내가 알아야 할 함정이있는 경우 알고 있어야 좋을 것입니다.

감사

[편집] 내가 몇 가지 변경 한 네빌 K에 감사합니다 ...

이 더 많은 의미를 보인다

Link to new and improved database

! 나는 어제 그걸 오래 쳐다 보았다고 생각해!

+0

(2)은 분명히 나쁜 아이디어입니다. * 큰 * 수량의 항목이있을 수 있습니다 (예 : 작은 나사. 더 심한 경우에는 케이블과 같이 수량에 분수가있을 수있는 품목 (310.25m)이있을 수 있습니다. –

+0

많은 양이 제가 걱정하고있는 부분입니다. 필요에 따라 만들 수 있습니다. 덕분에 케이블에 대해 생각해 본적이 없었습니다. 케이블을 미터 단위로 판매하면 개별 미터로 각 미터를 저장할 수 있었으므로 여전히 작동 할 수 있었습니까? – Luckyl337

+0

케이블도 1/4m과 같이 분수로 판매 될 수 있습니다. 물론 각 cm 또는 mm에 대해 행을 만들 수도 있지만 의미가 없습니다. 몇 가지 창고 관리 시스템을 작성 했으므로 일련 번호 또는 이와 유사한 것을 추적하지 않으면 각 주식에 대한 행을 만들 필요가 없다고 생각하지 않습니다. –

답변

2

첫째, 이것은 거의 해결 된 문제입니다. 제가 아는 최고의 리소스는 "data model resource book"시리즈입니다. 여기에는 재고 유지 관리 앱을위한 매우 유연한 모델이 있습니다.

둘째, 디자인이 표준화되지 않았고 많은 복제가 필요합니다. 추론이 무엇인지는 확실하지 않지만 일반적으로 "재고"테이블에는 "item"에 대한 링크가 있지만 "itemType"에는 연결되지 않습니다. 항목이 항목 유형에 속한다는 사실은 항목과 항목 간의 관계에서 이미 캡처됩니다. 유형이므로 복제 할 필요가 없습니다. 위치 및 창고에도 마찬가지입니다.

중요한 변화는 하나의 "주식"테이블보다는 주식 거래의 개념입니다.

TransactionID  date itemID locationID quantity 
------------------------------------------------------------------ 
1    1/1/12  1   1  10 
2    1/2/12  1   1  -1 
3    1/3/12  1   1  20 

의 라인을 따라

뭔가 항목, 당신 합계 (수량) 항목 별 그룹의 현재 주식을 찾으려면; 위치별로 분류 된 항목의 현재 재고를 찾으려면 항목, 위치별로 그룹을 합합니다.

1 월 1 일에 재고가 10 개였습니다. 두 번째 항목에서 1 개의 항목이 제거되어 9 개의 항목이 남았습니다. 3 일에 20 개의 새 항목이 재고가되어 29의 잔액을 제공했습니다.

이 디자인을 사용하면 시간이 지남에 따라 변경 사항을 추적 할 수 있습니다. 또한 트랜잭션 메타 데이터 (operatorID, 송장 번호 등)를 작성하여 감사 추적을 제공합니다.

+0

그게 좋겠는데, 난 그냥 감사 추적을 정렬했습니다! 주식에서 ItemType에 연결하는 이유는 복합 키를 사용하여 Stock Table에 중복이 없기 때문에 연결해야한다고 생각했지만 항목의 TypeId를 사용해야한다고 말하는 이유는 무엇입니까? 아 너무 책을 체크 아웃, 감사합니다. – Luckyl337

+0

유형이 "clothing"인 "sock"품목이있는 경우 5 개의 양말이 있음을 기록하고 싶습니다. 양말이 "의류"유형의 일부라는 사실은 재고 수량과 관련이 없으므로 "재고"테이블에 양말을 기록하고 싶지 않습니다. 재고가있는 의류 품목 수를 확인하려면 재고를 품목 유형 테이블의 품목에 가입시킵니다. –

+0

예, 맞습니다! 귀하의 제안에 따라 데이터베이스를 변경했으며, 귀하가 생각하는 것을 말해주십시오 ... (현재 주식 거래는 아니지만 유아 단계를 사용함) – Luckyl337

관련 문제