2012-12-19 2 views
1

데이터베이스 파생 값이 외래 키와 동일합니까? connoly 및 begg 책, 제 4 판 페이지 352 파생 된 값을 바탕으로데이터베이스 파생 값은 외래 키와 동일합니까?

우리는

Customer 
- Id_Cust 
- Name 
- Phone 

ORDER 
- Order_id< 
- id_cust 

우리가 "ORDER.id_cust을 말할 수, 고객 및 주문으로 2 테이블이있는 경우 An attribute that represents a value that is derivable from the value of a related attribute or set of attributes, not necessarily in the same entity type.

입니다 Customer.id_cust에서 파생되었습니다 "?

사실, 저는 실제로 위의 개념에 대해 혼란스러워합니다.

답변

2

아니요, 외부 키와 파생 값은 서로 다른 두 가지입니다.

product quantity price subtotal 
-- 
ACH123 5   $1.50 $7.50 

위의 단순화 된 표에서 "부분합"은 파생 값입니다. "수량"과 "가격"에서 파생됩니다.

데이터베이스 설계자는 일반적으로 파생 값이 항상 올바른지 확인하기 위해 CHECK() 제약 조건이나 트리거를 사용하지 않고 파생 값을 저장하지 않습니다. 위의 표에서 수량을 4로 업데이트하면 파생 값 "부분합"이 올바르지 않게됩니다. 업데이트에 "부분합"에 대한 올바른 값이없는 경우 CHECK() 제약 조건은 "수량"으로 업데이트하지 못하게 할 수 있습니다. 트리거는 "수량"또는 "가격"이 변경되면 "부분 합계"를 자동으로 업데이트 할 수 있습니다.

CHECK() 제약 조건이 일반적으로 더 좋습니다.

+0

그래서 다른 테이블에서 가치를 얻을 수 있습니까? 이 표가있어이 같이 간다'A' - A_ID - 값 1 - 값 2 다음 테이블'B'가 있다 - B_Id - A_ID - 파생 TotalValue1 + 값 2 는'TotalValue1 + Value2'는 계산 않는다 가치? – Cignitor

+0

예, 여러 테이블에서 값을 파생시킬 수 있습니다. 그래도 내가 한 일을 본 적이 없다고 생각합니다. –

+0

그게 teoritically 올바른가요? 나는 그런 식으로 보지 못했다 :(. – Cignitor

관련 문제