2010-03-17 3 views
1

다음 엔티티 관계 구조로 인해 LOAN 항목과 ITEM 엔티티 간의 관계가 유효한지 파악하기가 어려워요?엔티티 관계 - 약한 엔티티가 '하나'로 '일대 다'관계에 참여할 수 있습니까?

약한 기업의 대출은 'loan_dateLeant'의 부분 키와 고객 및 ITEM의 기본 키를 사용하여 LOAN의 기본 키를 형성합니다. 그러나 대출은 하나 이상의 항목으로 구성 될 수 있으므로 ITEM과 '일대 다'관계가 있습니다. 하지만 반드시 하나 이상의 항목을 빌려 쓰면 대출 레코드는 기본 키의 일부에 대해 두 개의 item_id 값을 갖게됩니다.

alt text

답변

2

당신 말이 맞아, 그 유효하지 않습니다 - 당신은 기본 키의 정의 일환으로 일대 다 관계를 사용할 수 없습니다. 대신 할 일은 대여 항목에 포함 된 고유 키 대신 고유 한 loan_id을 추가하는 것입니다. 단일 대출은 고객 및 대출 ID (또는 고객, 날짜 및 대출 ID)에 의해 정의됩니다.

그래도 작동하지 않는 경우 date_leant을 datetime 필드로 지정하고 동시에 시스템의 제약 조건 내에서 두 개의 대출이 동시에 발생할 수 없을 때까지 정밀도를 높이십시오. 단일 고객이 서로 밀리 초 내에 두 개의 별도 대출을 처리한다는 것입니까?

이것은 "하나"로 관계에 참여하는 것을 막는 것은 아닙니다. 그것은 단지 당신이 "많은"것을 사용하여 약한 실체를 정의 할 수 없다는 것을 의미합니다.

+0

그래서 datetime 기법을 사용하면 기본적으로 Loan 레코드를 식별하는 데 Item 엔티티를 사용하지 않습니다. Loan datetime과 고객 ID를 사용 하시겠습니까? 나는 그걸로 괜찮다고 생각합니다. – user271132

+1

그래, 그건 생각이야. – Tim

+0

그러나 어떤 상품이 대출과 관련되어 있는지 어떻게 알 수 있습니까? – user271132

0

사실,이 작업을 수행 할 수 있습니다.

대출의 기본 키는 날짜 + 고객 식별자에만 의존합니다. '할 수 있음'관계에서 최대 카디널리티가 '1'인 경우 (즉, 대출은 1 명의 고객 만 관련됨) 기본 키는 대출로 충분합니다.

ITEM 테이블은 대신 ITEM 내의 대출 (customerID + date) 식별자를 외래 키로 사용합니다. 이 모델링은 대출의 기본 키에 영향을주지 않습니다.

관련 문제