0

과제를 작성 중이고 주로 생성 된 테이블을 사용하여 작업하는 것처럼 SQL 기본이 약간 녹슬니다. 나는 데이터베이스 모델을 받았고 그것을 만들 것을 요청 받았다. 모델에 오류가있을 수 있으며 수정 만 가능하다고 들었습니다. 저는 여기에 문제가 발생하고있는 부분의 조각입니다 :다른 테이블의 primay 키로 구성된 복합 기본 키

http://i.imgur.com/0KyMquZ.jpg

내가 그것을 알아 내려고 노력하고 인터넷 검색 및 연구 봤는데하지만 나는받지 못했습니다 뭔가가 있다면 난 그냥 확실하지 않다 또는 모델을 조정해야합니다. 내가 겪고있는 문제는 operation 테이블과 연결 테이블입니다. operation의 기본 키는 연결 테이블의 세 가지 기본 키와 다른 기본 키 date으로 구성됩니다. 그게 끝날 수 있습니까? 그들이 다른 테이블의 외래 키라면 나는 그것을 알 수 있다고 생각합니다. 나는 그것을하는 방법을 알아 내려고 노력했지만 대부분 이것이 단지 보여주고있는 것의 개념을 고수하려고 시도하고있다. 어떻게 또는 왜 이해가 안됩니다. 복합 기본 키가 다른 세 테이블에 있어야할까요? 잘 분할되어 있습니까? 복합 기본 키가 다른 테이블의 외래 키를 참조하면 안됩니까? 나는 정말로 혼란스러워. 나는 데이터베이스와 함께 일하는 것이 좋지만 설계는 많이하지는 않습니다.

나는 교수님 한테 물어볼 것이지만 우리는 결코 같은 페이지에 있지 않습니다. 나는 그 순간에 그를 이해하고 나는 더 혼란 스럽다. 나는 이것이 중요하다고 생각하지 않지만 그것은 MySQL이다.

+0

귀하의 질문이 무엇인지 명확하게 설명해 주실 수 있습니까? –

+0

다른 테이블의 복합 기본 키 참조 기본 키를 본 적이 없습니다. 모델에서 실수 였나요? 나는 그것을하는 방법을 이해하려고 노력했지만 그것을 얻을 수는 없다. 나는 개념에 대해 정말로 머리를 맞출 수조차 없다. – user2328273

+1

모델은'operation'과 관련하여 멋지게 보이는데, 각 레코드는 3 개의 관련 테이블의 키와 날짜의 조합으로 만 존재합니다. 따라서 외래 키이지만 복합 기본 키입니다.같은 날짜에 동일한 환자의 동일한 의사가 동일한 수술 이름을 여러 번 수행 할 수 있다는 단점이 있지만 문제는 아닌 것으로 짐작됩니다. –

답변

0

의견을 읽은 후에, 나는 이제 내 오해를 이해합니다. 기본 복합 키가 기본 키로 구성되어 있고 다른 테이블과 중복되어 있다고 생각했습니다. 복합 기본 키가 외국 키와 하나의 기본 키 : 날짜로 구성되었음을 알게되었습니다. 해명 해줘서 고마워.

0

일부 구성 요소가 FK로 선언 된 경우 복합 PK를 선언해도 아무런 문제가 없습니다. 논리적으로 이것은 매우 정확합니다.

성능에 미치는 영향을 예측하기 어렵습니다. Mysql이 PK 선언을 기반으로 작성하는 인덱스는 예측하기가 어렵습니다. 일부 쿼리는 속도가 빨라지고 다른 쿼리는 그렇지 않습니다.

+0

그러나 구성 요소는 외래 키가 아니며 다른 테이블의 기본 키입니다. 그것이 내가 이해하지 못하는 것입니다. – user2328273

+0

값이 모두 일부 PK를 참조하면 정의에 따라 값이 FK입니다. 이 점수에는 약간의 혼란이 있습니다. 많은 참여자는 FK 제약 조건에서 이름이 지정된 경우에만 FK로 열을 참조합니다. –

+0

그러면 '의사', '환자'및 '수술 유형'테이블의 기본 키는 무엇입니까? 나는 그런 종류의 생각을했다. 나는 그 모델을 이해할 수 없다. 나는 실수를 수정하라는 지시를 받았지만 모델의 의도를 이해하고 수정하기에 충분한 데이터베이스 설계 경험이 없습니다. – user2328273

1

기술적으로 허용되지만, 다음과 같은 상황이 존재할 수 있으므로 의미 상으로 의미가 없다고 생각합니다.

  1. 환자는 ... 동일하여
  2. 환자가 같은 날에 동일한 작업의 대상이 될 수 없습니다 여러 번 다른 의사에 의해 같은 날 여러 번에 동일한 작업의 대상이 될 수 있지만, 의사,하지만 ...
  3. 환자는 같은 날 의사의 다른 수술을받을 수 있습니다.

나에게이 기본 키는 의미가 없으므로 합성 기본 키를 추가하고 적절한 경우이 간단한 외래 키 열을 만들 수 있습니다.