관계
관계는 크게 식별/비식별 관계로 나누어 볼 수 있어요. 말그대로 식별할 수 있거나 없는 것을 의미한다고 하는데 솔직히 처음에 이게 무슨 말인가 싶었어요... 그래서 예시를 열심히 찾고 찾았답니다 :]
이걸 알기 전에 Foreign Identifier에 대해 알아야 해요!
외부식별자는 속성을 말하는데 이름처럼 내 엔터티 아니고 다른 엔터티 즉, 자식 엔터티에 생성되는 속성이라는 거예요.
예를 들어 고객과 계좌 엔터티가 각각 존재한다면, 고객은 고객만으로도 존재할 수 있지만 계좌는 고객이 만들어줘야 존재할 수 있잖아요?
이때 내 엔터티, 즉 Strong Entity가 고객이 되고, 내 거 아닌 엔터티, 즉 Week Entity가 계좌가 되는 거예요,
1. Identification Relationship
비슷한 예로 식별 관계를 설명해볼게요.
계좌에 PK가 되는 계좌번호가 있고, 계좌명, 개설일자가 있어요.
계좌입금에는 FK가 되는 계좌번호, 입금일자, 일련번호가 있고, 금액이 있어요.
여기서 Strong Entity는 계좌고 Week Entity는 계좌입금이 되겠죠? 그리고 공통되는 계좌번호가 보이실 거예요.
계좌의 PK 즉, 기본키인 계좌번호가 계좌입금의 FK로 존재하고 있고 이게 또 PK에 포함되고 있단 말이죠?
이처럼 식별관계라는 것은 계좌 엔터티의 기본키인 계좌번호를 계좌입금 기본키의 하나로 공유하는 거고 여기에 우리는 FK를 부여했다고 말을 해요.
이렇게 되면 강한 엔터티의 기본값이 변경될 때, 식별관계에 있는 약한 엔터티의 값도 함께 변경된답니다.
2. Non-Identification Relationship
비식별관계는 그러면 식별관계랑은 당연히 다르겠죠!
한 엔터티의 기본키(PK)가 다른 엔터티의 기본키가 아니라 그낭 일반 칼럼이 됩니다!
각자 스스로 존재할 수 있는 거예요.
예를 들면
부서에 부서코드가 PK이고, 부서명, 개설일자가 있어요.
사원에는 사원번호가 PK이고, 사원명과 부서코드(FK)가 있어요.
이러면 식별관계에서처럼 기본키에 부서코드가 들어가 있는 게 아니라, 일반 칼럼으로 포함되어서 비식별관계라고 볼 수 있답니다.
Entity Identifier
엔터티 식별자는 엔터티를 대표할 수 있는 유일한 속성을 의미해요.
예를 들어서 주민등록번호 등이 있겠죠~
1. 주식별자(기본키, PK=primary key)
*어떤 테이블이든 PK는 필수입니다!!
1) 최소성: 최소성을 만족하는 키, 주민등록번호 하나만 가지고 한 사람을 식별할 수 있는 것처럼 최소한의 것으로 식별 가능해야 해요
2) 대표성: 엔터티 대표할 수 있어야 함
3) 유일성: 엔터티의 인스턴스(record)를 유일하게 식별
4) 불변성: 자주 변경되지 않아야 함, 물리적 모델링에서는 더이상 변경되지 않아야 해요 그렇지 않으면 전에 공부했던 것처럼 데이터가 전부 안타까운 상황에 처하게 될 거랍니다...
#키의 종류
**기본키(PK)와 외래키(FK)는 꼭 기억하고 가야 해요!
***인조식별자: 여러 개를 합치거나 시퀀스를 가지고 1,2,3,... 번호를 부여하는 등 인위적으로 만든 거예요!
2. 식별자 종류
1) 식별자 대표성: 주식별자/보조식별자
*보조식별자: 유일성/최소성 O, 대표성X
2) 생성여부: 내부식별자/외부식별자
*내부식별자: 엔터티 내부에서 스스로 생성
*외부식별자: 다른 엔터티와의 관계로 생성
3) 속성 수: 단일식별자/복합식별자
4) 대체 여부: 본질식별자/인조식별자
*본질식별자: 비즈니스 프로세스에서 생성
'SQL' 카테고리의 다른 글
SQLD 6 (0) | 2023.09.07 |
---|---|
SQLD 5 (0) | 2023.09.07 |
SQLD 3 (0) | 2023.08.31 |
SQLD 2 (0) | 2023.08.27 |
SQLD 1 (0) | 2023.08.26 |