관계 데이터 모델의 개념
용어테이블 vs 릴레이션
릴레이션과 테이블의 차이는 추상적 개념과 이를 나타내는 구체적 표현의 차이인데 릴레이션은 추상적 개념(abstract concept)이고 테이블은 이 릴레이션을 기술하는 하나의 구체적 표현(concrete representation)인 것이다. 사실상 하나의 릴레이션은 여러 가지 형태의 테이블로 표현될 수 있는데 이와 같이 하나의 개념을 설명하는 표현 방법, 즉 구현 방법은 항상 여러 가지가 있을 수 있다. 테이블은 모든 애트리뷰트 값이 동일한 튜플을 하나 이상 가질 수 있다. 일반적으로 집합은 두 개의 동일한 원소를 허용하지 않기 때문에 테이블은 튜플 들의 집합이 아니고 튜플 들의 다중 집합이다. 즉 정리하면 릴레이션은 추상적 개념의 표현이며, 테이블은 이 릴레이션의 구체적인 표현이라 볼 수 있다.
- 관계 데이터 모델의 기본 개념
- 속성(애트리뷰트, attribute, 열)
각 속성은 서로 다른 이름을 이용해 구분한다. - 투플(tuple, 행)
고객 한명에 대한 실제 속성 값 6개를 모아둔 것으로, 고객 개체의 인스턴스다. - 도메인
속성 하나가 가질 수 있는 모든 값의 집합으로, 원자 값만 속성 값으로 사용할 수 있다. (ex. LANK의 도메인은 vip, gold, silver, bronze/ AGE의 도메인은 INT, NAME의 도메인은 CHAR(20)) - 널 값
- 차수(degree)
하나의 릴레이션에서 속성의 전체 개수를 릴레이션의 차수라고 한다.(ex. Member 릴레이션은 차수가 6이다.) - 카디널리티
투플의 전체 개수, (행의 갯수 == 데이터의 갯수)
- 속성(애트리뷰트, attribute, 열)
- 릴레이션과 데이터베이스의 구성
*고객 릴레이션 Member(ID, NAME, AGE, LANK, JOB, POINT)를 생각한다- 릴레이션 스키마(=릴레이션 내포, relation intension)
릴레이션의 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조( ex. MEMBER(ID, NAME, AGE, LANK, JOB, POINT) ) - 릴레이션 인스턴스(=릴레이션 외연, relation extension)
어느 한 시점에 릴레이션에 존재하는 투플의 집합 - 데이터베이스 스키마와 데이터베이스 인스턴스
일반적으로 DB는 릴레이션 여러 개로 구성된다. 즉, 데이터베이스 스키마는 릴레이션의 스키마를 모아둔 것이다.
- 릴레이션 스키마(=릴레이션 내포, relation intension)
- 릴레이션의 특성
- 투플의 유일성 : 하나의 릴레이션에는 동일한 투플이 존재할 수 없다.
각 투플의 모든 원소를 비교해서 투플의 동일성을 검사하는 것은 비용이 많이 든다. 따라서 키(Key)를 선정해서 유일성을 보장한다. - 투플의 무순서 : 하나의 릴레이션에서 투플 사이의 순서는 무의미하다.
DB는 위치가 아닌 내용으로 검색되므로, 투플의 순서는 중요하지 않다. - 속성의 무순서 : 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.
속성 값 역시 위치가 아닌 이름으로 접근하므로, 하나의 릴레이션에는 이름이 같은 속성이 존재할 수 없고, 이름도 속성의 의미가 명확히 드러나는 것으로 사용하는 것이 좋다. - 속성의 원자성 : 속성 값으로 원자 값만 사용할 수 있다.
모든 속성값은 다중 값을 가질 수 없다(ex. Member.JOB = (회사원, 학생) 은 불가능하다.)
- 투플의 유일성 : 하나의 릴레이션에는 동일한 투플이 존재할 수 없다.
- 키의 종류
- 슈퍼키 : 유일성의 특성을 만족하는 속성 또는 속성들의 집합( ex. ID or (ID, NAME) or (NAME, ADDRESS) )
- 후보키 : 유일성과 최소성을 만족하는 속성 또는 속성들의 집합( ex. ID or (NAME, ADDRESS) <- (ID, NAME)은 NAME이 없어도 되므로 최소성을 위반한다. )
- 기본키 : 후보키들 중에서 기본적으로 사용할 키(필수 선택)
- 널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다
- 값이 자주 변경될 수 있는 속성이 포함된 후비키는 기본키로 부적합하다
- 단순한 후보키를 기본키로 선택한다
- 대체키 : 기본키로 선택되지 못한 후보키들
- 외래키 : 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합
- Member(ID, NAME, AGE, LANK, JOB, POINT, ADDRESS)를 고려하자
고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금), 주문(주문번호, 주문고객, 주문제품, 수량, 단가, 주문일자) 두개의 릴레이션에서 주문고객이 외래키 이다. 이때 외래키를 가진 릴레이션(주문 릴레이션)을 '참조하는 릴레이션'이라 하고, 기본키를 가진 릴레이션(고객 릴레이션)을 '참조되는 릴레이션'이라 한다.외래키 도메인과 기본키 도메인은 동일해야한다.외래키를 포함해서 기본키를 구성할 수도 있다.
외래키가 자기 자신을(본인 릴레이션)을 참조할 수도 있다.
외래키는 NULL값을 가질 수 있다.
외래키는 유일성이 보장되지 않는다.
관계 데이터 모델의 제약
무결성 제약조건(integrity constraint): 데이터에 결함이 없는 상태, 즉 데이터가 정확하고 유효하게 유지된 상태(사용자의 잘못된 요구에 의해 데이터가 부정확해지지 않도록 보호)
- 개체 무결성 제약조건: 기본키를 구성하는 모든 속성은 널 값을 가질 수 없다.
- 참조 무결성 제약조건: 외래키는 참조할 수 없는 값을 가질 수 없다.
'DB' 카테고리의 다른 글
데이터 모델링 (0) | 2022.04.10 |
---|---|
데이터베이스 시스템 (0) | 2022.04.09 |
데이터베이스 관리 시스템 (0) | 2022.04.09 |
데이터베이스 기본개념 (0) | 2022.04.09 |