봉황대 in CS

Key & Table 간의 관계 본문

Server

Key & Table 간의 관계

등 긁는 봉황대 2021. 10. 25. 22:07

[ 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
Comments