Oracle(오라클)

003 - 관계 데이터 모델

나른한 노치 2020. 7. 14. 14:12

01. 관계 데이터 모델의 개념

[릴레이션]

: 행과 열로 구성된 테이블 

 

[1]관계(Relationship)는 두 가지 개념으로 볼 수 있다.

1) 릴레이션 내에서 생성되는 관계.

  • 실제 데이터들의 집합

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

  • 릴레이션 간의 관계

[2] 스키마와 인스턴스로 이루어진다.

스키마(Schema) : 관계 데이터베이스의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의.

  • 스키마는 테이블의 첫 행인 헤더(Header)에 나타남.
  • 각 데이터의 특징을 나타내는 속성, 자료 타입의 정보를 가짐

인스턴스(Instance) : 정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합을 의미.

 

[3] 릴레이션 스키마 : 릴레이션에 어떤 정보가 담길지 정의.

  • 속성(Attribute) : 릴레이션 스키마의 열
  • 도메인(Domain) : 속성이 가질 수 있는 값의 집합
  • 차수(Degree) : 속성의 개수

[4] 릴레이션 인스턴스 : 릴레이션 스키마에 실제로 저장된 데이터의 집합.

  • 튜플(Tuple) : 릴레이션의 행
  • 카디널리티(Cardinality) : 튜플의 수

[릴레이션의 특징]

  • 속성은 단일 값을 가진다.
  • 속성은 서로 다른 이름을 가진다.
  • 한 속성의 값은 모두 같은 도메인 값을 가진다.
  • 속성의 순서는 상관없다.
  • 릴레이션 내의 중복된 튜플은 허용하지 않는다.
  • 튜플의 순서는 상관없다.

//릴레이션 생성 및 변경에 관한 SQL 명령어

- CREATE TABLE : 데이터를 저장하기 위한 테이블(릴레이션)의 구조(스키마)를 정의

- INSERT : 생성된 테이블에 데이터(튜플)를 삽입

- DELETE : 테이블에 저장된 데이터(튜플)를 삭제

- UPDATE : 테이블에 저장된 데이터(튜플)을 수정

- SELECT : 테이블에 저장된 데이터(튜플)을 검색

 

[관계 데이터 모델] : 제약조건(Constraints)과 관계대수(Relational algebra)를 정의 

 

02. 무결성 제약조건

[키] : 릴레이션에서 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합.

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

 

[슈퍼키(Super Key)] : 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합을 말한다.

//튜플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있다.

+ 유일성 만족 최소성 불만족

 

[후보키(Candidate key)] : 튜플을 유일하게 식별할 수 있는 속성의 최소 집합이다.

//효율성 측면에서 매우 중요하다.

두 개 이상의 속성으로 이루어진 키를 복합키(Composite Key)라고 한다.

+ 유일성 최소성 둘다 만족

 

[기본키(PK : Primary Key)] : 여러 후보키 중 하나를 선정하여 대표를 삼는 키. 

  • 릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가짐.
  • NULL값은 허용하지 않음.
  • 키 값의 변동이 없음
  • 최소 속성을 가진 것.
  • 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 함.

[대리키(Surrogate key 혹은 Artificial key)] : 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 키가 없을 때는 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 경우가 있다.

 

