2014-11-26 3 views
1

저는 데이터베이스 설계에 익숙하지 않고 도전에 직면하고 있습니다.데이터베이스 설계 :이 고유 한 관계를 설계하는 방법

실험실에서는 DNA 샘플을 조직 샘플에서 준비합니다. 이러한 조직 샘플에는 종과 위치와 같은 속성이 있습니다. DNA 샘플 준비 전에 다른 조직 샘플을 혼합하는 것이 가능할 수도 있지만 항상 그런 것은 아닙니다.

그래서, 다음과 같은 속성을 가진 3 개 테이블이 있습니다 :

테이블, Tissue_sample :

- ID 
- location 
- species 

테이블, Mixed_tissue_sample :

- ID 
- tissue samples which are mixed together 

테이블, DNA_sample :

- ID 
- tissue_sample OR mixed_tissue_sample 

DNA 샘플을 준비한 모든 조직 샘플을 검색 할 수 있어야합니다.

데이터베이스에 가장 적합한 방법은 무엇입니까? 그리고 MySQL Workbench에서이 작업을 수행 할 수 있습니까?

+0

DNA 샘플의 목적으로 혼합되지 않은 "혼합 조직 샘플"과 같은 개념이 있습니까? 저는 정말로 당신이 단지 2 개의 테이블을 필요로하는 것처럼 들리므로 묻습니다 - DNA 샘플, 조직 샘플과 일대 다 관계. 따라서 DNA 샘플 당 하나의 행이 조직 샘플의 하나 이상의 행에 결합됩니다. 그러나 혼합 조직 샘플이 DNA 샘플과 별개의 의미 또는 목적을 가지고 있다면, 좀 더 복잡한 것이 필요할 것입니다. –

+1

예, mixed_tissue_sample은 용도가 있으며 자체적 인 엔티티 여야합니다. 이것은 tissue_sample과 다른 추가 속성을 갖습니다. 그리고 mixed_tissue_sample에 대해 여러 DNA_samples를 생성 할 수 있습니다. – ChrVer

+0

여러 혼합 조직 샘플의 _ 조합으로 DNA 샘플을 만들 수 있습니까? (말하자면, 이전에 3 개의 2 개의 다른 그룹으로 혼합 된 총 6 종에서) –

답변

0

DNA 표에 두 개의 필드를 정의하여 단일 또는 혼합 된 조직 샘플을 참조하십시오. 이 필드 중 하나는 NULL로 유지됩니다.

조직 : ID, 위치 종

혼합

: ID ...

mixed_tissues : mixed_id는

DNA tissue_id : mixed_id ID, tissue_id을

그리고 네, 당신은 MySQL 워크 벤치에서 이러한 테이블을 만들 수 있습니다.

+0

다형성 연관성 방지 패턴 참조 –

0

먼저 Tissue_sampleMixed_tissue_sample 사이의 관계를 해결하십시오. 1 개 이상의 Tissue_sample은 Mixed_tissue_sample을 정의하므로 관계는 1 : n이며 에 다른 열이 있어야합니다.이 열은 foreign key에서 Mixed_tissue_sample으로 사용됩니다. Mixed_tissue_sample으로 식별 된 두 표를 결합하여 혼합 조직 표본의 조직 표본을 얻을 수 있습니다.

둘째, DNA_sample을 해결해야합니다. foreign key ~ Tissue_sampleMixed_tissue_sample도 필요합니다.

당신은 할 수는 확실히 DNA_sample 방지하는 트리거를 만들어 모두 아무런 관련이 없습니다 당신이 필요하면 모두 foreign keys에 대한 값이 DNA_sample의 기록 초래하는 어떤 inserts 또는 updates.

0

테이블 상속을 사용하십시오.

중 하나는 "유형"열이 모두 같은 테이블 (단일 테이블 상속)에

을 조직 샘플과 혼합 조직 샘플을 넣어 또는 공통 테이블의 주요 키 가리키는 두 개의 서로 다른 테이블에 넣어 (클래스 테이블 상속). DNA 샘플 표는이 공통 표를 가리킬 것입니다.

+0

가장 우아한 솔루션처럼 보입니다. 모든 해답을 가져 주셔서 감사합니다. 나는이 포럼을 더 자주 방문 할 것입니다! – ChrVer