Computer/Database

03 관계 데이터 모델 (1)

코머 2021. 10. 20. 00:23

1. 관계 데이터 모델의 개념

릴레이션

: 행과 열로 구성된 테이블 (릴레이션의 시작적인 표현 방법)

릴레이션은 여러 개의 집합과 각각의 집합에 구성되어 있는 원소로 구성되어져 있다.

1) 릴레이션 내에서 생성되는 관계 : 릴레이션 내 데이터들의 관계 (실제 데이터들의 집합)

2) 릴레이션 간에 생성되는 관계 : 한 릴레이션에서 다른 릴레이션으로 식별 가능한 값을 이용하여 연결

(관계 데이터 모델을 다른 데이터 모델과 구분하는 특징)

 

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

릴레이션 : 스키마와 인스턴스로 이루어져있음

1) 스키마 : 관계 데이터베이스의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조 정의 (데이터구조)

- 헤더 (header) - 테이블의 첫 행 : 각 데이터의 특징을 나타내는 속성, 자료 타임 등의 정보를 담음

- 속성 (attribute) - 릴레이션 스키마의 열: 각각의 이름이 있으며 그 이름으로 정보 유추 가능 (But 데이터베이스는 불가능)

- 도메인 (domain) : 속성이 가질 수 있는 값의 집합

- 차수 (degree) : 속성의 개수

2) 인스턴스 : 정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합 (저장된 데이터)

- 투플 (tuple) : 릴레이션 인스턴스의 각각의 행을 나타냄

- 투플의 속성 값 : 릴레이션 스키마에서 정의한 도메인 값으로 구성

- 투플이 가지는 속성의 개수 = 릴레이션 스키마의 차수

- 릴레이션 내의 모든 투플들은 서로 중복되지 않아야 함

- 카다날리티 : 투플의 수 (투플의 삽입, 삭제, 수정 등에 따라 수시로 변함)

릴레이션 용어 같은 의미로 통용되는 용어 파일 시스템 용어
릴레이션(relation) 테이블(table) 파일(file)
스키마(schema) 내포 (intension) 헤더(header)
인스턴스(instance) 외연(extension) 데이터(data)
투플(tuple) 행(row) 레코드(record)
속성(attribute) 열(column) 필드(field)

 

릴레이션의 특징

1) 속성은 단일 값을 가진다.

2) 속성은 서로 다른 이름을 가진다.

3) 한 속성의 값은 모두 같은 도메인 값을 가진다.

4) 속성의 순서는 상관없다.

5) 릴레이션 내의 중복된 투플은 허용하지 않는다.

6) 투플의 순서는 상관없다.

 

관계 데이터 모델

: 데이터를 2차원 테이블 형태인 릴레이션으로 표현하며 릴레이션에 대한 제약조건과 관계 연산을 위한 관계대수 정의

- 제약조건 : 각 릴레이션에 저장된 데이터 값이 가져야 하는 제약

- 관계 연산 : 릴레이션이 다루는 연산 규칙

- 관계 데이터베이스 시스템 : 관계 데이터 모델을 컴퓨터에 구현한 것 , SQL로 구현

   릴레이션의 생성과 관리를 SQL로 수행, 릴레이션에 대한 제약 조건을 SQL로 표현, 릴레이션에서 데이터 추출하는 연산을 SQL로 표현

 

2. 무결성 제약 조건

: 릴레이션에서 특정 투플을 식별할 때 사용하는 속성 혹은 속성의 집합 

릴레이션은 중복된 투플을 허용하지 않기 때문에 각각의 투플이 포함된 속성 들 중 하나는 값이 달라야함 (반드시 구별 가능)

릴레이션과의 관계를 맺는 데에도 사용 (각 릴레이션간의 관계를 말해주는 연결고리)

1) 슈퍼키 : 투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합 

2) 후보키 : 투플을 유일하게 식별할 수 있는 속성의 최소 집합 (효율성 측면에서 중요)

키를 구성하는 속성 하나를 제거하였을 때 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함

