database computer_science cs Database DBMS RDBMS

[CS/Computer Science][데이터베이스 / Database] RDBMS의 기본

Kwangjin Park

May 03, 2025 · 5 min read

Follow

먼저, 가장 널리 사용되는 데이터베이스 종류인 RDBMS(관계형 데이터베이스)에 대해 알아보고, 이어서 데이터베이스의 무결성 제약조건까지 알아보도록 하겠습니다.

RDBMS는 테이블의 구성과 테이블의 관계가 핵심이기에, 크게 두 분류로 나누어 살펴보겠습니다.

1. 테이블의 구성: 필드와 레코드

image1

  • 필드 타입: 각 필드로 사용 가능한 데이터 유형/형식
  • : 테이블 내, 특정 레코드를 식별할 수 있는 필드의 집합

필드 타입

  • 필드 타입은 DBMS 별로 저장 가능한 종류의 차이가 있음
  • MySQL 기준, 저장 가능한 필드 타입의 종류
    1. 숫자형
      • 정수
        • TINYINT
          • 1바이트의 정수
        • SMALLINT
          • 2바이트의 정수
        • MEDIUMINT
          • 3바이트의 정수
        • INT
          • 4바이트의 정수
        • BIGINT
          • 8바이트의 정수
      • 실수
        • FLOAT
          • 4바이트의 부동 소수점 실수
        • DOUBLE
          • 8바이트의 부동 소수점 실수
        • DECIMAL
          • DECIMAL 형식(전체 자릿수, 소수점 자리수)의 고정 소수점 실수
    2. 문자형
      • CHAR
        • 고정 길이 문자열
      • VARCHAR
        • 가변 길이의 문자열
      • BLOB
        • 이미지, 파일과 같은 대량 바이너리 데이터
      • TEXT
        • 대량 가변 길이의 문자열
    3. 날짜 / 시간형
      • DATE
        • 날짜(형식: YYYY-MM-DD)
      • TIME
        • 시간(형식: HH:MM:SS)
      • DATETIME
        • 8바이트의 날짜 및 시간(형식: YYYY-MM-DD HH:MM:SS)
      • TIMESTAMP
        • 4바이트의 날짜 및 시간(형식: YYYY-MM-DD HH:MM:SS)
    4. 기타
      • ENUM
        • 정해진 값 중 하나(성별 등)
      • GEOMETRY
        • 지리 정보(좌표 데이터 등)
      • XML
        • XML 데이터
      • JSON
        • JSON 데이터

  • 테이블의 레코드를 식별할 수 있는 필드(1개 이상)
  • 이외 다양한 용도
    • 테이블 간 참조
    • 테이블 접근 속도 향상
  • 다양한 용도 만큼, 다양하게 사용되는 키의 종류
    • 후보 키(Candidate Key)
      • 테이블의 한 레코드를 식별하기 위한 필드의 최소 집합
        • 특정 레코드를 유일하게 식별하는 키 → “유일성을 갖추었다.”
      • 하나 이상의 필드로 구성 가능
      • 후보 키에 포함된 필드 중 하나라도 생략한다면, 레코드의 고유 식별이 불가능해짐
        • 불필요한 필드 포함 없이, 최소한의 정보로 레코드를 식별 → “최소성을 갖추었다.” ⇒ 유일성과 최소성을 모두 만족하는 키
      • ex) 아래와 같은 학생 테이블에서
        • ‘학번’, ‘이메일’, ‘전화번호’와 같은 각각의 필드를 후보 키로 간주할 수 있음 image2
    • 기본 키(Primary Key)
      • 하나의 레코드를 식별하도록 선정되어, 테이블 당 하나만 존재할 수 있는 키
        • 테이블의 레코드를 대표할 수 있도록 선택된 키 → 유일성 및 최소성 만족 + 여러 필드로 구성된 기본키도 가능
    • 외래 키(Foreign Key)
      • 다른 테이블의 기본 키를 참조하는 필드
        • 테이블 간 참조 관계 형성에 사용
          • ex) 아래와 같은 ‘학생 테이블’ 및 ‘과목 테이블’에서,
            • ‘학생 테이블’의 ‘수강과목’ 필드는 과목 테이블의 ‘개설과목’ 필드를 참조하는 외래 키로 활용
            • 외래 키를 통해, 다른 테이블에 연결(참조)이 가능하고, 테이블 간 관계도 표현 가능해짐 image3
    • 복합 키(Composite Key)
      • 두 필드 이상으로 구성된 후보 키
      • ex)성적 테이블
        • ‘학번’, ‘과목코드’와 같이 최소 두 개의 필드가 있어야 고유 레코드를 식별할 수 있음. image4
    • 슈퍼 키(Super Key)
      • 레코드를 식별하기 위한 ‘필드의 집합’
        • 최소 갯수의 필드 집합은 아님 → 유일성만 만족, 최소성은 만족하지 않음
    • 대체 키(Alternate key)
      • 기본 키가 아닌 후보 키
        • 기본 키 선정 이후에, 남는 키들은 곧 대체 키가 됨

