봉황대 in CS
Key & Table 간의 관계 본문
[ 211016 4주차 강의 정리(3) ] + 워크북 & 스터디 내용 추가 (211031)
❖ Key
* 예시
홍길동과 홍길딩은 쌍둥이!
둘의 나이와 주소는 중복되기 때문에 이 값들을 통해서는 누가 누구인지를 구별할 수 없음
각각을 비교할 수 있는 속성(Attribute)은 이름! → Key
1. 정의
: DB에서 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성
주어진 Relation에서 모든 인스턴스 가운데
유일함(Uniqueness)을 보장해 주는 하나 이상의 속성의 집합
2. 특성
❏ 유일성 (Uniqueness)
: 하나의 키 값으로 하나의 튜플을 유일하게 식별할 수 있어야 한다
❏ 최소성 (Minimality)
: 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 한다
ex.
주민 등록 번호, 나이, 주소, mbti 중에서
나이, 주소, mbti는 충분히 중복될 수 있는 속성
주민 등록 번호는 절대 중복 불가 → 각각의 튜플을 구분할 수 있다! (유일성)
→ 주민 등록 번호 만으로도 각 튜플을 유일하게 식별할 수 있다! (최소성)
3. 종류
ex.
❏ 슈퍼키 (Super Key)
: 한 Relation 내의 특정 튜플을 고유하게 식별하는 속성들의 집합 (Key의 개념)
유일성 (✓) / 최소성 (✗)
ex. 슈퍼키 3가지
학번
주민 등록 번호
이름-나이 (피카츄와 라이츄의 나이가 같아도 이름으로 구별할 수 있음)
❏ 후보키 (Candidate Key)
: 한 Relation 내의 튜플을 유일하게 구분할 수 있는 최소한의 속성들의 모임
유일성 (✓) / 최소성 (✓)
ex. 후보키 2가지
학번
주민 등록 번호
(이름-나이는 최소성을 만족하지 못하므로 후보키가 되지 못함)
* Diagram
후보키 = 기본키 + 대체키
❏ 기본키 (Primary Key) - PK
: 후보키 중에서 특별히 선정된 키 (후보키가 두 개 이상이면 하나만을 기본키로 선정)
유일하게 각 행들을 구분할 수 있어야 하며, NULL 값 & 중복값을 가질 수 없다!
유일성 (✓) / 최소성 (✓)
ex.
학번 또는 주민 등록 번호가 기본키가 될 수 있음
* PK는 임의의 인덱스로 구현하는 것을 추천
ex.
주민 등록 번호를 PK로 설정해놓았다가 만약 정부에서 주민 등록 번호를 사용하지 말라고 공문이 내려왔다면??
→ 진짜 개망함
❏ 대체키 (Alternate Key)
: 기본키가 아닌 후보키 (대체키 = 후보키 - 기본키)
유일성 (✓) / 최소성 (✓)
ex.
학번이 기본키라면 주민 등록 번호가 대체키
주민 등록 번호가 기본키라면 학번이 대체키
❏ 외래키 (Foreign Key) - FK
: 다른 Relation의 기본키를 참조하는 속성 또는 속성들의 집합 → Relation들 간의 관계를 나타냄
외래키는 참조 테이블의 기본키로 설정되어 있어야 함!
외래키로 지정되는 참조 테이블의 기본키에 없는 값은 입력 불가 (참조 무결성 조건)
* 외래키는 데이터 무결성 때문에 존재한다
(데이터 무결성 : 데이터가 항상 정확한 값을 유지하는 성질)
ex.
외래키 : 학번
* 참조값은 해당 Table의 기본키(PK) 값으로 하는 것이 좋다!
* 외래키 설정을 하면 정확하고 올바른 데이터가 들어갈 수 있는 장점이 있음
그러나 개발하는 단계에서 외래키 관계까지 생각해서 개발을 하면 복잡함
→ 실제 실무에서는 관계 설정을 하지 않고 DB를 설계하는 경우가 많음
❖ Table 간의 관계
❏ 1:1 관계
: 상태 엔티티와 반드시 단 하나의 관계를 가지는 것
ex. 결혼 (일부일처제)
❏ 1:N 관계 (일대다 관계)
: 한쪽 엔티티가 관계를 맺은 엔티티 쪽에 여러 객체를 가지는 것
ex. 부모 & 자식
부모 - PK (Primary Key)
기본키, 중복 불가, NULL 불가
자식 - FK (Foreign Key)
외래키, 기본키와 동일한 도메인
❏ N:M 관계 (다대다 관계)
: 관계를 가진 양쪽 엔티티 모두 1:N 관계를 가지는 것
→ 서로가 서로를 1:N 관계로 보고 있음
ex. 학원 & 학생
서로의 PK를 자신의 외래키 Column으로 가짐
일반적으로 N:M 관계는 두 테이블의 대표키를 속성으로 갖는 또 다른 테이블을 생성해서 관리
* Entity
: Database에 표현하려고 하는 유형, 무형의 객체로서 서로 구별되는 것
* Domain
: 값의 종류 & 범위
'Server' 카테고리의 다른 글
[Server] Offset 기반 vs. Cursor 기반 Pagination (feat. nGrinder 부하 테스트) (0) | 2025.01.20 |
---|---|
REST API (0) | 2021.11.14 |
API / HTTP Packet / HTTP Method (0) | 2021.11.07 |
Proxy (0) | 2021.10.11 |
IP와 포트 (0) | 2021.10.07 |