Database Modeling 1: 주요 용어 및 키(Key)

업데이트:
3 분 소요

비트캠프 서초본원 엄진영 강사님의 수업을 듣고 정리했습니다.


DB Modeling

Database

Database

  • 데이터베이스는상호 연관이 있는 데이터의 모임을 가리킨다.
  • 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합이다.(wikipedia.org)
  • 논리적으로 연관된 데이터를 검색과 갱신이 쉽도록 고도로 구조화한 것이다.

DB의 목적(wikipedia.og)

  • 데이터 중복 최소화
  • 데이터 공유
  • 일관성, 무결성, 보안성 유지
  • 데이터 접근 용이성
  • 데이터 저장 공간 절약

모델링와 렌더링

모델링?

  • 분석하고 구조화시켜 생각한 바를 글과 그림으로 표현한 것.

렌더링?

  • 명령어를 해석하여 화면에 출력하는 것.
  • 예) HTML 렌더링 ⇒ HTML 태그를 해석하여 그에 해당하는 UI를 출력하는 것.

DB 모델링?

  • 데이터를 분석하고 구조화시켜 데이터 속성과 관계를 글과 그림으로 표현한 것.
  • 목표? 데이터가 중복되지 않도록 테이블을 구조화하는 것.
  • 중복 데이터를 제거 ⇒ 데이터의 안정성, 신뢰성을 높인다. ⇒ 무결성을 유지한다.

1. 주요 용어

  • table(relation; entity; file)
  • intension(schema; header) ⇒ 데이터 구조 설계도
  • extension(instance; data) ⇒ 데이터
  • row(tuple; record) ⇒ 데이터(여러 컬럼으로 이루어진) 한 개. 예) 학생
  • column(attribute; field) ⇒ 데이터의 한 항목. 예) 이름, 학번, 전화번호

2. 키(key)

  • 데이터를 구분할 때 사용할 식별자.
  • 수퍼 키(super key)”라 부르기도 한다.

식별자?

  • 데이터를 구분할 때 사용하는 값.
  • 한 개 이상의 컬럼으로 구성된다.
  • 식별자를 key라고 부른다.
  • 예) 학생(학번, 이름, 전화, 이메일, 학과, 우편번호, 주소, 주민등록번호)
    • 학번 (O)
    • 주민등록번호 (O)
    • 이메일 (O)
    • 전화 (X)
    • (이름,전화) (O)
    • (이메일,이름) (O)
    • (이름,학과,학번) (O)
    • (이름,학과,전화) (O)

후보키(candidate key) 선정

  • super key 들 중에서 선별된 최소키를 가리킨다.
  • 최소키? 최소한의 컬럼 값 만으로 식별이 가능한 key.
  • 수퍼 키 예)
    • 학번 (O)
    • 주민등록번호 (O)
    • 이메일 (O)
    • (이름,전화) (O) ⇒ 이름과 전화 값을 묶은 것 보다 적은 개 수의 후보 키가 있다면 가능한 제외하라!
    • (이메일,이름) (X) ⇒ 이메일 만으로 식별 가능
    • (이름,학과,학번) (X) ⇒ 학번 만으로 식별 가능
    • (이름,학과,전화) (x) ⇒ 이름과 학과, 전화 보다 더 적은 컬럼의 후보 키가 있기 때문에 가능한 제외한다.

기본 키/주 키(primary key; PK) 선정

  • 후보키 중에서 데이터 식별자로 사용하기 위해 선정된 키.
    • 예) 학번
  • 나머지 후보키는 대안키(alternate key)라 부른다.
    • 예) 주민등록번호, 이메일, (이름, 전화)
  • 왜? 비록 PK는 아니지만 PK와 마찬가지로 데이터 식별자로 대체하여 사용할 수 있기 때문이다.

대리 키(surrogate key)/인공 키(artificial key)

  • 주 키의 컬럼의 개수가 많거나 주 키로 사용할 적절한 컬럼이 없는 경우, 일련번호와 같은 임의의 컬럼을 추가하여 PK로 만든다.
    • 예1) 게시물 첨부파일(파일명, 등록일)
      • 파일명이 중복될 수 있다.
      • 파일명과 등록일을 묶어서 PK로 사용하기에는 적절하지 않다.
      • 이런 경우 “첨부파일번호” 컬럼을 임의로 추가하여 PK로 설정한다.
      • 결론) 게시물 첨부파일(파일번호, 파일명, 등록일)
    • 예2) 수강신청(수강생이름, 수강생전화, 수강생이메일, 과목명, 결제여부, 결제유형)
      • 주 키로 사용할만한 적절한 컬럼이 없다.
      • 여러 개의 컬럼을 묶어서 주 키로 사용하자니 너무 복잡하다.
      • 이런 경우에도 “수강신청번호”와 같은 임의의 컬럼을 추가하여 PK로 선정하는 것이 좋다.
  • 주 키로 선정된 컬럼의 값은 변경될 수 없기 때문에, 일련번호와 같은 임의의 컬럼을 pk로 사용한다.
    • pk가 아닌 컬럼은 언제든 값을 변경할 수 있다.
    • 예1) 수강생(이름, 나이, 핸드폰, 이메일, 우편번호, 주소, 은행명, 계좌번호, 최종학력, 전공)
      • 핸드폰이나 이메일은 PK로 사용할 수 있다.
      • 그러나 핸드폰이나 이메일은 가끔 변경될 수 있다.
      • 문제는 PK로 지정된 컬럼은 한 번 사용되면 변경할 수 없다는 것이다.
      • 핸드폰과 이메일처럼 나중에 변경될 수 있는 컬럼인 경우 PK로 지정하지 않는 것이 좋다.
      • 그럼 PK 컬럼은 무엇을 사용하는가?
      • 이런 경우 “수강생번호”와 같은 임의의 컬럼을 만들어 PK로 사용한다.
    • 예2) 페이스북에 로그인할 때 이메일이나 전화번호를 사용하지만, 실제 주키로 사용하는 것은 사용자 일련번호이다.

대체 키(alternate key)

  • 후보 키(candidate key) 중에서 PK로 선정된 키를 제외한 나머지 후보 키를 가리킨다.
  • 대체 키 예)
    • 학번 (X) ⇒ 만약 학번이 PK로 선정되었다면 대체 키가 아니다.
    • 주민등록번호 (O) ⇒ PK 대신 사용할 수 있는 키를 대체 키라 부른다.
    • 이메일 (O) ⇒ PK 대신 사용할 수 있는 키를 대체 키라 부른다.
  • 대체 키는 테이블을 정의할 때 Unique 컬럼으로 지정된다.
    • 즉 PK는 아니지만 값이 중복되면 안되는 컬럼이기 때문에 중복되지 않도록 유니크 컬럼으로 지정한다.

외래 키(foreign key)

  • 다른 릴레이션(테이블)의 PK 값을 저장하는 컬럼.
  • FK가 있는 테이블을 자식 테이블(릴레이션)이라 부르고, FK가 가리키는 PK컬럼이 있는 테이블을 부모 테이블(릴레이션)이라 부른다.
  • 보통 부모-자식 관계를 맺는 테이블이 있을 때, 자식 테이블 쪽에 부모 테이블의 데이터를 가리키기 위해 외부키 컬럼을 둔다.