Microsoft Access에는 주문 테이블, 고객 테이블 및 제품 테이블의 세 가지 테이블이 있습니다. 내 주문 테이블은 고객 연락처와 제품 정보를 가져옵니다. 매번 고객 주소를 업데이트해야합니다. 그렇게 할 때, 나는 단지 새로운 주소가 미래의 명령에 나타나기를 원한다. Access에서 원래 주문과 관련이없는 주소로 이전 주문을 업데이트하는 것을 원하지 않습니다. 또한 고객 목록에 활성 및 과거 주소 목록을 유지하려고합니다. 주문 표에서 고객 테이블을 설정하는 최선의 방법과 고객 연락처 정보를 유지하는 방법에 대해 조언하십시오.데이터베이스에 오래된 기록을 유지하면서 액세스 업데이트 연락처 정보
답변
이렇게하려면 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 레코드가있을 수 있습니다).
간단한 방법은 현재 고객 정보를 주문과 함께 저장하는 것입니다.
확장 방법은 사용자 정의 방법 또는를 사용하거나, 시간 테이블로 고객 테이블 (들)을 저장하는 네이티브로 - 예를 들어 - SQL 서버의 최신 버전 제공했다. 더 자세한 정보는 임시 데이터베이스을 참조하십시오.
@Skippy 님이 제안한 첫 번째 제안을 선택합니다. 하나의 변경 사항으로 현재 플래그 (예/아니오)를 사용하지 말고 날짜 범위 (유효 기간 및 유효 날짜 필드)를 사용하십시오. 고객이 사전에 주소 변경을 보내는 경우가 발생할 수 있습니다. – Rene