2016-12-20 2 views
0

Microsoft Access에는 주문 테이블, 고객 테이블 및 제품 테이블의 세 가지 테이블이 있습니다. 내 주문 테이블은 고객 연락처와 제품 정보를 가져옵니다. 매번 고객 주소를 업데이트해야합니다. 그렇게 할 때, 나는 단지 새로운 주소가 미래의 명령에 나타나기를 원한다. Access에서 원래 주문과 관련이없는 주소로 이전 주문을 업데이트하는 것을 원하지 않습니다. 또한 고객 목록에 활성 및 과거 주소 목록을 유지하려고합니다. 주문 표에서 고객 테이블을 설정하는 최선의 방법과 고객 연락처 정보를 유지하는 방법에 대해 조언하십시오.데이터베이스에 오래된 기록을 유지하면서 액세스 업데이트 연락처 정보

답변

3

이렇게하려면 Customer 테이블에서 고객 주소를 가져 와서 별도의 CustomerAddress 테이블에 보관해야합니다. 이 새 테이블에는 기본 키 (물론), Customer 테이블의 외래 키, 내역을 유지하려는 모든 주소 필드 및 Current 플래그 (예/아니요)가 있습니다. Order 테이블은 Customer 테이블 대신 CustomerAddress 테이블을 직접 가리 킵니다 (CustomerAddress에서 Customer 로의 FK 링크로 인해 Order에서 Customer로 가져올 수 있음). 이제 즐거움이 시작됩니다! 각 Customer ID에 대해 Current가 True 인 주소 레코드 하나만 가져야하는 방식으로 CustomerAddress 테이블을 유지 관리해야합니다.

다른 대안은 CustomerAddress 테이블에 Current 플래그가 없지만 Customer 테이블에 CurrentAddress 필드가있는 것입니다. 이렇게하면 하나의 주소 만 고객의 현재 주소가 될 수 있습니다. 그러나 CurrentAddress 무결성 및 CustomerAddress 외래 키를 모두 적용 할 수는 없습니다. 주소 레코드를 추가 할 때까지 CurrentAddress 값을 설정할 수 없으므로 Customer 레코드가 NULL CurrentAddress와 함께 존재할 수 있어야합니다 (비록 더미 'Not set'CustomerAddress 레코드가있을 수 있습니다).

1

간단한 방법은 현재 고객 정보를 주문과 함께 저장하는 것입니다.

확장 방법은 사용자 정의 방법 또는를 사용하거나, 시간 테이블로 고객 테이블 (들)을 저장하는 네이티브로 - 예를 들어 - SQL 서버의 최신 버전 제공했다. 더 자세한 정보는 임시 데이터베이스을 참조하십시오.

+0

@Skippy 님이 제안한 첫 번째 제안을 선택합니다. 하나의 변경 사항으로 현재 플래그 (예/아니오)를 사용하지 말고 날짜 범위 (유효 기간 및 유효 날짜 필드)를 사용하십시오. 고객이 사전에 주소 변경을 보내는 경우가 발생할 수 있습니다. – Rene