2012-06-18 1 views
0

내 프로젝트의 간단한 POS 시스템을 구축 중입니다. 이 시스템에는 Sales라는 테이블과 Item이라는 테이블이 있습니다. Item 테이블에는 itemcode라는 기본 키인 열이 있습니다. Sales 테이블에는 Item 테이블의 itemcode를 참조하는 외래 키인 itemcode라는 열이 있습니다.영업 및 품목 간의 간단한 관계형 데이터베이스

문제는 제가 Sales 테이블의 Itemcode를 Item 테이블의 itemcode를 참조하는 외래 키로해야합니까?

외래 키인 경우이 특정 항목에 대한 매출이있는 경우 항목 테이블에서 특정 항목을 삭제할 수 없습니다. 이는 Item 테이블의 기본 키를 참조하는 Sales 테이블에 외래 키가 있기 때문입니다.

외래 키가 아닌 경우 항목 테이블에서 항목 코드를 업데이트하면 항목 코드가 업데이트되지 않습니다.

이 문제를 해결하는 데 도움이되는 팁이 있습니까?

답변

0

항목 코드가 데이터베이스의 수명 기간 동안 변경되면 기본 키가 될 수있는 좋은 후보가 아닙니다. 이러한 상황에서 우리는 일반적으로 기본 키로 사용할 자동 증가 및 적절하게 임의의 ID를 생성 한 다음 외래 키 관계에서 사용합니다. 당신도 케이크를 먹었고 그것을 먹었습니까? 단지 색인이 잘 붙은 효율적인 컬럼이 하나 더 들었을뿐입니다. :-)

+0

감사합니다. 그러나 항목을 더 이상 사용할 수 없지만 판매 테이블의 레코드를 유지 관리해야하는 경우 항목 테이블에서 항목을 삭제하려면 어떻게해야합니까? – Boon

+0

올바르게 모델링하려면 두 가지 중 하나를 수행하면됩니다. 인벤토리를 개별적으로 추적하거나 가용성을 나타내는 열을 항목 테이블에 추가하고 사이트의 항목을 표시 할 때마다 해당 열을 사용하십시오 (예 : WHERE items.currently_available = TRUE) –

+0

감사합니다. 한 번 사용해 보겠습니다. – Boon

0

엔티티 ID를 항목 테이블의 기본 키로 사용할 수 있으며 판매 테이블에서 참조됩니다. 항목 코드는 항목 테이블에서만 다른 열입니다.

+0

감사합니다.하지만 항목을 더 이상 사용할 수 없지만 판매 테이블의 레코드를 유지해야하는 경우 항목 테이블에서 항목을 삭제하려면 어떻게해야합니까? – Boon

+0

항목 표에 열 수량을 추가하지 마십시오. 항목이 판매 될 때마다 수량 값이 1 씩 감소합니다. 재고에 품목이 없으면 수량 필드의 값은 0입니다. 경우에 대비하여 되돌리기 의심의 여지가없는 –