1

ER 다이어그램의 일부분 here.어떻게 ER의이 부분을 관계형 스키마에 매핑 할 수 있으며 적절한 속성은 무엇이 될 수 있습니까?

여기에서 고객은 비공개 및 비즈니스가 분리 된 필수 참여가있는 하위 클래스이고 비즈니스 고객은 실버, 골드 및 다이아몬드 하위 클래스의 상위 클래스이며 각각 다시 분리됩니다 필수 참여

빠른 설명 : 고객은 비즈니스 및 개인으로 구분됩니다. 비즈니스 고객에게는 실버 : 10 % 할인, 골드 : 25 % 할인, 다이아몬드 : 40 % 할인의 3 가지 회원 옵션이 있습니다. 위의 내용을 관계형 스키마로 매핑하는 가장 좋은 방법은 무엇입니까? 속성과 일반 속성을 구분하는 것은 무엇입니까? 현재, 나는 다음과 같이 올라와있다 :

4 테이블 - PrivateCustomer 및 SilverMember, 골드 멤버와 DiamondMember (고객 수퍼 클래스) (비즈니스에서 슈퍼 클래스)

PrivateCustomer (CuID, CuFirstName, CuLastName, CuDOB, CompanyName, CuAddressLine1, CuAddressLine2, PhoneNumber, CuEmail, CuNotes, CuLocID)

SilverMember (CuID, ????? DiscPerc, DiscAccrued, CuLocID)

GoldMember (CuID, ???? DiscPerc, DiscAccrued, CuLocID)

DiamondMember (CuID, ???? DiscPerc, DiscAccrued, CuLocID)

는 우편 번호, 도시, 국가 (다른 테이블에 저장되어있는 위치 세부 사항 - tblCuLoc)에 관한 이행 종속성을 제거하는 외래 키입니다 CuLocID 모든

답변

0

먼저, 생각 당신의 ERM은 나쁘다 왜냐하면 여러분은 엔티티에 배치하는 대신 역할 패턴을 더 잘 사용해야하기 때문입니다. 즉, 회원 옵션 Silver, GoldDiamond은 엔티티가 아닙니다.

가 귀하의 질문에 대답하기 위해, 당신은 당신의 클래스를 매핑하는 세 가지 옵션이 있습니다 :

  1. 클래스 계층 구조의 모든 속성은 하나 개의 테이블 (단일 테이블 상속)로 들어갑니다.
  2. 각 클래스의 모든 특성은 별도의 테이블에 저장됩니다 (클래스 테이블 상속).
  3. 모든 비 추상 클래스의 모든 특성은 별도의 테이블로 전달됩니다 (구체 테이블 상속).

하지만 솔직히 ERM을 수정해야합니다. 최소한 Percentage, NameBusiness Customer 엔티티와 Discount Group 엔티티 사이에 일대 다 관계가있는 할인 멤버십에 대한 엔티티 (예 : Discount Group)를 만들어야합니다. 하위 클래스를 사용하는 대신 고객 엔터티 자체의 역할 패턴을 사용할 수도 있습니다. 예를 들어, 사용하여 관계형 스키마에

Proposal to improve the original ERM

매핑이 : 여기에 할인 회원을 향상시킬 수있는 UML의 ERM로 내 제안이다 2.접근 방식 (클래스 테이블 상속) 다음과 같은 관계 것 :

  • customer(id, ...)
  • business_customer(id, ...)
  • private_customer(id, ...)
  • discount_membership(customer_id, group_id, discount_accrued)
  • discount_group(id, name, discount_percantage)

가 무 힘을 ltiplicity가 discount_membership 인 경우 customer_id 열과 고유 한 외래 키 조건에 고유 한 조건을 사용해야합니다.

+0

현재 시나리오에서 어떻게 역할 패턴을 사용할 수 있는지 자세히 설명해 주시겠습니까? 감사. –

+0

매핑에 관한 내 대답을 수정했습니다. 죄송합니다. – witrin

+0

'할인 그룹'과 같은 엔티티를 사용해야합니다. 이를 통해 고객과 할인 그룹 간의 일대 다 관계가 필요할 것입니다. – witrin