0

ERD 부분은 3 개의 테이블 사이의 관계를 보여줍니다.이 테이블에 새로운 기본 키가 필요합니까?

사용자는 많은 사용자

중간에 테이블이 많은 관계로 많은 해결 및 복합 기본 키가에 의해 많은 tarcks (노래)

트랙이 소유 할 수 있습니다를 소유 할 수 있습니다. 특정 사용자가 특정 트랙을 평가하는 방법에 대한 정보를 저장할 수 있습니다.

http://i.imgur.com/Rn4PnGO.png

중간 테이블에 새로운 기본 키 "User_Rating_ID"를 필요합니까 아니면 괜찮습니다 (더?) 복합 키로 떠나?

답변

0

데이터 사용 방법에 따라 다릅니다.

논리적으로 볼 때 논리적으로 볼 때 복합 기본 키는 말해야 할 내용을 말하고 올바르게 작동합니다. 별도의 PK를 갖는 것이 도움이 될 수있는 몇 가지 비정상적인 상황이 있습니다.

+0

이러한 상황을 자세히 설명하거나 올바른 방향으로 나를 가리 키시겠습니까? 나는이 문제에 대해 봤지만 특히 도움이되는 것을 찾을 수 없었다. – user388600

0

교차를 통해 링크 된 두 테이블을 가리키는 두 개의 외래 키 열로 구성된 복합 기본 키를 갖는 다 대다 교차 테이블에는 아무런 문제가 없습니다.

어떤 사람들은 후보 교차 키 테이블에 후보 기본 키, 특히 의미없는 시스템 생성 ID 번호 (또는 GUID 등)를 추가하려고 할 수 있습니다. 누군가가이 포함된다 할 수

이유 : *는

  1. 은 "부모"(링크) 테이블은 일부 복잡 할 것입니다 한쪽 끝에서 변경하고 외래 키의 하나 (또는 ​​그 이상)를 업데이트 할 수 있습니다 이유. 어떤 사람들은 기본 키를 업데이트하는 것을 좋아하지 않습니다. 일부 ORM은이를 허용하지 않습니다.
  2. 교차점은 교차점을 가리키는 외래 키가 있어야하는 하나 이상의 하위 테이블에 대한 부모 일 수 있습니다. 복합 키를 다른 테이블로 전파하면 코드가 복잡해질 수 있으며 ORM이 사용하는 경우 ORM이 지원할 수도 있고 지원하지 않을 수도 있습니다.
  3. 교차로의 레코드가 콤보 상자에 표시되고 콤보 상자 컨트롤에 단일 목록 항목 정수 배열이있는 것처럼 단일 열 후보 키가있는 사용자 인터페이스 기반의 이유가있을 수 있습니다. 교차 테이블에서 기록하십시오.
  4. 다른 후보 기본 키의 존재 여부와 관계없이 각 테이블에 단일 대리 키가 있어야하는 일종의 시스템 제약 조건이있을 수 있습니다. 예를 들어 table_name, record_id, change_date, change_user 등과 같은 항목을 추적하는 감사 로깅 메커니즘이있을 수 있습니다.
  5. 일부 사람들은 모든 테이블이 대리 키를 가져야한다고 생각합니다. 왜냐하면 그것은 세계적인 시각이기 때문입니다.

* 참고 : 나는 이러한 이유 때문에지지하지 않습니다. 나는 그들이 "야생에서"찾아 낼 의견 일 것이라고 말하고 있습니다. 귀하의 마일리지가 달라질 수 있으며 자신의 결정을 내릴 수 있습니다.

1

교차 테이블은 두 엔티티 간의 관계를 정의합니다. 이것이 익명의 관계라면 별도의 서로 게이트 키가 필요하지 않습니다.

예를 들어 부품 테이블과 유닛 테이블은 각 유닛을 만드는 데 사용되는 부품을 정의하는 테이블을 가질 수 있습니다. 각 부분은 여러 단위로 사용될 수 있으며 각 단위는 여러 부분으로 구성됩니다 (때로는 특정 부분의 여러 부분으로 구성됩니다). 이러한 테이블은 다음과 같이 보일 수 있습니다.

UnitID PartID Qty 

이러한 교차 테이블에는 대용 키가 없을 가능성이 큽니다. 관계에 대해 묻는 일반적인 질문은 다음과 같습니다.

  • Unit X를 만드는 데 사용되는 부품은 무엇입니까?
  • Unit X를 만들기 위해 가장 저렴하고 값 비싼 부분은 무엇입니까?
  • 파트 P를 포함하는 단위는 무엇입니까?
  • 가장 많은 수의 부품 P가 필요한 단위는 무엇입니까?

이 관계의 별도 키가 사용되는 상황을 생각할 수 없습니다. 모든 질문은 특정 부분 또는 특정 단위에 관한 것입니다.

반면에, 코스와 학기를 가져 가십시오. 교차 테이블은 강좌가 수립되는 특정 세션 인 강좌를 수립합니다. 같은 학기에 특정 코스에 대한 몇 가지 사례가있을 수 있습니다. 스미스 교수는 m-w-f를 매일 1 시간 동안, 그리고 존스 교수는 매일 1.5 시간 동안 수학 -101 수업을 진행할 수 있습니다.

등록 및 기타 미래의 기록 유지하는 동안, 그것은 수학-101 또는 추적 할 수 학기 만 사용되는 특정 클래스하지 것입니다. 이러한 이유로 별도의 대리 키가 필요합니다.

귀하의 인스턴스에서 관계가 익명인지 여부가 결정됩니다.