본문 바로가기
Computer Science/DataBase

[데이터베이스] 2장 관계 데이터 모델과 제약 조건

by na1-4an 2023. 10. 12.

0. 관계 데이터 모델

: 제안된 데이터 모델들 중 가장 개념이 단순한 데이터 모델.

  - IBM연구소의 E.F. Codd가 1970년 제안.

  - 관계 DBMS 시제품: System R(1970년대, IBM연구소)  → Oracle로 나중에 시중에 등장

  - 1980년대 후반 여러 데이터 모델들이 새로 등장했지만 관계 DBMS가 여전히 널리 사용됨.

1. 관계 데이터 모델이 큰 성공을 거둔 요인(7)

  • 간단한 테이블을 사용
  • 중첩된 복잡한 구조가 없음
  • 집합 위주로 뎅터를 처리
  • 초보 사용자도 쉽게 이해
  • 표준 데이터베이스 응용에 대해 좋은 성능을 보임
  • 다른 데이터 모델에 비해 이론이 잘 정립됨.
  • 설계와 질의 처리면에서 뛰어난 장점을 가짐.

2-1 관계 데이터 모델의 개념

1. 관계 데이터 모델 개념(5)

  • 동일한 구조로 모든 데이터를 논리적으로 구성
  • 선언적인 질의어로 데이터 접근.
  • 응용 프로그램들은 db 내의 레코드들의 순서와 무관하게 작성됨.
  • 사용자가 원하는 데이터(what)만 명시하고, 이를 어떻게 찾을지(how)는 명시할 필요 없음.(이는 DBMS의 역할)
  • 논리적으로 연관된 데이터를 연결하기 위해 링크나 포인터를 사용하지 않음.

2. 기본적인 용어(4)

  - 릴레이션(relation): 테이블

  - 레코드(record): 각 행

  - 튜플(tuple): 각 행(레코드와 동일하나 좀 더 공식적인 용어)

  - 애트리뷰트(attribute): 하나의 열

3. 릴레이션의 예

  + 차수(dgree)는 가변하지만 자주 바뀌지는 X. 유효한 릴레이션의 최소 차수 수는 1

  + 카다날리티는 쉽게 가변함. 유효한 릴레이션에서 카다날리티 수가 0일 수 있음.

  + 애트리뷰트에 자료형이 정해지면 해당 자료형을 갖는 데이터만 들어감.

4. 도메인(domain).

: 한 애트리뷰트에 나타날 수있는 값의 집합.

  (실존하는 집합이라기 보다 개념정도로 알기)

  ex. 위의 릴레이션의 예에서 대한민국 국민들은 모두 후보임. 모두 도메인임.

  - 프로그래밍 언어의 데이터 타입과 유사.

  - 동일한 도메인이 여러 애트리뷰트에서 사용될 수 있음

도메인 정의

5. 널 값(null value)

: '알려지지 않음' or '적용할 수 없음'을 나타내기 위해 사용.

  ex. 신입사원에게 DNO(부서 번호)가 결정 안 됨.

   ! 널 값은 0이나 공백 문자, 공백 문자열과는 다르다 !

6. 릴레이션 스키마와 릴레이션 인스턴스

 (1) relation schema, 내포  

      : 릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합. 기본 키 아래는 밑줄 표시

       * 표기법: 릴레이션이름(애트리뷰트1, 애트리뷰트2, ...)

 (2) relation instance, 외연

      : 릴레이션에 어느 시점에 들어있는 튜플들의 집합. 시간의 흐름에 따라 계속 변함.

        일반적으로 릴레이션에는 현재의 인스턴스만 저장.(history가 필요한 경우 별도의 테이블 사용.)

7. 관계 데이터베이스 스키마관계 데이터베이스 인스턴스

2-2 릴레이션의 특성

