릴레이션
: 행과 열로 구성된 테이블
- 관계 : 릴레이션 내에서 생성되는 관계
- 튜플 : row(=행)
- 카디널리티 : 튜플의 개수
- 속성 : column(=열)
스키마 : 내포(속성들의 모음 = 구조 = 메타 데이터)
스키마의 요소
- 속성 attribute : 릴레이션 스키마의 열
- 도메인 domain : 속성이 가질 수 있는 값의 집합
- 차수 degree : 속성의 개수
스키마의 표현
- 릴레이션 이름(속성1 : 도메인1 , 속성 2 : 도메인2 , …)
- ex) 도서(도서번호,도서이름,출판사,가격)
인스턴스 : 외연(속성 값이 지정된 모든 튜플을 지칭 = 데이터)
인스턴스의 요소
- 튜플 :릴레이션의 행, 모든 튜플은 서로 중복되지 않아야 함
- 카디널리티 : 튜플의 수
릴레이션 구조와 관련된 용어
릴레이션의 특징
- 속성은 단일 값을 가진다 : 각 속성의 값은 도메인에 정의된 값만을 가지며 그 값은 모드 단일 값이어여 함
- 속성은 서로 다른 이름을 가진다 : 속성은 한 릴레이션에서 서로 다른 이름을 가져야만 함
- 한 속성의 값은 모두 같은 도메인 값을 가진다 : 한 속성에 속한 열은 모두 그 속성에서 정의한 도메인 값만 가질 수 있음.
- 속성의 순서는 상관없다. : 속성의 순서가 달라도 릴레이션 스키마는 같음.
- 릴레이션 내의 중복된 튜플을 허용하지 않는다 : 하나의 릴레이션 인스턴스 내에서는 서로 중복된 값을 가질 수 없음. 즉 모든 튜플은 서로 값이 달라야 함.
- 튜플의 순서는 상관없다 : 튜플의 순서가 달라도 같은 릴레이션임.
관계 데이터 모델
- 데이터를 2차원 테이블 형태인 릴레이션으로 표현하며 릴레이션에 대한 제약조건과 관계 연산을 위한 관계대수(relational algebra)를 정의함
무결성 제약조건
키
- 특정 튜플을 식별할 떄 사용하는 속성 혹은 집합
- 릴레이션은 중복된 튜플을 허용하지 않기 떄문에 각각의 튜플에 포함된 속성들 중 어느 하나는 값이 달라야 함.(튜플간의 구별 가능해야함)
- 키는 릴레이션 간의 관계를 맺는 것에 사용됨.
슈퍼키
- 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
- 후보키들을 한개라도 포함하고 있는 모든 속성의 집합이 슈퍼키가 된다.
후보키
- 튜플을 유일하게 식별할 수 있는 속성의 최소 집합
- 1개의 속성으로 기본키를 만들 수 없는 경우 2개 이상의 속성으로 이루어진 키를 만들게 되는데 이 복합키 라고 한다.
기본키(primary key)
- 여러 후보키 중 하나를 선정하여 대표로 삼는 키
- 후보키가 여러개라면 릴레이션의 특성을 반영하여 하나를 선택해야함.
기본키 선정 시 고려사항
- 릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가져야 함
- NULL 값은 허용하지 않음.
- 키 값의 변동이 일어나지 않아야 함.
- 최대한 적은 수의 속성을 가진 것이어야 함.
- 향후 키를 사용하는데 있어서 문제 발생 소지가 없어야 함.
Ex) 고객(고객번호,이름,주민번호,주소,핸드폰번호) 처럼 기본키는 밑줄로 표기
대체키
- 기본키로 선정되지 않은 후보키를 말함.
대리키(surrogate key) ,인조키(artificial key)
- 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때 일련번호 같은 가상의 속성을 만들어 기본키를 삼는 경우에 사용됨
외래키
- 다른 릴레이션의 기본키를 참조하는 속성을 말함.
- 다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계(Relationship)을 표현함
외래키의 특징
- 관계 데이터 모델의 릴레이션 간의 관계를 표현함.
- 다른 릴레이션의 기본키를 참조하는 속성임
- 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 함.
- 참조되는 (기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨.
- NULL 값과 중복 값 등이 허용됨.
- 자기 자신의 기본키를 참조하는 외래키도 가능함.
- 외래키가 기본키의 일부가 될 수 있음.
릴레이션 간의 참조 관계
- 외래키 사용 시 참조하는 릴레이션과 참조되는 릴레이션이 꼭 다른 릴레이션일 필요는 없음. 즉 자기 자신의 기본키를 참조할 수도 있음.
무결성 제약조건
- 데이터 무결성이란 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말함.
도메인 무결성 제약조건
- domain constraint 라고 한다. 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건이다. SQL 문에서 데이터 형식, 널여부, 기본 값, 체크 등을 사용하여 지정할 수 있음.
개체 무결성 제약조건
- primary key constraint라고 한다. 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉, 기본키는 NULL값을 가져서는 안 되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건임.
- 삽입 : 기본키 값이 같으면 삽입이 금지됨.
- 수정 : 기본키 값이 같거나 NULL로도 수정이 금지됨.
- 삭제: 특별한 확인이 필요하지 않으며 즉시 수행함.
참조 무결성 제약조건
- foreign key constrain라고 한다. 릴레이션 간의 참조 관계를 선언하는 제약조건이다. 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것임.
- 삽입 :
- 부모 릴레이션 : 튜플 삽입한 후 수행하면 정상적으로 진행된다.
- 자식 릴레이션 : 참조받는 테이블에 외래키 값이 없으면 삽입이 금지된다.
- 삭제
- 부모 릴레이션 : 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 다른 추가 작업이 필요함.
- 자식 릴레이션 : 바로 삭제 가능함.
- 부모 릴레이션에서 튜플을 삭제할 경우 참조 무결성 조건을 수행하기 위한 고려사항
- 즉시 작업을 중지
- 자식 릴레이션의 관련 튜플을 삭제
- 초기에 설정된 다른 어떤 값으로 변경
- NULL 값으로 설정
- 수정
- 삭제와 삽입 명령이 연속해서 수행됨
- 부모 릴레이션의 수정이 일어날 경우 삭제 옵션에 따라 처리된 후 문제가 없으면 다시 삽입 제약조건에 따라 처리됨.
- 참조 무결성 제약조건의 옵션(부모 릴레이션에서 튜플 삭제시)
제약조건 정리
'Back > DataBase이론' 카테고리의 다른 글
4장 SQL 고급 (0) | 2023.03.27 |
---|---|
3장 SQL 기초 (0) | 2023.03.23 |
2장 관계형 데이터베이스 - 2 (0) | 2023.03.23 |
1장 데이터베이스 시스템 (0) | 2023.03.22 |
0장 서론 (0) | 2023.03.22 |