2023.09.22


관계 데이터 모델

데이터 베이스 구조를 기술하는 데이터 모델은 데이터베이스를 정의하는데 꼭 필요하다. 데이터 모델 중에서 최근까지 가장 많이 사용되고 있는 관계 데이터 모델은 관계형 데이터 모델이다.

관계 데이터 모델에서는 원하는 데이터가 무엇인지만 기술하는 선언적인 질의어를 사용한다. 관계 데이터 모델이 성공할 수 있는 요인은 릴레이션이라는 중첩된 복잡한 데이터 구조가 없어 간단하고 숙련되지 않은 사용자도 쉽게 사용가능하기 때문이다.


릴레이션 정의

릴레이션이란 데이터 모델 중에서 관계형 데이터 모델을 채택한 데이터베이스 관리 시스템에서 다루는 주요 개체로 행과 열로 이루어진 이차원 표(table)을 의미한다.

릴레이션은 반드시 하나 이상의 키를 갖는다. 릴레이션의 행을 튜플이라고 하고 열을 애트리뷰트라고 말한다. 튜플의 행의 수를 카디날리티(cardinality), 열의 수를 차수(degree)라고 한다. 릴레이션은 구조를 나타내는 머리부와 몸체부로 이루어지는데, 머리부는 내포(intension) 또는 스카마 라고 부르고 몸체부는 외연(extension) 또는 인스턴스라고 부른다.

Screenshot_2023-09-21_at_12 38 10_PM

각 애트리 뷰트는 특정한 한 타입의 값을 갖는다. 한 애트리뷰트에 나타날 수 있는 값들의 집합을 도메인이라고 한다. 도메인 값은 모두 원자값이어야 한다. 다치나 복합적인 값들은 도메인의 값이 될 수 없다. 도메인 값으로 NULL이 포함될 수 있다. NULL은 기본적으로 “없음”을 의미하는 것이다.


릴레이션 특성

임의의 릴레이션 R은 튜플들의 집합이고 R의 임의의 튜플 t는 애트리뷰트의 집합이다. R은 오직 하나의 스키마로 정의되고 임의의 한 애트리뷰트는 한 도메인에서만 값을 취한다. 도메인이 원자값을 가지므로 각 애트리뷰트의 값도 원자값을 가진다.


릴레이션의 키

릴레이션의 키는 각 튜플을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트의 모임이다. 종류로는 수퍼키, 후보키, 기본키, 대체키, 외래키가 있다.


수퍼키(super key)

수퍼키는 한 릴레이션에 속한 튜플들을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트의 집합으로 정의된다. 따라서 수퍼키는 튜플의 유일성을 보장한다.


후보키(candidate key)

후보키는 유일성과 튜플들을 고유하게 식별할 수 있는 애트리뷰트 집합 중에서 최소의 애트리뷰트 개수를 만족해야한다. 후보키 중에서 사람들이 많이 요구하는 질의들을 고려해서 선정한 키가 기본키(primary key)가 된다. 기본키가 아닌 후보키를 대체키(alternate key)라고 한다.


외래키(foreign key)

외래키는 다른 릴레이션의 기본키를 참조하여 사용하고 있는 키를 말한다.


무결성 제약 조건

데이터 베이스 시스템은 데이터 무결성을 보장해야한다. 데이터 무결성은 데이터의 정확성 또는 유효성이라 정의하고 있다. 정확하고 일관된 데이터 베이스 상태를 유지 하기 위한 제약 조건을 무결성 제약조건이라고 한다. 제약조건에는 도메인 제약조건, 키 제약조건, 엔티티 무결성 제약조건, 참조 무결정 제약조건이 있다.


도메인 제약조건 : 각 애트리뷰트의 값이 반드시 원자값이어야 한다는 조건.

키 제약조건 : 키 애트리뷰트는 절대 중복값이 있어서는 안된다는 조건.

엔티티 제약조건 : 기본키를 구성하는 어떤 애트리뷰트도 널값을 가져서는 안된다는 조건.

참조 무결성 제약조건 : 외래키는 참조하는 릴레이션의 기본키 값과 동일하거나 NULL 이어야 한다. 두 릴레이션에 연관된 튜플들 사이의 일관성 유지에 사용된다.



참조 무결성 제약조건을 위한 DBMS 옵션

제한(restricted) : 위배를 야기한 연산을 거절한다.

연쇄(cascade) : 참조되는 릴레이션에서 튜플을 삭제하고 참조하는 릴레이션에서 이 튜플을 참조하는 튜플들도 삭제한다.

널값(nullify) : 참조되는 릴레이션에서 튜플을 삭제하고 참조하는 릴레이션에서 이 튜플을 참조하는 튜플의 값을 null 값으로 삽입

디폴트 값(default) : 널값을 넣는 대신 디폴트 값을 넣는다.



Categories:

Updated:

Leave a comment