1.  릴레이션 특성(6)

  • 각 릴레이션은 오직 하나의 레코드 타입만 포함.
  • 한 애트리뷰트 내의 값들은 모두 같은 유형.
  • 애트리뷰트들과 레코드의 순서는 중요하지 않음.(like 집합)
  • 동일한 레코드가 두 개이상 존재하지 않음.(→ 가 존재함!)
  • 한 레코드의 각 애트리뷰트는 원자 값을 가짐.( 집합의 형태는 불가!!
  • 각 애트리뷰트의 이름은 한 릴레이션 내에서만 고유

 

2-3 릴레이션의 키

1.릴레이션의 키 

: 각 레코드들을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트들의 모임. 키의 종류는 구분할 줄 알아야한다.

 

2. 슈퍼 키(super key)

: 한 릴레이션 내의 특정 레코드를 고유하게 식별하는 애트리뷰트(한 개 or 집합)

  - 레코드를 고유하게 식별하는데 꼭 필요하지않은 애트리뷰트를 포함할 수도.(아래의 경우 주소)

  ex. 신용카드 회사의 고객 릴레이션에서 (신용카드번호, 주소) 또는 (주민등록번호)

 

3.후보 키(candiate key)

: 각 레코드를 고유하게 식별하는 최소한의 애트리뷰트들의 모임.

  - 모든 릴레이션에는 최소 한 개 이상의 후보 키가 있음.

  - 후보 키도 두 개 이상의 애트리뷰트로 이뤄질 수 있음. 복합 키

  ex. (신용카드번호, 주소)는 후보 키가 아니지만, (신용카드번호)는 후보키.

       (신용카드번호, 주민등록번호)는 복합키.

4. 기본 키(primary key)

: 한 릴레이션에 후보 키가 두 개 이상 있으면, 설계자가 이 중 하나를 기본 키로 선정.

  - 자연스러운 기본 키를 찾을 수 없는 경우에는 레코드 번호와 같이 인위적인 키 애트리뷰트를 추가할 수도 있음.

    이러한 인위적인 키를 "대리키"라고 함.(ex. 책 바코드 번호)   

  ex. 신용카드번호 or 주민등록 번호.

5. 대체 키(alternate key)

: 기본키가 아닌 후보키

  ex. 만약 주민등록번호가 기본 키로 선정되면, 신용카드번호가 대체 키임.

6. 외래 키(foreign key)

: 어떤 릴레이션의 기본키를 참조하는 애트리뷰트.

  - 릴레이션들 간의 관계를 나타내기 위해 사용.

  - 외래키 애트리뷰트참조되는 릴레이션의 기본 키와 동일한 도메인을 가져야함.

  - 외래키의 유형(3)

    ① 다른 릴레이션의 기본키를 참조하는 외래 키

    ② 자체 릴레이션의 기본키를 참조하는 외래 키

    ③ 기본 키의 구성요소가 되는 외래 키

2-4 무결성 제약 조건

1. 데이터 무결성(data inegrity)(4)

: 데이터의 정확성 또는 유효성을 의미. 일관된 데이터 베이스 상태를 정의하는 규칙들을 정의.

  (db가 갱신될 때 DBMS가 자동적으로 일관성 조건을 검사함.

    →응용 프로그램들은 일관성 검사할 필요 x 코드가 단순해지고 생산성 높아짐.)

  • 도메인 제약조건
  • 키 제약조건
  • 기본 키와 엔티티 무결성 제약조건
  • 외래 키와 참조 무결성 제약조건

2. 도메인 제약조건

  - 각 애트리뷰트의 값이 반드시 원자값이어야함.

  - 애트리뷰트 값의 디폴트 값, 가능한 값의 범위 등을 지정할 수 있음.

  - 데이터 형식으로 값들의 유형을 제한하고, CHECK 제약조건으로 값들의 범위를 제한할 수 있음.

  - SQL2는 도메인을 명시적 정의하는 것을 허용하지만, 오라클은 지원하지 않음.

3.키 제약 조건

: 키 애트리뷰트에 중복된 값이 존재해서는 안됨.

4. 기본 키와 엔티티 무결성 제약 조건

: 기본 키를 구성하는 어떤 애트리뷰트도 널값을 가질 수 없음.

5. 외래 키와 참조 무결성 제약조건

: 두 릴레이션의 연관된 레코드 사이의 일관성을 유지하는데 사용됨.

  R2의 외래 키가 릴레이션 R1의기본 키를 참조할 때 참조 무결성 제약조건은 아래의 조건 중 하나가 성립되면 만족.

  1. 외래 키의 값은 R1의 어떤 레코드의 기본 키값과 같다.
  2. 외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않으면 널값을 가진다.

6. 무결성 제약조건의 유지

: DBMS는 갱신 연산(3)에 대해 무결성 제약조건을 만족하도록 조치를 취함.

7. DBMS 갱신 연산(3)

  ① 삽입

    ● 참조 되는 릴레이션에 삽입:

          - 위배 가능성 X: 참조 무결성 제약조건

          - 위배 가능성 O: 도메인 제약조건, 키 제약조건, 엔티티 무결성 제약조건

    ● 참조 하는 릴레이션에 삽입:

          - 위배 가능성 O: 도메인 제약조건, 키 제약조건, 엔티티 무결성 제약조건, 참조 무결성 제약조건

  ② 삭제

    ● 참조 되는 릴레이션에 삭제:

          - 위배 가능성O: 참조 무결성 제약조건

    ● 참조 하는 릴레이션에 삭제:

          - 위배 가능성 X: 도메인 제약조건, 키 제약조건, 엔티티 무결성 제약조건, 참조 무결성 제약조건

  ③ 수정

    : 수정하는 애트리뷰트가 기본키도, 외래 키도 아니면 참조 무결성 제약조건을 위배하지 않음.

      그러나 기본키, 외래 키면 제한, 연산, 널값, 디폴트 값 규칙이 적용됨.

8. 참조 무결성 제약 조건을 만족시키기 위해서 DBMS가 제공하는 옵션(4)

   (자세한 예시는 교재 보기!)

  • 제한(restricted): 위배를 야기한 연산을 단순히 거절
  • 연쇄(cascade): 참조되는 릴레이션에서 튜플을 삭제, 참조하는릴레이션에서 이튜플을 참조하는 튜플도 삭제
  • 널값(nullify): 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 릴레이션에서 이 튜플을 참조하는 튜플의 외래키에 널값 삽입
  • 디폴트값(default): 널값 대신 디폴트 값 삽입