2. 테이블의 관계

  • 외래 키를 매개로 한 테이블 간 연관관계
    • 일대일 대응, 일대다 대응, 다대다 대응

일대일 대응 관계

  • 하나의 레코드가 다른 테이블의 레코드 하나에만 대응되는 경우
    • ex) 여권 테이블 및 승객 테이블
      • 여권 테이블은 ‘고객 번호’라는 필드를 외래 키로 삼아 승객 테이블 참조 → 두 테이블은 일대일 대응 관계
      • 여권 테이블에 속한 엔티티 하나는 승객 테이블에 속한 엔티티 하나에 대응 image5

일대다 대응관계

  • 하나의 레코드가 다른 테이블의 여러 레코드와 대응될 수 있는 경우
    • ex) 연관된 2개의 테이블, 주문 테이블과 고객 테이블
      • 고객 한명은 주문을 여러 건 수행할 수 있음 → 두 테이블은 일대다 대응 관계
      • 고객 테이블에 속한 엔티티 하나는, 주문 테이블에 속한 여러 개의 엔티티에 대응될 수 있음 image6

다대다 대응관계

  • 한 테이블의 여러 레코드가, 다른 테이블의 여러 레코드와 대응되는 경우
  • 일반적으로, 다대다 테이블 관계는 중간 테이블을 수반함
  • 다대다 대응관계는 중간 테이블에 대한 일대다 대응관계가 두 번 이루어진 것과 동일
    • ex) 사용자 테이블, 그룹 테이블, 이를 아우르는 사용자 그룹 테이블
      • 사용자 테이블과 그룹 테이블의 다대다 관계를 표현하기 위해 ‘사용자그룹 테이블’ 활용
        • 사용자 테이블 - 사용자그룹 테이블 : ‘사용자 ID’ 필드를 매개로 일대다 관계 형성
        • 그룹 테이블 - 사용자그룹 테이블 : ‘그룹 ID’ 필드를 매개로 일대다 관계 형성 image7

3. 무결성 제약 조건

무결성

  • 무결성 : 일관되며 유효한 데이터 상태
  • 무결성 제약 조건 : 데이터베이스에 저장된 데이터의 일관성과 유효성을 유지하기 위해 마땅히 지켜야 할 조건
    • 오류 ex) : “무결성 제약 조건을 지키지 않을 경우” image8

대표적인 무결성 제약조건

  • 각 제약조건이 발생하는 상황이 Point

  1. 도메인 제약 조건(Domain constraint)
    • 테이블이 가질 수 있는 필드 타입과 범위에 대한 규칙
      • 각각 필드의 데이터는
        • 원자 값을 가짐
        • 지정된 타입을 준수
        • 값의 범위나 기본값이 지정된 경우 준수
        • NULL이 허용되지 않은 경우, NULL이 저장되면 안됨
      • 위와 같은 조건이 명시된 테이블의 경우, 제약조건에 위배하는 데이터 삽입/수정 시 ‘도메인 제약 조건’에 위배된 것으로 간주 image9
    • 원자 값(Atomic value)
      • 더 이상 쪼갤 수 없는 단일한 값
      • 테이블 내, 각 필드 데이터인 ‘이름, 나이, 성별’은 각각 더 이상 쪼갤 수 없는 단일한 값임 image10
  2. 키 제약 조건(Key constraint)
    • 레코드를 고유하게 식별 가능한 키로 지정된 필드에는 중복된 값이 존재하면 안됨
  3. 엔티티 무결성 제약 조건(= 기본 키 제약 조건, Entity integrity constraint)
    • 기본 키로 지정한 필드 : 고유한 값 / NULL값이면 안됨
    • 결국, 기본 키가 갖추어야 할 조건
  4. 참조 무결성 제약 조건(= 외래 키 제약 조건, Referential integrity constraint)
    • 외래 키 → 참조하는 테이블의 기본 키와 같은 값을 갖거나 NULL값을 가져야 함
    • 외래 키와 관련된 제약 조건

참조하는 테이블이 삭제/수정되는 경우

  • 아래와 같이 참조하는 필드가 삭제 혹은 변경되는 경우, RDBMS는 다음과 같은 4가지 동작이 일어남 image11 image12
    1. 연산 제한(restrict)
      • 주어진 삭제/수정 연산 자체를 거부
    2. 기본값 설정(set default)
      • 참조하는 레코드를 미리 설정된 기본값으로 설정
    3. NULL값 설정(set null)
      • 참조하는 레코드를 NULL로 설정
    4. 연쇄 변경(cascade)
      • 참조하는 레코드를 주어진 삭제/수정 연산에 따라 변경

이어서 다음 포스트에서는 ER 다이어그램과 이에 관한 정규화 과정에 대해서 알아보도록 하겠습니다.

chat_bubble 0

chat_bubble 댓글남기기

댓글남기기