제목에이를 표현하는 방법을 잘 모르겠습니다. 그래서 여기 거래는 다음과 같습니다, 이상적으로는 통화 기호 (마스터 데이터)를 저장하는 다른 테이블이 있어야합니다외래 키 참조로 숫자 값 대신에 열 값을 사용하십시오.
PAIR_ID | BASE_CURRENCY | TERM_CURRENCY | ATTRIBUTE1 | ATTRIBUTE2 ...
BASE_CURRENCY
에서 CURRENCY_SYMBOLS
및 외래 키 말 : 나는 환율에 사용되는 통화 쌍에 대한 정보를 저장하는 테이블이 이 테이블에 TERM_CURRENCY
. 그러나 나는 여기서 두 가지 접근법을 혼동하고있다.
접근법 1 :
CURRENCY_PAIRS :
PAIR_ID | BASE_CURRENCY_ID | TERM_CURRENCY_ID | ATTRIBUTE1 | ATTRIBUTE2 ...
CURRENCY_SYMBOLS :
SYMBOL_ID | SYMBOL
BASE_CURRENCY_ID
& TERM_CURRENCY_ID
]을 참조로 SYMBOL_ID
또는 접근법 2을 ncing : 오히려 정말 값을 추가하지 않는 symbol_id을하는 것보다, 그냥이 :
CURRENCY_PAIRS :
PAIR_ID | BASE_CURRENCY | TERM_CURRENCY | ATTRIBUTE1 | ATTRIBUTE2 ...
CURRENCY_SYMBOLS :
SYMBOL
과 BASE_CURRENCY
& TERM_CURRENCY
은 SYMBOL
을 직접 참조합니다.
어느 쪽이 더 좋을지 모르겠다. 접근 방식 1은 이상적이지만 실제로 이점이 없다. 실제로 모든 쿼리에서 데이터를 검색하려면 추가 조인이 필요하다.
접근법 2가 더 효율적이지만 어떻게 든 올바르지 않습니다.
나는 함께해야 할 포인터가 있습니까?
어째서 접근법 # 2가 다소 어울리지 않을 것이라고 생각하십니까 *? 기본 키는 고유하고 null이 아니어야하며 SQL Server에서 효율적이어야합니다 (사용중인 실제 데이터베이스를 언급하지 않았습니다). 또한 이상적으로 작고 고정 길이입니다. 이러한 통화 코드는 ISO 표준이며 거의 변경되지 않으며 정확히 3 자입니다. 거의 ** 이상적인 ** 기본 키처럼 들립니다. 네, 저는 종종 ID를 사용합니다 - 일을 더 쉽고, 안전하고, 효율적으로 만들어줍니다. 그러나 ISO 통화 코드 용'CHAR (3)'은 SQL Server 기본 키에 매우 가깝습니다. –
저는 Oracle입니다. 경험/경험에 따라 정확하지 않을 수도 있습니다. – 6ton
그것은 나쁜 생각입니다. 아래 내 의견을 참조하십시오. –