본문 바로가기

데이터베이스

데이터베이스 - 관계 데이터 모델(1)

1. 릴레이션 

행과 열으로 이루어진 테이블

행과 열으로 이루어진 테이블

 

  • 관계

릴레이션 내에서 생성되는 관계 2가지

 1. 릴레이션 내에서 생성되는 데이터들의 관계

 2. 릴레이션 간 생성되는 관계

테이블에서의 용어

스키마의 요소

 속성 : 릴레이션 스키마의 열

 도메인 : 속성이 가질 수 있는 값의 집합

 차수 : 속성의 개수

인스턴스의 요소  

 튜플 : 릴레이션의 행

 카디날리티 : 튜플의 수

용어가 겹치는 부분을 정리

 

  • 릴레이션의 특징

 속성은 단일 값을 가진다. ( 하나의 속성에 여러개의 값을 가질 수 없음.)

 속성은 서로 다른 이름을 가진다.

 한 속성의 값은 모두 같은 도메인 값을 가진다.

 속성의 순서는 상관없다.

 릴레이션 내의 중복된 튜플은 허용하지 않는다. ( 서로 다른 인스턴스가 모든 속성에 대해 같은 값일 수 없음. 하나의 속성에서 값이 달라도                                                                           값이 다른 인스턴스임.)

 튜플의 순서는 상관없다.

  • 관계 데이터 모델

 관계 데이터 모델은 데이터를 2차원 테이블 형태인 릴레이션으로 표현함.

 릴레이션에 대한 제양조건과 관계 연산을 위한 관계대수를 정의함.

 

2. 키

앞으로 키를 설명하면서 이용할 데이터베이스

 키(key)란? 특정 튜플을 식별할 때 사용하는 속성(들).

 릴레이션은 중복된 튜플을 허용하지 않기 때문에 각각의 튜플에 포함된 속성들 중 어느 하나는 값이 달라야한다. 즉, 키가 되는 속성은 반드  시 값이 달라서 튜플들을 구별 할 수 있어야한다.

 키는 릴레이션 간의 관계를 맺는 데도 사용된다. (ex 외래키)

  • 슈퍼키

튜플을 유일하게 식별할 수 있는 속성(들) (유일성)

EX) 고객 릴레이션으로 예를 들면,

 고객번호 : 고객별로 유일 한 값이기 때문에 슈퍼키임

 이름 : 동명이인이 있을 수도 있으므로 슈퍼키가 아님

 주민번호 : 개인별로 유일한 값이 부여 되어 있기때문에 슈퍼키임

 주소 : 가족이나 동거인등 같은 주소를 사용할 수 도 있으므로 슈퍼키가 아님

 핸드폰 : 한 사람이 여러개의 핸드폰 번호를 가지거나, 핸드폰 번호가 없는 사람이 있을 수 있기 때문에 슈퍼키가 아님

=> 고객 릴레이션은 고객번호, 주민번호 둘 중 하나라도 집합에 포함이 되어있다면, 그 모든 속성의 집합은 슈퍼키이다. (최소성을 만족하지 않아도 된다. 속성의 '집합'들도 슈퍼키가 될수 있기때문에)

  • 후보키

튜플을 유일하게 식별 할 수 있는 속성의 최소 집합 (유일성, 최소성)

슈퍼키와의 차이점은 ㅇ

EX)주문 릴레이션을 예로 들면,

 고객번호 : 한명의 고객이 여러 권의 도서를 구입할 수 있으므로 후보키가 될 수 없다.

 도서번호 : 도서번호가 2인 '축구아는 여자'는 두 번의 주문 기록이 있으므로 튜플을 유일하게 식별할 수 없다.

=>주문 릴레이션의 후보키는 2개의 속성을 합한 (고객번호, 도서번호)가 됨.

==>이렇게 속성을 2개 이상으로 합쳐서 유일성을 만족하는 키를 복합키라고 함

  • 기본키

여러 후보키중 하나를 선정하여 대표로 삼는 키

후보키가 하나뿐이라면 그 후보키를 기본키로 사용하면 되고, 후보키가 여러개라면 하나를 선택하면 됨

기본키 선정 시 고려사항

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

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

릴레이션 스키마를 표현할 때 기본키는 밑줄을 그어 표시함 (EX : 고객(고객번호, 이름, 주민번호, 주소, 핸드폰)

  • 대리키

기본키가 보안을 요하거나, 너무많은 속성으로 기본키가 만들어지거나, 마땅한 기본키가 없을 때는 인덱스 같은 가상의 속성을 만들어서 기본키로 삼는다.

대리키는 임의로 생성하는 값으로 인덱스를 제외하고 의미는 없음.

  • 대체키

기본키로 선택되지 않은 후보키

EX)고객 릴레이션에서 고객번호와 주민번호중 고객번호를 기본키로 정하면 주민번호가 대체키가 됨

  • 외래키

다른 릴레이션의 기본키를 참조하는 속성.

외래키로 관계 데이터 모델의 특징인 릴레이션 간의 관계를 표현할 수 있음

외래키의 특징

  1. 관계 데이터 모델의 릴레이션 간의 관계를 표현함
  2. 다른 릴레이션의 기본키를 참조하는 속성
  3. 참조하고 참조되는 양쪽 릴레이션의 도메인은 서로 같아야 함
  4. 참조되는 값이 변경되면 참조하는 값도 변경됨
  5. 널값과 중복 값 등이 허용됨
  6. 자기 자신의 기본키를 참조할 수 있음
  7. 외래키가 기본키의 일부가 될 수 있음

키들의 포함 관계

슈퍼키 : 튜플을 식별할 수 있는 '모든' 속성의 집합

