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 값을 채워서 반환한다.
[디비전] : 다른 연산과 달리 릴레이션의 속성 값의 집합으로 연산을 수행.
#요약
- 릴레이션
: 관계 데이터 모델의 핵심적인 개념으로 행과 열로 구성된 테이블을 말한다. - 릴레이션 스키마
: 관계 데이터베이스의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의한다. - 릴레이션 인스턴스
: 릴레이션 스키마에 실제로 저장되는 데이터의 집합을 말한다. - 관계 데이터베이스 시스템
: 관계 데이터 모델을 컴퓨터 시스템에 구현한 것이다. - 키
- 슈퍼키 : 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
- 후보키 : 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합으로, 속성의 최소 집합이다.
- 기본키 : 여러 후보키 중 하나를 선정하여 대표로 삼는 키를 말한다.
- 대리키 : 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 것을 말한다
- 외래키 : 다른 릴레이션의 기본키를 참조하는 속성을 말한다. - 무결성 제약조건
- 도메인 무결성 제약조건 : 모든 튜플은 릴레이션 스키마에 정의된 각 속성의 도메인에 지정된 값만을 가져야 한다.
- 개체 무결성 제약조건 : 기본키는 NULL 값을 가져서는 안 되며, 릴레이션 내에 오직 하나의 값만 존재해야 한다.
- 참조 무결성 제약조건 : 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 속성의 도메인이 동일해야 하며, 자식 릴레이션의 값 변경 시 부모 릴레이션의 값에 제약을 받는다. - 참조 무결성 제약조건의 옵션
: 참조 무결성 제약조건을 수행하기 위한 네 가지 옵션은 RESTRICTED, CASCADE, DEFAULT, NULL 등이 있다. - 관계대수
: 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어. - 셀렉션
: 릴레이션의 튜플을 추출하기 위한 연산으로 기호는 'σ'를 사용한다. - 프로젝션
: 릴레이션의 속성을 추출하기 위한 연산으로 기호는 'π'를 사용한다. - 집한연산
: 수학의 집합연산과 동일한 연산으로 합집합, 교집합, 차집합, 카디전 프로덕트 등이 있다. - 조인
: 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 튜플을 수평으로 결합하는 연산.
- 세타조인 : 두 릴레이션의 속성 값을 비교해서 조건에 만족하는 튜플을 반환.
- 동등조인 : 세타조인에서 = 연산자를 사용한 조인.
- 자연조인 : 조인에 참여한 속성이 두 번 나오지 않도록 중복된 속성을 제거한 결과를 반환
- 세미조인 : 자연조인을 한 후 두 릴레이션 중 한쪽 릴레이션의 결과만 반환
- 외부조인 : 자연조인 시 조인에 실패한 튜플을 모두 보여주되, 값이 없는 대응 속성은 NULL 값을 채워서 반환. - 디비전
: 속성 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 |