[CS] RDBMS의 기본

눈치없어·2025년 4월 1일

관계형 데이터베이스의 핵심은 테이블의 구성과 관계에 있음


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

RDBMS 내의 레코드들은 다음과 같이 테이블의 형태를 이룸


필드 타입

필드 타입: 각 필드로 사용 가능한 데이터 유형

RDBMS의 테이블 필드에는 다양한 데이터 형식(타입), 즉 필드 타입이 저장될 수 있음

MySQL을 기준으로 정리한 대표적인 필드 타입


: 테이블 내의 특정 레코드를 식별할 수 있는 필드의 집합
키는 레코드의 식별뿐만 아니라 테이블 간의 참조에도 사용됨

📌 키의 종류

  • 후보 키
  • 복합 키
  • 슈퍼 키
  • 기본 키
  • 대체 키
  • 외래 키

여기서 핵심은 후보 키와 기본 키, 외래 키

⏹️ 후보 키: 테이블의 한 레코드를 식별하기 위한 필드의 최소 집합을 의미

  • 특정 레코드를 유일하게 식별한다는 점에서 '유일성을 갖추었다'고 표현
  • 후보 키는 하나 이상의 필드로 구성될 수 있으며, 후보 키에 포함된 필드 중 하나라도 생략하면 레코드를 고유하게 식별할 수 없게 됨
  • 이때 불필요한 필드가 키에 포함되어 있지 않고, 최소한의 정보로 레코드를 식별한다는 점에서 '최소성을 갖추었다'라고 표현
  • 즉, 후보 키는 유일성과 최소성을 모두 만족하는 키

⏹️ 슈퍼 키: 레코드를 식별하기 위한 '필드의 최소 집합'이 아닌 레코드를 식별하기 위한 '필드의 집합'

  • 유일성만 만족하고 최소성은 만족하지 않는 키
  • 슈퍼 키에는 레코드 식별에 꼭 필요하지 않은 필드도 포함될 수 있음

⏹️ 복합 키: 두 필드 이상으로 구성된 후보 키

  • 예를 들어 '성적'이라는 테이블이 있다고 가정
  • 여기서 후보 키는 [학번, 과목 코드]가 됨. 최소 이 2개의 필드로 레코드를 식별할 수 있기 때문
  • 이처럼 두 필드 이상으로 구성된 후보 키가 복합 키

⏹️ 기본 키: 한 레코드를 식별하도록 선정되어 테이블당 하나만 존재할 수 있는 키

  • 여러 후보 키 중에서 테이블의 레코드를 대표하도록 선택된 키
  • 후보 키의 일부이기 때문에 유일성과 최소성을 모두 만족하여, 여러 필드로 구성된 기본 키도 존재할 수 있음
  • 기본 키는 중복된 값이 없어야 하고 반드시 값이 존재해야 하며, 레코드를 구분하기 위한 최소한의 정보만으로 이루어져 있어야 함
  • 이때 '값이 존재하지 않음'은 NULL이라는 값으로 표기
  • 즉, 기본 키는 NULL 값을 가질 수 없음

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

  • 영문 그대로 읽거나 앞글자를 따서 FK라고 부르는 경우도 많음



테이블의 관계

외래 키를 통해 테이블 간 참조가 가능하다고 했음
이때 외래 키를 매개로 하는 테이블 간 연관 관계에도 여러 종류가 있음

일대일 대응 관계

RDBMS에서 테이블 간의 일대일 대응 관계는 하나의 레코드가 다른 테이블의 레코드 하나에만 대응되는 경우를 의미

'여권' 테이블은 '고객 번호'를 외래 키 삼아 '승객' 테이블을 참조하고 있음

이때 두 테이블은 일대일 대응 관계라고 할 수 있음
한 사람당 오직 하나의 여권만 가질 수 있기 때문
'여권' 테이블에 속한 엔티티 하나는 '승객' 테이블에 속한 엔티티 하나에 대응될 수 있음


일대다 대응 관계

