2011-10-24 3 views
2

의사의 사무실과 약국의 데이터베이스 모델을 설계하고 있는데 고객이 고객환자에 대한 데이터를 저장하도록 요청하면 고객은 약국을 구입 한 사람과 의사를 볼 수있는 환자이므로 고객은 동시에 인내심을 갖고 반역한다. 이 상황을 어떻게 관리 할 것인가? 각각에 대해 하나의 엔티티를 작성하면 사람이 두 테이블에 모두있을 확률이 있습니다. 어떤 제안?MySQL에서 속성이 공통 인 두 엔티티를 구현하는 방법은 무엇입니까?

답변

2

두 가지 방법 :

  1. 한 표라는 사람 테이블은 파일 'is_customer'진정한 될 수있다 'is_patient'/ 거짓

  2. 세 개의 테이블을 모두 저장하는 사람들을위한 일을 가지고 고유 한 ID를 가진 관련 데이터 (이름, 주소, 전화 번호 등), 고유 한 ID의 테이블 및 환자 테이블에 대한 참조 인 환자에 대한 하나의 테이블, 고유 ID의 테이블 일 뿐인 고객 용 테이블 및 people 테이블에 대한 참조. 고객 및 환자에 대한 데이터가 정확히 동일한 경우

+0

옵션 1, 그러나 표시기 열이 필요하다는 것을 나는 모른다 - 그 값은 관련 테이블에있는'person_id'/etc의 존재에 기초하여 생성 될 수있다. –

+0

그래, 그게 옵션 2에 관한 모든 것, 그 관련 테이블의 생성은 첫 번째 참조 : :). – Whetstone

2

, 당신은 개인 정보를 하나의 테이블과 비트 또는 정수가 될 수 중 하나 type 열을 가질 수 있습니다. 이 type 열은 기록이 환자인지 고객인지 여부를 알려줍니다. 환자가 고객이기도 한 경우에 대한 반복 된 기록은 보이지 않지만 이러한 상황을 피하려면 링크 테이블을 만들어야합니다. 뭔가 같은 :

person 
(id, name, address, ...) 

그리고

person_type(person_id, type_id) 

고객과 환자가이 표 2 개 항목이 있습니다 모두의 사람; 각각 type (고객/환자) 당 하나.

관련 문제