2012-02-18 2 views
2

질병과 함께 환자의 기록을 저장하고 검색하는 응용 프로그램 (데스크탑)을 만들고 있습니다. 환자와 질병이 많은 관계를 맺고 있으므로 3 개의 테이블을 만들었습니다. 환자, 질병 및 하나는 접합 테이블입니다. 한 환자가 한 번에 한 가지 질병에 여러 번 등록 할 수 있으므로 '환자'테이블에는 환자의 '참조 번호'와 '등록일'의 복합 기본 키가 포함됩니다. 테이블 '질병'은 기본 키로 '이름'만 포함합니다.환자 및 질병에 대한 데이터베이스 설계

이제 접합 표 디자인에 대해 약간 혼란 스럽습니다. 'PATIENTS'테이블의 합성 기본 키와 'DISEASES'테이블의 기본 키를 외래 키로 포함합니다.

접합 테이블에 이러한 모든 외래 키의 복합 기본 키를 만들거나 다른 기본 키 또는 다른 것을 만들어야합니까?

도움을 주시면 감사하겠습니다.

+0

것이 기본 키

 PatientDisease table ------------- PK, FK PatientID PK, FK DiseaseID PK Date 

의 일환으로 데이트를 할 필요하다면 내가 제공 할 수 있습니다 . –

답변

2

나는 하나 이상의 사례를 제안합니다. 이 테이블에는 입력 날짜가 포함됩니다. 질병 이름을 기본 키로 사용하면 안됩니다. 이렇게하면 오타를 바로 잡거나 나중에 더 적절한 이름을 선택하기가 어려워 질 수 있습니다. 아니면 영어 이름과 함께 라틴어를 사용하고 싶을 수도 있습니다.

 
Case table 
------------- 
PK CaseID 
FK PatientID 
    EntryDate 
    etc. 
 
CaseDisease table 
------------- 
PK, FK CaseID 
PK, FK DiseaseID 

 
Patient table 
------------- 
PK PatientID 
    Name 
    DateOfBirth 
    etc. 
 
Disease table 
------------- 
PK DiseaseID 
    Name 
이제 이러한 관계

 
Patient --1:n--> Case --1:n--> CaseDisease <--n:1-- Disease 

편집 :

하는 사례 테이블이 필요하지 않을 수도 있습니다 이제는 과도하게 설계된 것처럼 보일 수 있습니다. 그러나 앞으로는 다른 데이터도 케이스에 저장해야합니다. db 디자인은 근본적으로 변경 될 필요가 없습니다.


업데이트 :

또는, 사례 테이블없이 그것을 할 수 있습니다.이 경우, 접합 테이블은 관계 나 또한 데이터베이스에 대한 SQL 쿼리를 작성했습니다

 
Patient --1:n--> PatientDisease <--n:1-- Disease 
+0

왜 'Case' 테이블을 추가 했습니까? OP는 그 필요성을 지적하지 못했습니다. –

+0

그것은 단지 제안 일뿐입니다. 거기에 아무 문제가 없습니다. 나는 사례 표없이 제안을 추가했다. –

5

디자인이 옳지 않은 것 같습니다. 환자의 참조 번호가 환자을 고유하게 식별하는 경우 이 기본 키 여야합니다. 동일한 환자가 주어진 질병에 여러 번 등록 할 수있는 경우 환자 테이블이 아닌 교차점 테이블의 키 중 일부 여야합니다.

접합 테이블의 기본 키는 연관성을 고유하게 식별하는 것으로,이 경우 환자 테이블의 키, 질병 테이블 및 등록 날짜로 구성된 복합 키 여야합니다.

1
  1. '이름'기본 키가 좋은 생각이 아니다으로 - 환자에서 - 모두 외래 키 만들어 져야한다 기본 키
  2. DiseasesToPatients 테이블로 설정해야 해당 테이블에 ID 열이있을 갈까요 Diseases 테이블에 저장되고 해당 테이블에서 복합 기본 키로 설정되어야합니다.
+1

이름이 안정적인 경우 다른 후보 키와 마찬가지로 기본 키와 같습니다. 아무 이유없이 대리 키를 추가하는 것은 불필요합니다. –

+0

nvarchar 및 int 열 비교의 성능은 어떻습니까? – MarcinJuraszek

+0

OP는 그의 열 유형이 무엇인지 나타내지 않습니다. 그렇더라도 적절하게 색인 된 표는 차이를 거의 무시할 수 있습니다. –

관련 문제