[대체키(Alternate key) : 기본키로 선정되지 않은 후보키.

 

[외래키(FK : Foreign Key) : 다른 릴레이션의 기본키를 참조하는 속성.

다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계(Relationship)를 표현한다.

외래키가 성립 조건 : 참조하고 참조되는 양쪽 릴레이션의 도메인이 서로 같아야 함.

  • 관계 데이터 모델의 릴레이션 간의 관계를 표현한다.
  • 다른 릴레이션의 기본키를 참조하는 속성이다.
  • 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 한다.
  • 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경해야한다.
  • NULL 값과 중복 값 등이 허용한다
  • 자기 자신의 기본키를 참조하는 외래키도 가능하다.
  • 외래키가 기본키의 일부가 될 수 있다.

[무결성 제약 조건]

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

  • 도메인 무결성 제약조건(domain integrity constraint)
    : 도메인 제약(domain constraint)이라고도 하며, 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만 가져야 한다는 조건이다. SQL문에서 데이터 형식(Type), 널(null/not null), 기본 값(default), 체크(check) 등을 사용.
  • 개체 무결성 제약조건(entity integrity constraint)
    : 기본키 제약(primary key constraint)이라고도 한다. 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉, 기본키는 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건.
  • 참조 무결성 제약조건(referential integrity constraint)
    : 외래키 제약(foreign key constraint)이라고도 한다. 릴레이션 간의 참조 관계를 선언하는 제약조건.

[고유성 제약조건(unique constraint)]

: 키 속성의 모든 값들은 서로 같은 값이 없어야 한다는 것. 기본키 제약과는 달리 NULL 값을 허용한다.

구분 도메인
도메인 무결성 제약조건 개체 무결성 제약조건 참조 무결성 제약조건
제약 대상 속성 튜플 속성과 튜플
같은 용어 도메인 제약
(domain constraint)
기본키 제약
(primary key constraint)
외래키 제약
(foreign key constraint)
해당되는 키 - 기본키 외래키
NULL 값 허용 여부 허용 불가 허용
릴레이션 내
제약조건의 개수
속성의 개수와 동일 1개 0~여러 개
기타 튜플 삽입/수정 시 제약사항 우선 확인 튜플 삽입/수정 시 제약사항 우선 확인 - 튜플 삽입/수정 시 제약사항 우선 확인
- 부모 릴레이션의 튜플 수정/삭제 시 제약사항 우선 확인

 

무결성 제약조건의 수행

[개체 무결성 제약조건] : DBMS는 튜플을 삽입하거나 수정할 때마다 개체 무결성 제약조건을 지키는지 확인한다.

즉, 기본키 값이 유일한지, NULL 값이 아닌지를 검사한다. 

 

[참조 무결성 제약조건]

 

03. 관계대수

[관계대수(relational algebra)] :릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어.

 

[관계의 수학적 의미]

집합 : 객체의 모임

A X B (카티전 프로덕트)

 

[관계대수 연산자]

 

연산자 종류 대상 연산자 이름 기호 설명
기본 단항 셀렉션 σ 릴레이션에서 조건에 만족하는 튜플을 선택
기본 단항 프로덕션 π 릴레이션의 속성을 선택
추가 단항 개명 ρ 릴레이션이나 속성의 이름을 변경
유도 이항 디비전 ÷ 부모 릴레이션에 포함된 튜플의 값을 모두 갖고 있는 튜플을 분자 릴레이션에서 추출
기본 이항 합집합 두 릴레이션의 합집합
기본 이항 차집합 두 릴레이션의 차집합
유도 이항 교집합 두 릴레이션의 교집합
기본 이항 카티전 프로덕트 × 두 릴레이션에 속한 모든 튜플의 집합
유도 이항 조인 세타 ▷◁θ 두 릴레이션 간의 비교 조건에 만족하는 집합
동등 ▷◁ 두 릴레이션 간의 같은 값을 가진 집합
자연 ▷◁N 동등조인에서 중복 속성 제거
세미 left ▷< 자연조인 후 오른쪽 속성을 제거
right >◁ 자연조인 후 왼쪽 속성을 제거
외부 left   - 자연조인 후 각각 왼쪽(left),오른쪽(right),양쪽(full)의 모든 값을 결과로 추출
- 조인이 실패(또는 값이 없을 경우) 한 쪽의 값을 NULL로 채움
right  
full  

[관계대수식]

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

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

 

관계대수식의 결과는 릴레이션으로 반환.

반환된 릴레이션은 릴레이션의 모든 특징을 따른다.

즉, 중복된 튜플은 존재하지 않는다.

 

[셀렉션과 프로젝션]

관계대수에서 가장 기본적인 연산으로 하나의 릴레이션을 대상으로 하는 단항 연산자.

 

[셀렉션] : 릴레이션의 튜플을 추출하기 위한 연산.

- 하나의 릴레이션으로 하는 단항 연산자

- 찾고자 하는 튜플의 조건(predicate)을 명시하고 그 조건에 만족하는 튜플을 반환.

- 결과 릴레이션의 차수는 대상 릴레이션과 동일하고, 카디널리티는 대상 릴레이션보다 작거나 같다.

[프로젝션] : 릴레이션의 속성을 추출하기 위한 연산

- 단항 연산자이다.

- 결과 릴레이션의 차수는 대상 릴레이션의 차수보다 작거나 같고, 카디널리티는 동일하다.

 

[집합연산]

: 합집합(union), 교집합(intersection), 차집합(set-difference), 카티전 프로덕트(cartesian-product)

 

[카티전 프로덕트] : 수평적 연산. 

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

- 릴레이션의 차수는 두 릴레이션의 차수의 합

- 카디널리티는 두 릴레이션의 카디널리티의 곱

 

[조인] : 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 튜플을 수평으로 결합하는 연산.

 

[세타조인과 동등조인]

  • 세타조인(theta join) : 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플을 반환.
  • 동등조인(equi join) : 세타조인에서 = 연산자를 사용한 조인.
  • 자연조인(natural join) : 동등조인에서 조인에 참여한 속성이 두 번 나오지 않도록 두 번째 속성을 제거한 결과를 반환.
  • 외부조인(outer join) : 자연조인의 확장된 형태. 자연조인 시 조인에 실패한 튜플을 모두 보여주되 값이 없는 대응 속성에는 NULL 값을 채워서 반환한다.

[디비전] : 다른 연산과 달리 릴레이션의 속성 값의 집합으로 연산을 수행.

 

#요약

  1. 릴레이션
    : 관계 데이터 모델의 핵심적인 개념으로 행과 열로 구성된 테이블을 말한다.
  2. 릴레이션 스키마
    : 관계 데이터베이스의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의한다.
  3. 릴레이션 인스턴스
    : 릴레이션 스키마에 실제로 저장되는 데이터의 집합을 말한다.
  4. 관계 데이터베이스 시스템
    : 관계 데이터 모델을 컴퓨터 시스템에 구현한 것이다.

  5. - 슈퍼키 : 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
    - 후보키 : 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합으로, 속성의 최소 집합이다.
    - 기본키 : 여러 후보키 중 하나를 선정하여 대표로 삼는 키를 말한다.
    - 대리키 : 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 것을 말한다
    - 외래키 : 다른 릴레이션의 기본키를 참조하는 속성을 말한다.
  6. 무결성 제약조건
    - 도메인 무결성 제약조건 : 모든 튜플은 릴레이션 스키마에 정의된 각 속성의 도메인에 지정된 값만을 가져야 한다.
    - 개체 무결성 제약조건 : 기본키는 NULL 값을 가져서는 안 되며, 릴레이션 내에 오직 하나의 값만 존재해야 한다.
    - 참조 무결성 제약조건 : 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 속성의 도메인이 동일해야 하며, 자식 릴레이션의 값 변경 시 부모 릴레이션의 값에 제약을 받는다.
  7. 참조 무결성 제약조건의 옵션
    : 참조 무결성 제약조건을 수행하기 위한 네 가지 옵션은 RESTRICTED, CASCADE, DEFAULT, NULL 등이 있다.
  8. 관계대수
    : 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어.
  9. 셀렉션
    : 릴레이션의 튜플을 추출하기 위한 연산으로 기호는 'σ'를 사용한다.
  10. 프로젝션
    : 릴레이션의 속성을 추출하기 위한 연산으로 기호는 'π'를 사용한다.
  11. 집한연산
    : 수학의 집합연산과 동일한 연산으로 합집합, 교집합, 차집합, 카디전 프로덕트 등이 있다.
  12. 조인
    : 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 튜플을 수평으로 결합하는 연산.
    - 세타조인 : 두 릴레이션의 속성 값을 비교해서 조건에 만족하는 튜플을 반환.
    - 동등조인 : 세타조인에서 = 연산자를 사용한 조인.
    - 자연조인 : 조인에 참여한 속성이 두 번 나오지 않도록 중복된 속성을 제거한 결과를 반환
    - 세미조인 : 자연조인을 한 후 두 릴레이션 중 한쪽 릴레이션의 결과만 반환
    - 외부조인 : 자연조인 시 조인에 실패한 튜플을 모두 보여주되, 값이 없는 대응 속성은 NULL 값을 채워서 반환.
  13. 디비전
    : 속성 A와 B로 이루어진 릴레이션 R과 속성 B로 이루어진 릴레이션 S의 디비전 연산은, 릴레이션 S의 속성 B값과 서로 동일하게 대응하는 릴레이션 R의 속성 A의 튜플을 반환한다.

 

 

'Oracle(오라클)' 카테고리의 다른 글

데이터 모델링  (0) 2020.07.27
004 - SQL 기초  (0) 2020.07.15
002 - 요구분석과 시스템 설계 그리고 모델링  (0) 2020.07.07
001 - Database란?  (0) 2020.07.07