일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 배포 프로세스
- Logrus
- 티스토리챌린지
- apollo router
- Infra
- 오블완
- 사설 ip
- gitops
- UnBuffered channel
- go
- 대규모 시스템 설계
- elasticsearch
- m4 pro
- 코사인 유사성 메트릭스
- GoF
- notification system
- 윈도우키보드
- 디자인패턴
- 배포 파이프라인
- cosine similarity metric
- golang
- kube-prometheus-stack
- body size
- goland
- intellij ide
- Kubernetes
- Intellij
- AWS
- Buffered channel
- http 413
Archives
- Today
- Total
Fall in IT.
데이터베이스 식별관계와 비식별관계 본문
반응형
안녕하세요.
오늘은 데이터베이스 테이블간의 식별관계와 비식별관계에 대해서 간단하게 알아보겠습니다.
테이블간의 관계 설정
예를들어, 데이터베이스에서 유저테이블과 주문테이블간의 관계는 1대N 관계이다.
왜냐하면 한명의 유저는 여러번 주문을 할 수 있기 때문이다. 이때 두 테이블 간의 관계를 정의해야하는데
비식별관계로 정의할수도 있고, 식별관계로 정의할수도 있다.
식별관계
- 부모 테이블(=참조되는 테이블)의 기본키를 자식 테이블(=참조하는 테이블)의 기본키로 이용하는 방법을 말한다.
- 위의 예에서는 유저테이블이 부모테이블이 되고 자식 테이블이 주문테이블이 된다.
비식별관계
- 부모 테이블(=참조되는 테이블)의 기본키를 자식 테이블(=참조하는 테이블)의 외래키로 이용하는 방법을 말한다.
식별관계와 비식별관계의 차이점
- 식별관계를 사용할 경우 반드시 부모테이블에 데이터가 존재해야만 자식테이블에 데이터를 추가할 수 있다.
- 비식별관계는 부모 데이터가 없어도 자식 테이블에서 데이터를 추가할 수 있다.
- 다른말로하면, 식별관계는 데이터 정합성을 데이터베이스 단계에서 보장되며
- 비식별관계는 데이터베이스 단계에서 데이터 정합성을 보장하지 않는다.
- 식별관계의 경우 데이터 정합성을 보장하지만 자식테이블에서 부모테이블의 기본키를 기본키로 사용하고 있는 구조이기 때문에 구조 변경이 자유롭지 못하다.
정리
- 보통 식별관계보다 비식별관계를 더 선호하는데 그 이유는 아래와 같다.
- 구조 변경에 용이. 식별관계는 부모테이블의 기본키가 자식테이블에서도 기본키로 사용되므로 구조변경이 어렵다.
- 부모테이블과의 의존성 제거. 위와 같은 맥락인데 식별관계는 부모테이블의 값이 없이는 자식테이블에 데이터가 존재할수없다.
- 과도한 인덱스 제거
- 하지만, 정답은 없고 개념을 잘 파악하고 현재 컨텍스트에서 어떤 방법이 더 효율적인지 판단하여 사용해야한다.
참조
반응형
Comments