개발스토리

관계 데이터 모델 본문

Computer Science/데이터베이스

관계 데이터 모델

무루뭉 2021. 4. 4. 02:47

관계 데이터 모델의 기본 개념

■ 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델

■ 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장

 

관계 데이터 모델의 기본 용어

■ 릴레이션

- 하나의 개체에 대한 데이터를 2차원 테이블의 구조로 저장한 것이다, 행과 열로 구성된 테이블!

■ 속성(attribute)

- 릴레이션의 열

- 파일 관리 시스템 관점에서 필드에 대응

■ 튜플(tuple)

- 릴레이션의 행

- 파일 시스템 관점에서 레코드에 대응

도메인(domain)

- 하나의 속성이 가질 수 있는 모든 값의 집합

- 속성 값을 입력 및 수정할 때 적합성 판단의 기준이 된다.

- 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의된다.

■ 널(null)

- 속성 값을 아직 모르거나 해당되는 값이 없음을 표현한다.

■ 차수(degree)

- 하나의 릴레이션에서 속성의 전체 개수를 의미한다.

■ 카디널리티(cardinality)

- 하나의 릴레이션에서 튜플의 전체 개수를 의미한다.

 

릴레이션의 구성

■ 릴레이션 스키마

- 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의된다.

ex) 고객(고객 아이디, 고객 이름, 나이, 등급, 직업)

- 릴레이션 내포(relation intension)이라고도 한다.

- 정적인 특징을 가진다.

■ 릴레이션 인스턴스

- 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합

- 릴레이션 외연(relation extension)이라고도 한다.

- 동적인 특징을 가진다.

 

릴레이션의 특성

튜플의 유일성

- 하나의 릴레이션에는 동일한 튜플이 존재할 수 없다.

튜플의 무순서

- 하나의 릴레이션에서 튜플 사이의 순서는 무의미하다.

■ 속성의 무순서

- 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.

속성의 원자성

- 속성 값으로 원자 값만 사용할 수 있다.

 

키(Key)

- 릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합을 의미한다.

- 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합이다.

- 릴레이션은 중복된 튜플을 허용하지 않는다고 말했었다! 각각의 튜플에 포함된 속성들 중 어느 하나(혹은 하나 이상)는 값이 달라야 한다는 뜩이다. 키가 되는 속성은 반드시 값이 달라서 튜플들을 서로 구별할 수 있어야 한다.

- 키는 릴레이션 간의 관계를 맺는 데도 사용된다. 

 

키의 특성

 유일성(uniqueness)

- 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 한다.

■ 최소성(minimality)

- 꼭 필요한 최소한의 속성들로만 키를 구성해야 한다.

 

키의 종류

■ 슈퍼키(super key)

- 유일성을 만족하는 속성 또는 속성들의 집합

ex) 고객 릴레이션의 슈퍼키: 고객 아이디, (고객아이디, 고객 이름), (고객 이름, 주소) 등

■ 후보키(candidate key)

- 유일성과 최소성을 만족하는 속성 또는 속성들의 집합

ex) 고객 릴레이션의 후보키: 고객 아이디, (고객이름, 주소) 등

■ 기본키(primary key)

- 후보키 중에서 기본적으로 사용하기 위해 선택한 키

ex) 고객 릴레이션의 기본키: 고객 아이디

어떻게 보면 기본키가 가장 중요한 키이다. 따라서 기본키 선정 시 고려사항을 숙지해야 한다.

▶ 기본키 선정 시 고려 사항

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

- NULL 값은 허용하지 않는다.

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

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

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

■ 대체키(alternate key)

- 기본키로 선택되지 못한 후보키들을 의미한다.

ex) 고객 릴레이션의 기본키로 고객 아이디를 선택했다면 대체키는 (고객이름, 주소)가 된다.

■ 외래키(foreign key)

- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미한다.

- 릴레이션들 간의 관계를 표현한다.

> 참조하는 릴레이션 : 외래키를 가진 릴레이션

> 참조되는 릴레이션 : 외래키가 참조하는 기본키를 가진 릴레이션

사진을 보고 의아할 수 있다. 이름이 다르기 때문이다. 

외래키 속성과 그것이 참조하는 기본키 속성의 이름은 달라도 된다. 하지만 도메인은 같아야 한다.

또한, 하나의 릴레이션에는 외래키가 여러 개 존재할 수 있고, 외래키를 기본키로 사용할 수도 있다.

또한, 같은 릴레이션의 기본키를 참조하는 외래키도 정의할 수 있다. 그리고 외래키 속성은 NULL값을 가질 수도 있다.

 

관계 데이터 모델의 제약

■ 무결성 제약 조건(integrity constraint)

- 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙이다.

- 무결성 : 데이터에 결함이 없는 상태, 즉 정확하고 유효하게 유지한다는 것이다. 정말 중요한 개념이다.

■ 도메인 무결성 제약 조건

- 도메인 제약이라고도 하며, 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건이다. SQL 문에서 데이터 형식(type), 널(null / not null), 기본 값(default), 체크(check) 등을 사용하여 지정할 수 있다.

■ 개체 무결성 제약 조건

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

- 삽입: 기본키 값이 같으면 삽입이 금지된다.

- 수정: 기본키 값이 같거나 NULL일 때 수정이 금지된다.

- 삭제: 특별한 확인이 필요하지 않으며 즉시 수행된다.

■ 참조 무결성 제약 조건

- 외래키 제약이라고도 한다. 릴레이션 간의 참조 관계를 선언하는 제약 조건이다. 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 일치해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것이다.

- 외래키 속성이 NULL 값을 가진다고 해서 참조 무결성 제약조건을 위반한 것은 아니다.

- 삽입:  부모 릴레이션은 튜플을 삽입한 후 수행하면 정상적으로 진행이 된다. 하지만 자식 릴레이션은 참조 받는 테이블에 외래키 값이 없을 경우에는 삽입이 금지된다.

- 삭제: 부모 릴레이션은 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 다른 추가 작업이 필요하다. 자식 릴레이션은 바로 삭제 가능하다.

> 부모 릴레이션에서 투플을 삭제할 경우 참조 무결성 조건을 수행하기 위한 고려사항이 있다. 즉시 작업을 중지하거나 자식 릴레이션의 관련 튜플을 삭제해야 한다. 또한 초기에 설정된 다른 어떤 값으로 변경하거나 NULL 값으로 설정해야 한다.

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

 

참조 무결성 제약조건의 옵션을 알아보자~~~~~~~~~

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

'Computer Science > 데이터베이스' 카테고리의 다른 글

데이터베이스 설계  (0) 2021.05.22
SQL  (1) 2021.04.10
관계 데이터 연산  (0) 2021.04.07
데이터베이스 관리 시스템  (0) 2021.04.03
데이터베이스  (0) 2021.04.03
Comments