조회 테이블 (또는 일부 사람들이 호출하는 코드 테이블 )은 일반적으로 특정 열에 제공 할 수있는 가능한 값의 모음입니다.
예를 들어, party
두 개의 열이있는 (정당에 대한 정보를 저장하기 위한) 룩업 테이블이 있다고 가정 하십시오.
party_code_idn
시스템 생성 숫자 값을 보유하며 ( 비즈니스 도메인 의미 가 부족함 ) 실제 키에 대한 대리 역할을합니다.party_code
은 비즈니스 도메인 내포 가있는 값을 유지하므로 테이블의 실제 또는 "자연"키입니다 .
이러한 테이블에는 다음과 같은 데이터가 유지된다고 가정하겠습니다.
+----------------+------------+
| party_code_idn | party_code |
+----------------+------------+
| 1 | Republican |
| 2 | Democratic |
+----------------+------------+
party_code
값 "공화당"와 "민주당", 테이블의 실제 키 인 고유 한 제약 조건으로 설정되어 있지만, I는 임의로 추가 유지 열 party_code_idn
및 비록 테이블 (의 PK로 정의 논리적 말하기 , party_code
기본 키 [PK]로 작동 할 수 있습니다).
질문
트랜잭션 테이블 에서 조회 값 을 가리 키기위한 최상의 방법은 무엇입니까 ? FOREIGN KEY (FK) 참조를 (a) 자연스럽고 의미있는 값으로 직접 또는 (b) 대리 값으로 참조 를 설정해야합니까?
옵션 (a)는 , 예를 들어,
+---------------+------------+---------+
| candidate_idn | party_code | city |
+---------------+------------+---------+
| 1 | Democratic | Alaska |
| 2 | Republican | Memphis |
+---------------+------------+---------+
다음과 같은 속성이 있습니다 1 :
- 최종 사용자가 읽을 수 있음 (+)
- 여러 시스템에서 쉽게 가져 오기 / 내보내기 (+)
- 모든 참조 테이블에서 수정이 필요하므로 값을 변경하기 어려움 (-)
- 새로운 가치를 추가하는 데 많은 비용이 들지 않습니다 (=)
응용 프로그램 프로그래밍 전문 용어의 함수 호출 에서 유추 하는 것은 거의 " 값으로 전달 "과 비슷하다고 생각합니다 .
예를 들어, 옵션 (b)
+---------------+----------------+---------+
| candidate_idn | party_code_idn | city |
+---------------+----------------+---------+
| 1 | 1 | Alaska |
| 2 | 2 | Memphis |
+---------------+----------------+---------+
아래 속성이 있습니다.
- 최종 사용자가 읽을 수 없음 (-)
- 역 참조해야하므로 가져 오기-내보내기 어려움 (-)
- 트랜잭션 테이블 에만 참조를 저장하기 때문에 값을 쉽게 변경할 수 있습니다 (+)
- 새로운 가치를 추가하는 데 많은 비용이 들지 않습니다 (=)
앱 프로그래밍 용어에서 함수 호출 과 비교하는 경우“ 참조로 전달 ”과 매우 유사합니다 .
가져 오기-내보내기 는 조회 테이블을 다시 채우고 서로 게이트 열 을 다시 시드 하는 것과 같은 다른 방식으로 수행 될 수도 있습니다 . 나는 이것이 올바르게되고 있기를 바랍니다. 이것은 내가 방금 들었던 것입니다.
1. 참고 +
, -
및 =
이러한 속성의 혜택을 나타냅니다.
질문
아주 중요한 점 : 후자의 접근 방식을 사용하려는 경우 룩업 (또는 코드 ) 테이블과 FK 참조 간에 차이가 있습니까? 나는 그들이 똑같이 작동한다고 생각합니다.