2017-10-29 3 views
0

나는 두 개의 분리 된 subentities 절약-계정검사-계정와 관계-A 인 이있는 계정 개체가 있습니다. 그러나 고객 엔티티가 예금주계정 엔티티 (아래 ER 다이어그램과 같은 사용 예)와 관계가 있습니다.외래 키 제약 조건을 추가하는 방법은 IS-A와 두 테이블 간의 관계입니까? 내 ER-모델의 첫 번째

고객 (CID, CNAME)

예금자 (CID, 계좌 번호)

:

enter image description here

그러므로 나는이 같은 테이블에 ER 번역

저축 계좌 (계좌 번호, 균형, 금리)

검사-계정 (계좌 번호, 균형, 당좌 대월 - 양)

그래서 마지막으로, 내가 가지고에만 이 개 테이블 저장 - 계정 및 확인 - 계정 IS-A 관계. 마지막 줄에서

CREATE TABLE depositor(
    customer_id   int    not null, 
    account_number  int    not null, 
    access_date   Date   DEFAULT GETDATE(), 
    PRIMARY KEY(customer_id, account_number), 
    FOREIGN KEY(customer_id) REFERENCES customer(customer_id), 
    FOREIGN KEY(account_number) REFERENCES account(account_number) 
) 

, ACCOUNT_NUMBER 외래 키 에 참조해야합니다 :


는 그 다음 문제는이 T-SQL을, 예금자 테이블을 작성, 발생 계정 테이블이지만, 내가 가지고있는 것은 저축 계좌당좌 예금 계좌입니다. 이 상황에서 T-SQL에 제약 조건을 어떻게 추가합니까? IS-A 관계에서 두 개의 테이블 만 가져 오는 경우 제약 조건을 추가 할 수 있습니까?

답변

1

나는 account이라는 추가 테이블을 제안합니다. 그런 다음 saving-accountchecking-account은이를 가리키는 별도의 테이블이어야합니다.

또한 account_number 대신 account_id 필드가 PK로 있어야합니다. 모범 사례 규칙으로서 PK는 어떤 비즈니스 의미도 가져서는 안되며 추상적 개념이어야합니다. 요약

, 나는 테이블에 다음과 같은 제안 :

account(aid, account-number, balance, plus any other common field for account) 
saving-account([optional pk], aid_ref, interest-rate, plus fields specific to saving-account) 
checking-account([optional pk], aid_ref, overdraft-amount, plus fields specific to saving-account) 
customer(cid, cname) 
depositor(cid, aid) 
+0

감사합니다,하지만 T-SQL에서 계정 테이블을하지 않고 있음을 달성 할 수있다? –

+0

아니요. 외래 키는 조건부 일 수 없습니다. – FLICKER

관련 문제