티스토리 뷰
릴레이션의 개념
- 스키마: 릴레이션에 어떤 정보가 담길지 정의된 헤더
- 속성: 각 열을 뜻 함. 릴레이션 스키마의 열을 말함
- 도메인: 속성이 가질 수 있는 값의 집합
- 차수: 속성의 개수
- 인스턴스: 스키마에 실제로 저장된 데이터의 집합
- 투플: 릴레이션에서 한 행을 말함
- 카디날리티: 투플 의 수
관계 데이터베이스 스키마는 여러 릴레이션 스키마들의 집합으로 구성된다. 투플이 가지는 속성의 개수는 릴레이션 스키마의 차수와 동일하고, 릴레이션 내의 모든 투플들은 서로 중복되지 않아야 한다.
릴레이션의 특징
- 속성은 단일 값을 가진다.
- 속성은 서로 다른 이름을 가진다.
- 한 속성의 값은 모두 같은 도메인 값을 가진다.
- 속성의 순서는 상관없다.
- 릴레이션 내의 중복된 투플은 허용하지 않는다.
- 투플의 순서는 상관없다.
각 속성의 값은 도메인에 정의된 값만을 가지고 속성의 이름은 중복되어서는 안된다. 속성의 순서와 무관하다. 모든 투플은 서로 값이 달라야한다.
관계 데이터 모델
관계 데이터 모델은 데이터를 2차원 테이블 형태인 릴레이션으로 표현하며 릴레이션에 대한 제약조건과 관계 연한을 위한 관계대수를 정의한다. 관계 데이터 모델을 컴퓨터 시스템에 구현한 것을 관계 데이터베이스 시스템이라고한다.
키
- 키는 특정 투플을 식별할 때 사용하는 속성 혹은 속성의 집합이다.
- 키가 되는 속성(혹은 속성의 집합)은 반드시 값 유일한 값으로 지정해 투플들을 서로 구별할 수 있어야한다.
- 키는 릴레이션 간의 관계를 맺는 데도 사용
슈퍼키
- 슈퍼키는 투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합을 말한다.
- 투플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있다.
- 투플을 식별할 수 있는 최소한의 속성 집합이다.
- 키를 구성하는 속성이 많으면 그만큼 관계 표현이 복잡해지고 사용에도 불편이 따른다.
아래 고객 릴레이션에서 투플을 유일하게 식별할 수 있는 키는 고객번호와 주민번호다. (주민번호), (주민번호, 이름), (주민번호, 이름, 주소), (고객번호), (고객번호, 주소) 등의 고객번호와 주민번호를 포함한 모든 속성의 집합이 슈퍼키가 된다.
후보키
- 후보키는 투플을 유일하게 식별할 수 있는 속성의 최소 집합이다.
주문 릴레이션의 경우 고객번호가 중복되고 도서번호도 값이 유일하지 않다. 이럴때는 (고객번호, 도서번호) 이렇게 2개의 속성을 합한 키를 사용하면 된다. 이렇게 2개 이상의 속성으로 이루어진 키를 복합키라고 한다. 그런데 만약 한 고객이 도서를 중복으로 주문한다면 투플을 유일하게 식별할 수 가 없다. 이럴때는 대체키를 사용하는데 밑에서 알아보자.
기본키
- 기본키는 여러 후보키 중 하나를 선정하여 대표로 삼는 키를 말한다.
- 후보키가 하나뿐이면 그 후보키를 기본키로 사용하면 되고 여러 개라면 릴레이션의 특성을 반영하여 하나를 선택하면 된다.
도서 릴레이션의 경우 이름이 같은 도서가 없다고 가정할 때 도서번호 혹은 도서이름을 기본키로 사용할 수 있다. 릴레이션 스키마를 표현할 때 기본키에 밑줄을 그어 표시한다. 도서번호를 기본키로 설정한다면 -> 도서(도서번호, 도서이름, 출판사, 가격) 이렇게 작성하면 된다.
기본키 선정 시 고려사항
- 기본키는 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야한다.
- 기본키는 NULL 값을 허용하지 않는다.
- 키값의 변동이 일어나지 않아야한다.
- 복합키를 포함한 여러 후보키중 최대한 적은 수의 속성을 가진 것이라야 한다.
- 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 한다.
고려사항중 일부는 기본키 제약조건이라고 하며, 기본키 제약조건에 대해서는 무결설 제약 조건이라고 하는데 아래에서 나중에 다룬다.
대리키
- 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 일련번호 같이 마땅한 기본키가 없을 사용하는 가상의 속성의 키를 말한다.
- 대리키는 DBMS나 관련 소프트웨어에서 임의로 생성하는 값이다.
주문 릴레이션의 경우 (고객번호, 도서번호)의 복합키를 기본키로 사용하면 한 고객이 도서를 중복으로 주문한다면 투플을 유일하게 식별할 수 가 없는 문제가 있었고, 복잡하고 불편하다. 이 경우 사용자에게 의미 없는 주문번호라는 새로운 속성을 만들면 불편함을 해소할 수 있다.
대체키
- 대체키는 기본키로 선정되지 않은 후보키를 말한다.
고객 릴레이션의 경우 고객번호와 주민번호 중 고객번호를 기본키로 정하면 주민번호가 대체키가 된다.
외래키
- 다른 릴레이션의 기본키를 참조하는 속성을 말한다.
- 다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계를 표현한다.
주문 릴레이션의 기본키인 주문번호는 고객이 도서를 주문하면 생성된다. 이때 해당되는 고객번호와 도서번호도 주문 릴레이션에 저장된다. 고객번호와 도서번호는 각 릴레이션의 기본키이며 주문 릴레이션에서 외래키로 사용되었다.
외래키가 성립하기 위해서는 양쪽 릴레이션의 도메인이 서로 같아야한다. 또한 참조되는 릴레이션의 기본키 값이 변경되면 이 기본키를 참조하는 외래키 값도 변경되어야한다.외래키는 항상 데이터의 일관성을 유지해야한다. 외래키는 참조되는 릴레이션의 기본키와 달리 NULL 값을 포함할 수 있고 중복 값도 허용한다.
외래키는 자기 자신의 기본키를 참조할 수도 있다.
요약 - 키의 포함 관계
무결성 제약조건
- 도메인 무결성 제약조건
- 개체 무결성 제약조건
- 참조 무결성 제약조건
데이터 무결성은 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말한다. 알관성과 정확성을 가지고 구축된 데이터베이스가 계속해서 무결성을 유지하려면 투플의 삽입, 삭제, 수정 시 데이터의 제약조건 준수 여부를 확인해야한다.
DBMS는 삽입, 삭제, 수정 시 필요한 기본적인 제약조건을 지켜준다. 이 제약조건을 무결성 제약 조건이라한다.
도메인 무결성 제약 조건
도메인 무결성 제약조건은 릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만을 가져야한다는 조건이다. 조건을 지정하려면 SQL 문에서 데이터 형식(type), 널(null/not null), 기본 값(default), 체크(check) 등을 사용하여 지정하면 된다.
개체 무결성 제약조건
- 삽입: 기본키 값이 같으면 삽입이 금지됨
- 수정: 기본키 값이 같거나 NULL로도 수정이 금지 됨
- 삭제: 특별한 확인이 필요하지 않으며 즉시 수행한다.
개체 무결성 제약조건은 기본키 제약이라고도하며 기본키는 NULL 값을 가져서는 안 되며 릴레이션내에 오직 하나의 값만 존재해야 한다는 조건을 말한다.
참조 무결성 제약 조건
- 자식 릴레이션에서 삽입: 참조받는 테이블에 외래키 값이 없으므로 삽입이 금지
- 자식 릴레이션에서 삭제:부모 릴레이션에는 아무런 영향을 주지 않으므로 바로 삭제가능
- 부모 릴레이션에서 삽입: 개체 무결성 제약조건에 따라 삽입
- 부모 릴레이션에서 삭제: 참조중인 자식 릴레이션이 존재한다면 금지하거나 추가 작업이 필요함.
외래키 제약이라고도 하며, 릴레이션 간의 참조 관계를 선언하는 제약 조건을 말한다. 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될때 부모 릴레이션의 제약을 받는다. 학과 릴레이션에서 컴퓨터학과를 삭제한다면 학생 릴레이션에서 참조하는 투플이 존재하기 때문에 거부되거나 삭제 옵션이 있다면 해당 옵션을 수행하고 삭제한다.
참조 무결성 제약조건의 옵션
참고
'데이터베이스' 카테고리의 다른 글
[SQL] VIEW의 개념 / 장단점 / 사용법 (0) | 2024.11.07 |
---|---|
[데이터베이스] DDL, DML, DCL이 뭘까? (1) | 2024.11.07 |
[데이터베이스] 3단계 데이터베이스 구조란? (0) | 2024.10.30 |
[데이터베이스] 데이터 모델이란? (0) | 2024.10.30 |
[데이터베이스] 데이터베이스란? (0) | 2024.10.30 |