2011-03-18 1 views
0

이것은 내가 감안할 때데이터 모델에 의해 적용되도록 브리지 테이블에서 고유 관계를 정의하는 방법은 무엇입니까?

우연히 인터뷰 질문은 세 개의 테이블

  • 대학원 - 대학원 롤
  • 명예 - 명예는
  • GRADHONS 주제 - 브리지 표는 특정 명예 제목
  • 와 대학원을 연결하는

질문 - 데이터 모델에서 제약 조건을 적용 할 수 있도록 GRADHONS를 데이터 모델에 어떻게 정의해야합니까? 졸업생은 단 하나의 우등목 만 가질 수 있습니까?

면접관

  • 변경 대학원 테이블의 일환으로 데이터 모델 및 참조 명예 테이블 GRADHONS 내 제안

    • 사용 PK처럼 대학원 키의 정말 꼴이 아니 었습니다.

    내 질문은 원래 인터뷰 질문과 동일합니다. 데이터 모델에 의해 시행되도록 브리지 테이블에서 고유 -1-1 관계를 어떻게 정의하겠습니까?

  • 답변

    0

    귀하의 제안은 모두 합리적이라고 생각합니다. GRADHONS에 GRADUATE를 참조하기 위해 별도의 열을 갖고 싶다면 GRADHONS에 GRADUATE에 대한 외래 키 참조를 만들고 해당 열을 고유하게 만듭니다. 따라서 모든 GRADUATE에 대해 GRADHONS에는 하나의 행만있을 수 있습니다.

    +0

    다른 방법으로 알려주시겠습니까? – Everyone

    0

    가장 쉬운 방법은 Graduate와 Honours FK로 구성된 조인 테이블에서 GRADHONS (GraduateID와 HonoursID 필드로 구성된 기본 키)에 복합 기본 키를 만드는 것입니다.

    LINQ to SQL 또는 RoR의 ActiveRecord와 같은 다른 ORM 솔루션을 사용하려는 경우 이러한 유형의 PKeys를 싫어하는 경향이 있습니다. 이 경우 조인 테이블 GRADHONS에 PK 자동 증분을 작성한 다음 두 개의 F 키 필드에 고유 색인을 작성하는 것이 가장 좋습니다.

    +0

    복합 PK는 중복을 허용합니다. 말, 대학원 = 모두 명예 = 물리학, 지질학, 고전 문학 Gradhons = 모두 - 지질 도 모두 허용 할 복합 PK를 사용 - 물리학 삽입합니다. 이것은 정확히 우리가 데이터 모델에서 _restrict_하고자하는 것입니다. – Everyone

    +0

    오, 죄송합니다. 질문을 오해했습니다. 학생이 단지 하나의 Hounours 주체를 갖기를 원한다면 단순히 Join 테이블의 Graduate ID에 고유 한 색인을 넣기를 원할 것입니다. 또한 조인 테이블을 사용하는 데 별다른 이점이 없다고 주장하며, 단순히 테이블에 HonoursID를 입력해야합니다. –

    관련 문제