2010-02-19 6 views
0

내 데이터베이스에 엔터프라이즈라는 테이블이 있습니다. 기업이 회사에 대한 수요를 표현하면 기업은 우리의 투자가 될 것입니다. 그리고 나서, 기업이 우리 회사의 제안을 받아들이면 계약서에 서명하고 기업은 고객이됩니다.Mysql 테이블 디자인 : 테이블 역할

이제 엔터프라이즈, 프로 스펙션, 클라이언트 인 3 개의 테이블을 만들었습니다.

그럼 데이터베이스를 어떻게 디자인해야합니까?

답변

2

한 가지 방법은 테이블 Companies과 이미 가지고있는 세 개의 테이블을 갖는 것입니다. 세 개의 테이블 모두 CompanyId 필드를 가지고 있으며 회사 키 테이블과 외부 키 구성 요소를 연결합니다. 이 디자인은 회사 정보를 한 곳에 보관해야하며 중복되지 않아도된다는 장점이 있습니다.

또 다른 방법은 회사 테이블에 필드를 만들어 기업, 잠재 고객 또는 클라이언트로 표시하는 것입니다.

어떤 디자인을 선택해야 할지는 주로 다른 클래스에 대한 정보에 따라 다릅니다. 회사 테이블보다 충분하다고 생각하는 상속 (즉, 클라이언트는 잠재 고객입니다)을 생각하면 충분합니다. 그러나, 만약 많은 양의 정보이고 첫 번째 접근법보다 세 가지 클래스 각각에 대한 정보가 다르다면 더 좋을 것입니다.

그러나 항상 정보를 한 곳, 즉 한 필드/표 (= 완전히 정규화 됨)에 보관해야합니다. 어떤 경우에는 성능상의 이유로이 원칙을 벗어날 수 있지만, 이는 유지 관리 부담이 높아진다는 것을 의미합니다. 값이 변경되면 n 개의 테이블을 업데이트해야합니다.

+0

나는 이것에 동의해야 할 것이다. 내게 하나의 테이블이 회사가 어떤 주를 나타내는 지 나타내는 플래그가있는 것처럼 보입니다. 여기 엔티티는 회사입니다. enterprise, prospection, client는 주입니다. –

+0

@thanks obalix, 당신의 제안은 아주 좋습니다. 그리고 또 다른 질문이 있습니다. 비즈니스 프로세스에 따라 자동으로 상태 (엔터프라이즈, 프로 스펙션, 클라이언트)를 변경하는 방법이 있습니다. –