[CS 개념 정리 - DB] RDBMS 기본 개념

2025. 1. 6. 14:55·면접 준비/DB
728x90
반응형
SMALL

테이블 구성

RDBMS 내의 레코드들은 테이블의 형태를 이룬다.
각 필드로 사용가능한 데이터 유형들이 정해져 있으며 이를 필드타입 이라고 한다.

테이블 내의 특정 레코드를 식별할 수 있는 필드의 집합은 키라고 한다.

키는 레코드의 식별뿐만 아니라 테이블 간 참조할때에도 사용된다.

키

테이블에서 특정 레코드를 식별할 수 있는 하나 이상의 필드를 키라고 한다.
키는 다양한 종류가 있으며 이를 모두 암기하지 않아도 되지만 후보 키, 기본 키, 외래 키정도는 알고 있어야 한다.

 

후보키

후보키는 테이블의 한 레코드를 식별하기 위한 필드의 최소한의 집합이다.
특정 레코드를 유일하기 식별한다는 점으로 유일성을 갖추고 있다고 한다.
하나 이상의 필드로 구성될 수 있으며, 후보 키에 포함된 필드 중 하나라도 생략하면 레코드를 고유하게 식별할 수 없다.
불필요한 필드가 키에 포함되어 있지 않고, 최소한의 정보로 레코드를 식별한다는 점에서 최소성을 갖추고 있다고 한다.
유일성을 갖는 학번, 이메일은 후보키가 될 수 있다. 이름은 동일인물이 있을 수 있기 때문에 유일성을 갖추기 어렵다.
이렇게 2개 이상의 필드로 레코드를 식별 가능한 후보키가 있을 때 복합 키라고 부른다.

 

슈퍼 키

슈퍼 키는 레코드를 식별하기 위한 필드의 최소 집합이 아니라 레코드를 식별하기 위한 필드의 집합이다.
유일성만 만족하고 최소성은 만족하지 않는것이다. 슈퍼키에는 레코드 식별에 꼭 필요하지 않은 필드도 포함될 수 있다.

 

기본 키

기본 키는 한 레코드를 식별하도록 선정되어 테이블당 하나만 존재할 수 있는 키를 말한다.
여러 후보 키 중에서 테이블의 레코드를 대표하도록 선택한 키다.후보 키의 일부이기 때문에 유일성과최소성을 모두 만족하며, 여러 필드로 구성된 기본 키도 존재할 수 있다.
만약 값이 존재하지 않는다면 NULL 로 표기한다. 하지만 기본 키는 NULL을 가질 수 없다.
다시 정리하면 중복된 값이 없는 유일성, 최소한의 정보를 갖는 최소성, 값이 반드시 존재해야 하는 속성을 지니고 있어야한다.

후보 키중 기본 키가 아닌 것들은 후보 키라고 한다.

 

외래 키

외래 키는 다른 테이블의 기본 키를 참조하는 필드로, 테이블 간의 참조 관계를 형성할 때 사용하는 키이다.

위 테이블의 과목은 아래 과목테이블의 과목 컬럼을 외래키로 참조하여 가져온것이다. 외래 키를 통해 다른 테이블에 연결이 가능하고, 테이블 간의 관계또 표현할 수 있다.

무결성 제약 조건

무결성이란 일관되며 유효한 데이터의 상태를 말한다. 다시말해, 무결성 제약 조건이란 데이터베이스에 저장된 데이터의 일관성과 유효성을 유지하기위해 지켜야할 조건들을 말한다.
무결성을 지키기 위한 조건에는 4가지가 있다.

  • 도메인 제약 조건
    • 테이블이 가질 수 있는 필드 타입과 범위에 대한 규칙이다.
    • 각각의 필드 데이터는 원자값을 가져야 하고, 지정된 필드 타입을 준수해야 한다.
    • 값의 범위나 기본값이 지정되어 있는 경우에는 그를 따라야하고 NULL이 허용되지 않았다면 NULL로 저장해서는 안된다.

원자성이란 더 이상 쪼갤 수 없는 단일한 값을 말하며 테이블에서는 각 필드의 단일 값들을 말한다.
만약 컬럼이 이름, 나이, 성별이 아닌 이름과 나이와 성별이라고 하여 Hong,25,남 이렇게 데이터가 들어가 있을 경우에는 원자성을 지닌 값이라고 할 수 없다.

  • 키 제약 조건
    • 레코드를 고유하게 식별할 수 있는 키로 지정된 필드에 중복된 값이 존재해선 안된다.
  • 엔티티 무결성 제약 조건
    • 기본 키로 지정한 필드는 고유한 값이어야 하며, NULL이 되어서는 안된다.
  • 참조 무결성 제약 조건
    • 외래 키를 토앻 다른 테이블을 참조할 떄 데이터의 일관성을 지키기 위한 제약 조건으로, 외래 키는 참조하는 테이블의 기본 키와 같은 값을 갖거나 NULL값을 가져야 한다는 규칙이다.

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

기존에 참조하던 테이블의 값이 변경되거나 삭제되는 경우 어떠한 조치를 취할 수 있을까?

  1. 연산 제한
    • 주어진 수정 및 삭제 연산 자체를 거부한다.
  2. 기본값 설정
    • 기존에 설정한 기본값으로 해당 데이터를 수정한다.
  3. NULL값 설정
    • 참조하는 레코드를 NULL로 설정한다.
  4. 연쇄 변경
    • 참조하는 레코드도 함께 수정하거나 삭제되도록 연쇄적으로 작동되도록 설정한다.
728x90
반응형
SMALL

'면접 준비 > DB' 카테고리의 다른 글

[CS 면접 질문 - DB] 파티셔닝  (0) 2025.01.06
[CS 개념 정리 - DB] 정규화  (1) 2025.01.06
[CS 개념 정리 - DB] 인덱스  (0) 2025.01.06
[CS 개념 정리 - DB] 서브쿼리와 조인 간략정리  (0) 2025.01.06
[CS 개념 정리 - DB] SQL 언어  (0) 2025.01.06
'면접 준비/DB' 카테고리의 다른 글
  • [CS 개념 정리 - DB] 정규화
  • [CS 개념 정리 - DB] 인덱스
  • [CS 개념 정리 - DB] 서브쿼리와 조인 간략정리
  • [CS 개념 정리 - DB] SQL 언어
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (329)
      • 면접 준비 (45)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (5)
      • Kafka (5)
      • Spring (60)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (39)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      리눅스마스터2급정리
      자바 면접질문
      자바 면접
      java
      JSP
      프로그래머스
      리눅스
      자바 반복문
      Til
      springsecurity
      redis 채팅
      자바 알고리즘
      jsp request
      레디스
      백준
      redis
      자바스크립트
      리눅스마스터2급
      자바
      jsp기초
      HTML
      Spring Data Redis
      JavaScript
      JS
      Spring
      spring redis
      CSS
      스프링프레임워크
      자바기초
      Springframework
    • 최근 댓글

    • 최근 글

    • 250x250
    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [CS 개념 정리 - DB] RDBMS 기본 개념
    상단으로

    티스토리툴바