3) 기본키 : 여러 후보키 중 하나를 선정하여 대표로 삼는 키 (밑줄을 그어서 표시)

기본키 선정시 고려사항

- 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야 한다.

- NULL값은 허용하지 않는다

- 키 값의 변동이 일어나지 않아야 한다

- 최대한 적은 수의 속성을 가진 것이어야 한다.

- 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 한다.

4) 대리키 : 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 것 

5) 대체키 : 기본키로 선정되지 않는 후보키

6) 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 (다른 릴레이션의 기본키를 참조하여 릴레리션 간의 관계를 표현)

- 외래키가 성립하기 위해서는 양쪽 릴레이션 도메인이 서로 같아야 한다.

- 참조되는 릴레이션의 기본키 값이 변경되면 기본키를 참조하는 외래키 값 역시 변경

- NULL값 포함가능, 중복 값 허용

- 자기 자신의 기본키를 참조하는 외래키도 가능

- 외래키가 기본키의 일부가 될 수 있다.

 

무결성 제약조건

1) 도메인 무결성 제약조건 : 릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만을 가져야한다는 조건

- 속성 값과 관련된 무결성

2) 개체 무결성 제약조건 : 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙, 즉 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건

3) 참조 무결성 제약조건 : 릴레이션 간의 참조 관계를 선언하는 제약조건

부모 릴레이션 - 일반적으로 참조되는 릴레이션

자식 릴레이션 - 참조하는 릴레이션 (제공받는 릴레이션)

자식 릴레이션의 외래키는 부모 릴레이션의 제약을 받는다. (부모 릴레이션의 도메인과 다른 값으로 삽입, 수정될 경우 거부되고, 반대로 자식 릴레이션에서 참조하고 있는 값을 부모 릴레이션에서 삭제하거나 다른 값으로 변경하려고 할 경우 거부된다.)

 

무결성 제약조건의 수행

1) 개체 무결성 제약조건

: 투플을 삽입하거나 수정할 때마다 개체 무결성 제약조건을 지키는지 확인 (기본 키 값이 유일한지, NULL 값이 아닌지)

   조건에 맞지 않을 경우 , 삽입 연산 거부 및 오류 메세지 출력

- 삽입, 수정 : 도메인 무결성 제약조건 확인 -> 개체 무결성 제약조건 확인

- 삭제 : 특별한 확인 필요없이 즉시 수행. 단 , 참조 무결성 제약조건에 의하여 외래키를 참조하고 있을 경우 바로 삭제하지 않는다.

2) 참조 무결성 제약조건

- 삽입 : 도메인 무결성 제약조건 확인 -> 개체 무결성 제약조건 확인 -> 데이터 값이 데이터 릴레이션 기본키에 존해하는지 확인 

- 삭제 : 자식 릴레이션에서 투플이 삭제되는 경우 부모 릴레이션에는 아무 영향을 주지 않으므로 바로 삭제 가능

             부모 릴레이션에서 투플이 삭제되는 경우에는 문제가 발생, 4가지 고려가능

            (즉시 작업을 중지, 자식 릴레이션의 관련 투플을 삭제, 초기에 설정된 다른 어떤 값으로 변경, NULL 값으로 설정)

명령어 의미
RESTRICTED 자식 릴레이션에서 참조하고 있을 경우 부모 릴레이션의 삭제 작업을 거부함 학과 릴레이션의 투플 삭제 거부
CASCADE 자식 릴레이션의 관련 투플을 같이 삭제함 학생 릴레이션의 관련 투플을 삭제
DEFAULT 자식 릴레이션의 관련 투플을 미리 설정해둔 값으로 변경함 학생 릴레이션의 학과가 다른 학과로 자동 배정
NULL 자식 릴레이션의 관련 투플을 NULL 값으로 설정함 (NULL 값을 허가한 경우) 학생 릴레이션의 학과가 NULL 값으로 변경

- 수정 : 삭제와 삽입 명령이 연속해서 수행, 부모 릴레이션의 수정이 일어날 경우 삭제 옵션에 따라 처리된 후 문제 없을 경우 다시 삽입 제약조건에 따라 처리