테이블 간의 일대다 대응 관계는 하나의 레코드가 다른 테이블의 여러 레코드와 대응될 수 있는 경우를 의미

두 테이블은 일대다 대응 관계라고 볼 수 있음
한 고객은 여러 건의 주문을 할 수 있지만, 각 주문은 한 명의 고객에게만 속하기 때문

'고객' 테이블에 속한 엔티티 하나는 '주문' 테이블에 속한 여러 개의 엔티티에 대응될 수 있음


다대다 대응 관계

테이블 간의 다대다 대응 관계는 한 테이블의 여러 레코드가 다른 테이블의 여러 레코드와 대응되는 경우를 의미

'사용자' 테이블과 '그룹' 테이블의 대응 관계를 표현하기 위해 '사용자그룹' 테이블을 사용
중간 테이블을 통한 다대다 대응 관계는 중간 테이블에 대한 일대다 대응이 두번 이뤄진 것과 같음

'사용자' 테이블과 '사용자그룹' 테이블이 '사용자 ID'를 매개로 일대다 관계를 형성하고,
'그룹' 테이블과 '사용자그룹' 테이블이 '그룹 ID'를 매개로 일대다 관계를 형성하기 때문에,
결과적으로 '사용자' 테이블과 '그룹' 테이블 간의 다대다 대응 관계가 형성되는 것



무결성 제약 조건

무결성: 일관되며 유효한 데이터의 상태
무결성 제약 조건: 데이터베이스에 저장된 데이터의 일관성과 유효성을 유지하기 위해 마땅히 지켜야 하는 조건을 의미

📌 대표적인 무결성 제약 조건

1️⃣ 도메인 제약 조건
테이블이 가질 수 있는 필드 타입과 범위에 대한 규칙

  • 각각의 필드 데이터는 원자 값을 가져야 함
  • 저장된 필드 타입을 준수해야 함
  • 값의 범위나 기본값이 저장되었을 경우 그를 따라야 함
  • NULL이 허용되지 않았다면 NULL이 저장되어서는 안됨

조건이 명시된 테이블에서 제약 조건을 위배하는 데이터가 삽입/수정될 경우 '도메인 제약 조건에 위배'된 것으로 간주

원자 값
더 이상 쪼갤 수 없는 단일한 값을 말함
즉, 테이블의 각 필드 데이터는 더 이상 쪼갤 수 없는 단일한 값이어야 함
"이름" → (O) / "이름과 나이와 성별" → (X)

2️⃣ 키 제약 조건
레코드를 고유하게 식별할 수 있는 키
지정된 필드에 중복된 값이 존재해서는 안 된다는 제약 조건

3️⃣ 엔티티 무결정 제약 조건
기본 키로 지정한 필드는 고유한 값이어야 하며, NULL이 되어서는 안 된다는 규칙
기본 키와 관련한 제약 조건이므로 기본 키 제약 조건이라고도 부름
즉, 레코드를 식별할 수 있는 기본 키가 갖추어야 할 조건을 나타냄

4️⃣ 참조 무결성 제약 조건
외래 키를 통해 다른 테이블을 참조할 때 데이터의 일관성을 지키기 위한 제약 조건
외래 키는 테이블의 기본 키와 같은 값을 갖거나 NULL 값을 가져야 한다는 규칙

외래 키와 관련한 제약 조건이므로 외래 키 제약 조건이라고도 부름


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

이 경우 RDBMS는 크게 다음과 같은 4가지의 동작을 취할 수 있음

1️⃣ 연산 제한: 주어진 수정 및 삭제 연산 자체를 거부
2️⃣ 기본값 설정: 참조하는 레코드를 미리 지정한 기본값으로 설정
3️⃣ NULL 값 설정: 참조하는 레코드를 NULL로 설정
4️⃣ 연쇄 변경: 참조하는 레코드도 함께 수정되거나 삭제




참고: 북스터디 - 이것이 취업을 위한 컴퓨터 과학이다 (Chapter 6-2)

profile
dock 사이즈 다르잖아

0개의 댓글