후보키 : 튜플을 식별할 수 있는 '최소성'을 만족하는 속성의 집합. 기본키와 대체키를 합하면 후보키가 나온다.

기본키 : 후보키 중 선택된 키

대체키 : 후보키 중 선택되지 않은 키

  • 무결성 제약조건 

무결성 : 데이터 베이스에 저장된 일관성과 정확성을 지키는 것

도메인 무결성 제약조건 : 도메인 제약 이라고도 하며, 릴레이션 내의 튜플 들이 각 속서의 도메인에 지정된 값만을 가져야 한다는 조건

개체 무결성 제약조건 : 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉, 기본키는 널 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건

  삽입 할 때 : 기본키 값이 같지 않아야함

  수정 할 때 : 기본키 값이 같지 않거나 널값이 아니여야 함

  삭제 할 때 : 제약 없음

참조 무결성 제약조건(외래키) : 외래키로 받아온 것은 원래 릴레이션의 기본키와 도메인(값의 집합)이 동일해야 하며, 자식 릴레이션의                                                        값이 변경될 때 부모 릴레이션의 제약을 받는 것임

 삽입 할 때 : 부모 릴레이션에 없는 값을 자식 릴레이션에서 삽입 불가 

 수정 할 때 : 삽입과 삭제가 순차적으로 이루어지므로, 삽입 조건과 삭제 조건이 둘 다 맞아야함.

 삭제 할 때 : 부모 릴레이션에서 삭제하면 자식 릴레이션 까지 같이 삭제 되므로 금지하거나 다른 작업을 해야함.

제약조건 정리표

'참조 무결성 제약조건'에서 기본키가 참조 되어 있으면 삭제하는 옵션

  1. RESTRICTED : 삭제 작업 거부
  2. CASCADE : 참조된 외래키 까지 같이 삭제
  3. DEFAULT : 참조된 외래키의 값을 미리 설정한 값으로 변경
  4. NULL : 널값으로 변경 ( 널값을 허가 한 경우만 )

옵션 값에 따라 작업처리

3. 관계대수

릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어

관계대수와 관계해석

 관계대수 : 어떤 데이터를 어떻게 찾는지에 대한 처리 절차를 명시하는 절차적인 언어이며, DBMS내부의 처리 언어로 사용됨

 관계해석 : 어떤 데이터를 찾는지만 명시하는 선언적인 언어로 관계대수와 함께 관계 DBMS의 표준 언어인 SQL 이론적인 기반을 제공함

관계대수와 관계해석은 모두 관계 데이터 모델의 중요한 언어이며 실제 동일한 표현 능력을 가지고 있음.

 

릴레이션의 수학적 개념

관계대수 연산자 표

단항 연산자 : '릴레이션1 연산자<조건> '릴레이션2'

이항 연산자 : '연산자'<조건> '릴레이션'

  • 셀렉션

릴레이션의 튜플을 추출하기 위한 연산.

단항연산자로, 조건을 명시하면 그 조건에 따라 튜플을 반환한다. 

 

  • 프로젝션

단항연산자로, 속성(열)을 명시하면 그 속성의 값만으로 이루어진 튜플을 반환한다.

 

  • 합집합

이항연산자로, 릴레이션을 합하여 하나의 릴레이션을 반환함. 두 개의 릴레이션은 같은 속성 순서와 도메인을 가져야 함.

도서 A B를 하나의 릴레이션으로 반환

 

  • 교집합

이항연산자로, 두 릴레이션이 공통으로 가지고 있는 튜플을 반환함.

겹치는 도서목록 반환

 

  • 차집합

이항연산자로, 첫번째 릴레이션에는 속하고 두번째 릴레이션에는 속하지 않는 튜플을 반환함.

두 지점 중 지점 A에서만 보우하고 있는 도서 목록 반환

 

  • 카티전 프로덕트

두 릴레이션을 연결시켜 하나로 합칠 때 사용함.

결과 릴레이션은 첫 번째 릴레이션 하나당 두 번째 릴레이션을 전체를 배열하여 반환함.

결과 릴레이션의 속성의 개수는 두 릴레이션의 차수의 합이며, 카디널리티(튜플의 개수)는 두 릴레이션의 카디널리티의 곱임.

고객 릴레이션과 주문릴레이션의 카티전 프로덕트 출력

 

  • 조인

이항연산자로, 카티널 프로덕트에서 '속성 값이 같은' 튜플을 수평으로 결합하는 연산임. (내부적으로는 카디널 프로덕트에서 하는 것이 아니라 바로 출력을 해준다)

조인을 수행하려면 속성이 서로 동일한 도메인이여야 함.

 

 

조인 연산의 구분

  • 세타조인

속성 값은 비교하여 조건을 만족하는 튜플만 반환 ( =, ≠, ≤, ≥, <, > 중 하나)

  • 동등조인

세타조인에서 = 연산자 사용하는 세타조인 (보통 조인연산이라고 하면 동등조인을 말함)

카티널리티 프로덕트에서 고객테이블의 고객번호와 주문테이블의 고객번호가 같은 것만 출력

  • 자연조인

동등조인과 동일하나, 속성의 중복을 제거한다. (옆에 N추가)

 

  • 외부조인

카디널리티 프로덕트에서 한 쪽 릴레이션의 속성만 보여준다.

예를 들면,

왼쪽 외부조인

완전 외부조인 ( 왼쪽 외부조인 + 오른쪽 외부조인 )

오른쪽 외부조인

 

 

  • 세미조인

자연조인을 한 후, 기호가 닫힌 쪽 릴레이션의 튜플만 반환

 

 

  • 디비전

 

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

1. 데이터베이스 개론 (0)  (0) 2023.04.14