열정 실천

007. 관계형 데이터 모델 & 관계형 데이터베이스 제약조건 본문

CS/DATABASE

007. 관계형 데이터 모델 & 관계형 데이터베이스 제약조건

구운오니 2024. 10. 2. 20:24
728x90

 

 

관계형 데이터 모델 

 

 

 

Relation 릴레이션 : 하나의 테이블로 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위 

Attribute 속성 : 저장하려는 개체의 항목 

Tuple 튜플 : 릴레이션의 각 행, 하나의 레코드

Domain  도메인 : 속성이 가질 수 있는 값들의 집합 (ex: 학년 속성이라면 도메인 값는 1,2,3,4)

 

Degree 차수 : 한 릴레이션 안에 있는 속성(Attribute)의 수 

Cardinality 카디날리티 : 한 릴레이션에서 튜플의 개수

 

 

informal terms Formal Terms
Table Relation
Column Header Attribute
All posible Column Values Domain
Row Tuple
Table Definition Schema of a Realation
Populated(채워진) Table  State od the Realation

 

 

 

 

 

 

 

 

 

제약 조건 Constraints

 

데이터베이스에 저장되는 데이터의 정확성을 보장하기 위하려 키를 이용하려 입력되는 데이터에 제한을 주는 것이다. 

 

제약조건 종류 3

 

1. 키 제약조건 

2. 개체 무결성 제약조건 

3. 참조 무결성 제약조건 

 

 

키 제약조건
기본 키(Primary Key)

: 테이블에서 각 행(레코드)을 고유하게 식별하는 데 사용되는 하나 또는 여러 개의 열

  • 기본 키는 중복된 값을 가질 수 없고(Unique), NULL 값을 허용하지 않는다.
  • 테이블에는 오직 하나의 기본 키만 존재할 수 있다.

  예: 학생 테이블에서 '학번'이 기본 키로 설정될 수 있다. 각 학번은 고유하며 중복되지 않는다.

 

후보 키(Candidate Key)

: 기본 키로 선택될 수 있는 모든 키

  • 후보 키는 기본 키와 마찬가지로 중복된 값을 가질 수 없고, NULL 값을 허용하지 않는다.
  • 테이블에 여러 개의 후보 키가 있을 수 있으며, 이 중 하나만 기본 키로 선택된다.
  • 릴레이션에 있는 모든 튜플에 대해서 유일성최소성을 만족시킨다.

   - 유일성(Unique) : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 한다.

   - 최소성(Minimality) : 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성으로만 구성되어야 한다.

 

  예: '주민등록번호', '학번' 모두 고유하므로 후보 키가 될 수 있지만, 이 중 '학번'만 기본 키로 선택될 수 있다.

 

대체 키(Alternate Key)

: 후보 키 중에서 기본 키로 선택되지 않은 키

  • 기본 키로 선택되지 않았지만 여전히 고유성을 보장한다.
  • 사용자는 대체 키를 이용해 데이터를 조회할 수 있다.

 예: '학번'이 기본 키로 선택되었다면, '주민등록번호'는 대체 키가 될 수 있다.

 

외래 키(Foreign Key)

: 한 테이블에서 다른 테이블의 기본 키를 참조하는 열 또는 열들의 조합. 외래 키는 두 테이블 간의 관계를 설정하는 데 사용된다.

  • 외래 키는 참조되는 테이블의 기본 키를 참조하며, 해당 테이블에 존재하는 값만 외래 키 열에 입력될 수 있다.
  • 외래 키는 여러 개가 존재할 수 있으며, 테이블 간 데이터의 무결성을 보장한다.

  예: 주문 테이블에서 '고객 ID'가 고객 테이블의 'ID'를 참조하는 외래 키가 될 수 있다.

 

 

슈퍼 키(Super Key)

: 테이블 내에서 레코드를 고유하게 식별할 수 있는 모든 열 또는 열들의 집합.

  • 슈퍼 키는 하나 이상의 열로 구성될 수 있으며, 중복되지 않는 값을 가진다.
  • 슈퍼 키에는 기본 키, 후보 키 등이 포함된다.
  • 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못한다. 

  예: '주민등록번호'나 '학번'은 개별적으로 슈퍼 키가 될 수 있으며, '이름 + 생년월일'과 같은 조합도 슈퍼 키가 될 수 있다.

 

 

복합 키(Composite Key)

: 두 개 이상의 열을 조합하여 레코드를 고유하게 식별할 때 사용하는 키

  • 단일 열로 고유하게 식별할 수 없을 때 여러 열을 조합하여 고유성을 보장한다.
  • 복합 키는 반드시 두 개 이상의 열로 구성된다.

  예: '학생 ID'와 '과목 ID'를 함께 사용하여 성적 테이블의 레코드를 고유하게 식별할 수 있다. 각각의 값은 중복될 수 있지만, 두 열을 조합하면 고유성을 가질 수 있다.

 

 

 

** 모든 키는 [기본키 / 후보키] , [내부식별자 / 외부식별자] , [단일식별자, 복합식별자] 이다. 

    -> 3가지 특성 2중 1택

 

 

 

 

 

개체 무결성

테이블의 각 행(레코드)을 고유하게 식별할 수 있도록 보장하는 제약

 

개체 무결성 규칙 1 :: 릴레이션에서 기본키를 구성하는 속성은 NULL값을 가질 수 없다.

개체 무결성 규칙 2 :: 릴레이션에서 기본키를 구성하는 속성은  중복값을 가질 수 없다.

 

 

참조 무결성

테이블 간의 관계에서 데이터의 일관성을 보장하는 제약

 

 

참조 무결성 규칙 1 :: 외래키 값은 Null이거나 참조 릴레이션의 기본키 값 중에 있어야 한다. 

참조 무결성 규칙 2 :: 외래키와 참조하려는 테이블의 기본키는 도메인과 속성의 개수가 같아야 한다.

 

 

 

도메인 무결성

 

도메인 무결성 규칙 :: 테이블의 각 열이 미리 정의된 데이터 타입과 허용 범위 내에서 값을 가져야 한다.

 

 

고유 무결성

 

고유 무결성 규칙 :: 고유 제약을 설정한 열에 중복된 값 삽입할 수 없다. 

 

 

NOT NULL 제약

 

NOT NULL 제약 규칙 :: NOT NULL로 설정된 열에 NULL 값을 삽입할 수 없다. 

 

 

 

 

 

 

언제 무결성을 위반하게 될까? 🤔

 

INSERT 

 

- 범위 & 타입에 맞지 않은 데이터를 삽입할 때 ➡ 도메인 무결성 위반

- 원래 존재하는 키 값을 삽입할 때 키 제약 위반

- 존재하지 않는 PK 값을 참조하는 FK 값 삽입 참조 무결성 위반 

- PK에 NULL값을 삽입할 때 개체 무결성 위반

 

DELETE 

- 다른 릴레이션이 참조하고 있는 PK값을 삭제할 때 참조 무결성 위반 (RESTRICT, CASCADE로 예방)

 

UPDATE

- INSERT와 비슷 (원래 있던 값 대신 위반하는 데이터로 변환할 때)

 

 

 

 

 

728x90