제가 잠시 헷갈렸던것 같습니다.
일단 해주신 설명을 읽고, ERWin 으로 모델링을 해보니
제익님꼐서 답변해 주신 스키마가 나오더군요
제가 Parent Entity를 book 으로 잘못 오인했던것 같습니다.
다시 한번 정리하자면
자식 Entity 에 어떠한 애트리뷰트가
부모 Entity 의 어떠한 애트리뷰트에 대해서
FK 가 되었다면
1. 자식 Entity에서는 얼마든지 튜플을 삭제할 수 있지만
2. 부모 Entity에서 튜플을 삭제하려 한다면
자식 Entiy에 FK 가 걸린 자료가 남아있기 때문에 삭제할 수 없다
저의 정리가 맞는지 한번 코멘트 달아주시면 감사하겠습니다.
PS. DB를 맨날 엔지니어적으로 접근해서 주먹구구식으로 쓸떄는
잘 돌아갔는데,,
모델링적인 관점으로 접근해서 제대로 해보려니 힘들군요..
많은 도움 부탁드립니다.
-- 서준원 님이 쓰신 글:
>> 여태까지 막역히 DB를 써오다가 정확하게 공부하고 들어가려니 힘드네요
>> 예를 들어서 설명해 드리겠습니다.
>> "책" Entity 가 있고, "저자" Entity가 있습니다.
>> 각각의 애트리뷰트를 간단히 나타내면 다음과 같이 나타낼 수 있겠습니다.
>>
>> ---- 책-----
>> |#*ISBN |
>> | *저자이름 |
>> | 가격 |
>> ------------
>>
>> --- 저자 ---
>> |#*저자이름 |
>> | 주소 |
>> | 전화번호 |
>> ------------
>> (# : 식별자, * : 필수애트리뷰트)
>>
>> 이렇게 두개의 Entity가 있다고 가정할때
>> 이제 두 Entity간의 관계를 설정하려 합니다.
>>
>> 관계 1. [책 : 저자] 의 관계는 [일대일 관계]라 가정
>> 관계 2. 책은 저자에 대해서 필수
>> 저자는 책에 대해서 필수
>>
>> 일때
>>
>> 질문1. "책의 저자이름" 애트리뷰트가 저자 Entity 에 대해서 FK가 되는것이 맞는지?
>> 질문2. 만약에 "저자"테이블에서 한개의 튜플을 지우려 한다면
>> 아직 "책"테이블에는 저자를 참조하는 데이터가 남아 있기 때문에
>> 지우지 못하는 상황이 일어나는것이 맞는지요?
|