문제

배경

"ALL-PK-MATH-BE 대리모" 접근법은 codd의 관계형 모델 또는 SQL 표준 (ANSI)에 없습니다. , ISO 또는 기타).

정책 도서 도이 제한 사항을 너무 밝혀냅니다.

오라클의 자체 데이터 사전 방식은 일부 테이블 및 다른 테이블의 대리 키의 자연스 키를 사용합니다. 나는이 사람들이 RDBMS 디자인에 대해 사물이나 두 가지를 알아야하기 때문에 이것을 언급합니다.

ppdm (전문 석유 데이터 관리 협회) 동일한 표준 책을 추천합니다 :

대리 키를 기본 키로 사용하십시오 :

  1. 자연이나 비즈니스 키가 없습니다
  2. 자연 또는 비즈니스 키가 나쁘지 않습니다 (자주 변경)
  3. 자연 또는 비즈니스 키의 값은 레코드
  4. 를 삽입 할 때 알려지지 않습니다.
  5. 멀티 컬럼 자연 키 (일반적으로 여러 FK)는 3 개의 열을 초과하여 조인을 너무 자세하게 만듭니다.
  6. 또한 자연의 열쇠가 불변을 필요로하는 정책 소스를 발견하지 못했습니다. 나는 그들이 매우 효과적 일 필요는 매우 희귀 한 오카산에서만 변경되어야한다는 것입니다. 이제까지.

    나는이 사람들이 RDBMS 설계에 대해서도 사물이나 두 가지를 알아야하기 때문에 ppdm을 언급합니다.

    "모든 대리인"접근법의 기원은 일부 orm 프레임 워크의 권장 사항에서 오는 것 같습니다.

    많은 비즈니스 분석을 수행 할 필요가 없지만 SQL 코드의 유지 보수성 및 가독성 의 비용으로 접근 방식이 빠른 데이터베이스 모델링 을 허용하는 것이 사실입니다. 미래에 더 많은 테이블에 가입 해야하는 것처럼 일상적인 일을 희생시키는 데는 미래에 일어나지 않을 수도 있고 그렇게 바뀌었을 것입니다. 쿼리하고 데이터베이스간에 데이터를 가져 오는 코드, 그렇지 않으면 매우 strightfoward 절차 (PK Covisions를 피하고 미리 무대 / 동등성 테이블을 만들 필요가 필요함).

    다른 인수는 정수를 기반으로하는 인덱스가 더 빨라지지 만 벤치 마크에서 지원해야합니다. 분명히, 길고, 다양한 바리 char는 pk에 좋지 않습니다. 짧고 수정 길이 VARCHAR에 기초한 인덱스는 거의 정수만큼 빠릅니다.

    질문

    - "all-pk-ether-be-surgates"접근법을 지원하는 정규 소스가 있습니까?

    - CODD의 관계형 모델이 최신 관계형 모델에 의해 중지 되었습니까?

도움이 되었습니까?

해결책

"모든 PKS는 대리인입니다."는 에 대한 "권위있는"소스를 찾을 수있는 "권위있는"소스를 찾을 가능성이있는 전혀 매우 건전한 전략이 아닙니다.

이 맥락에서 "기본 키"가 의미하는 것에 대해 먼저 생각합니다. 관계형 모델에는 "기본"키가 없습니다. 즉, 동일한 테이블의 다른 키와 근본적으로 다른 키를 의미하지 않습니다. 원칙적으로 관계형 데이터베이스의 모든 키는 동일한 상태를 누릴 수 있으며 데이터베이스 디자이너가 선택한 범위를 제외하고 동일한 기능과 기능을 갖습니다. 따라서 여러 키가있는 테이블에있는 하나의 키에서 싱크하는 것은 본질적으로 임의적으로 (즉, e.f.codd가 사용하는 단어) 주관적이며 순수한 심리적 (Chris Date, CoDD의 동료 및 공동 자료의 관점)입니다. 따라서 "기본"키와 다른 키 사이에 어떤 구별이 그려져 있는지 설명하지 않는 한, 그러므로 꽤 무의미하고, 그러한 열쇠 "또는"필수 "가 무엇이든 될 것으로 주장하는 것이 꽤 의미가 없습니다.

둘째, 인수는 물리적 저장 기능 인 색인과 관련이 거의 없습니다. 열쇠는 물리적 인 것도 아닌 논리적 인 문제가 있으며 "기본"키의 저장소 고려 사항이 다른 키와 다르거나 다른 다른 키와 다른 것임을 가정하는 절대적인 이유가 없습니다 (이전 단락 참조). 우리는 저장 구조가 무엇이든간에 스토리지 오버 헤드가 그러한 열쇠가없는 것보다 greater greater 이지만 항상 여기에서 가장 좋은 대답은 "그것 의존"입니다. 스토리지 결정은 사례 별 기지와 담요 규칙에 따라 도움이 필요합니다.

셋째, 논리적 의 관점에서 대리 키의 절대 요구 사항은 매우 적지 않습니다. 자연스 키의 요구 사항은 대리인과 정확히 동일하거나없는 것입니다. 담론의 도메인에서 식별 할 수있는 정보의 필요성 (즉, 자연스러운 키 "비즈니스 키", "도메인 키")는 동일합니다. 예, 키를 업데이트해야 할 필요가 있지만 때로는 사물의 성격입니다. 대리인을 추가하지 않으므로 쉽게 처리 할 수있는 키 업데이트가 쉽고 때로는 더 열심히 만들 수 있습니다.

다른 팁

1 차 및 외래 키 은 읽을 수 없을 필요가 없습니다. 인간이 읽지 않도록 데이터베이스의 내부 관계 구조를 유지하는 것입니다.

자연스럽게 변화가없는 적절한 자연스 키가있는 경우 (나는 이것들이 암탉의 치아 또는 4 잎 클로버 (4 잎 클로버)로서의 희귀 한 것처럼 주장합니다. 일부 고객은 요구 사항 중 하나를 만들 것입니다.

그러나 중요한 혜택을 위해 데이터베이스 시스템에 추가 복잡성을 추가하는 이유는 무엇입니까? 기본 Surrogate 키는 시스템 생성이며 고유하게 보장되며 변경되지 않고 모든 테이블에 대해 동일한 데이터 유형입니다. 그들은 모든 상황에서도 동일한 신뢰할 수있는 행동을 가질 것입니다.

이 관행을 지원하는 정식 리소스를 찾고 있다면, 당신은 하나를 찾을 수 없습니다. 에이슬의 다른 쪽에서 그들의 사용을 방소 할 수있는 많은 디자이너가 있습니다. 기본 키로 클러스터 된 인덱스가있는 자연적이고 복합 키를 사용하고 모든 공란 자원은 디자이너의 선택이라고 말합니다.

도 참조
http://en.wikipedia.org/wiki/surrogate_key

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 softwareengineering.stackexchange
scroll top