학습 개요
- 우리 주변에서 사용되는 상용 DBMS의 대다수가 관계형 모델을 사용할 정도로 관계형 모델은 DBMS를 학습함에 있어 매우 중요한 데이터 모델이라고 할 수 있음
- 관계형 모델은 일련의 정형화된 릴레이션과 수학적 이름에 기초하고 있어 사람에게 가장 직관적이기 때문에 설계 및 사용이 쉽고, 다른 모델에 비해 가장 우수한 성능을 나타냄
- 관계형 모델의 기본적인 특징과 용어 및 그 의미에 대하여 학습함
- 개념적 데이터 모델링의 결과인 ER 다이어그램을 관계형 모델로 변환하는 방법, 릴레이션을 조작하기 위한 다양한 관계 대수 연산자에 대하여 학습함
주요 용어
- 릴레이션
- 관계형 모델에서 데이터를 저장ㆍ관리하는 2차원 형태의 표
- 레코드의 유일성, 무순서성, 컬럼의 무순서성, 컬럼 값의 원자성 특징이 있음
- 키
- 릴레이션에 포함된 레코드를 유일하게 식별할 수 있는 값
- 유일성과 최소성을 만족
- 제약 조건
- 모든 릴레이션 인스턴스가 만족해야 하는 조건으로 영역 제약 조건, 키 제약 조건, 개체 무결성 제약 조건, 참조 무결성 제약 조건
- 관계 대수
- 주어진 릴레이션에서 필요한 릴레이션을 만드는 과정을 연산자 사용한 수식으로 표현하는 방식
강의록
관계형 모델의 개념
데이터베이스 모델링 과정
논리적 데이터 모델링 단계
- DBMS의 구현 모델에 맞춰 데이터의 구조를 표현하는 과정
- 구현 모델
- 데이터의 저장, 인출 방법을 명시
- 구현 모델
- 데이터 정의 언어로 기술된 개념 스키마 생성
- 관계형 모델(relational model)
- 1969년 에드가 F.코드에 의해 제안
- 릴레이션(relation)으로 데이터를 표현하는 모델
- 데이터 표현이 단순하고 직관적 구조화 모델
- 현재 대다수 DBMS의 기초
- 관계형 모델을 사용하는 관계형 DBMS(RDBMS)
- Oracle, DB2, PostgreSQL, MySQL, MSSQL 등
- 데이터를 빨리 찾을 수 있도록 체계화 시킨 큰 틀
개념적 데이터 모델링의 결과
릴레이션의 구성
- 릴레이션
- 방대한 메타 데이터와 값을 집약적으로 표현, 저장할 수 있는 구조
- 모든 형태의 데이터들은 두 개의 메타 데이터에 의해 결정
- 하나의 값이 데이터가 되기 위해서는 두 개 이상의 메타 데이터가 있어야 함(레코드, 컬럼)
- 물리적 데이터 모델링에서는 table이라 부름
- 하나의 컬럼과 레코드가 관계를 형성해 데이터를 결정 지을 수 있는 구조
- 방대한 메타 데이터와 값을 집약적으로 표현, 저장할 수 있는 구조
- 스키마
- 릴레이션을 구성하고 있는 컬럼을 명시하는 전체적인 구조
- 레코드
- 스키마에 맞춰서 하나에 해당하는 데이터의 집합
- 컬럼
- 같은 특성을 가지고 있는 하나의 속성 값들의 집합
릴레이션의 특징
- 레코드의 유일성
- 중복된 레코드의 존재가 불가능
- 레코드의 무순서성
- 레코드의 순서는 의미가 없음
- 컬럼의 무순서성
- 컬럼은 순서가 없고, 이름과 값의 쌍
- 컬럼 값의 원자성
모든 값들은 나눌 수 없는, 단 하나의 의미
키(key)의 개념
릴레이션 레코드를 유일하게 식별하는 값
키의 속성 및 종류
- 키의 속성
- 유일성(Uniqueness)
- 최소성(Irreducibility)
- 최소성
- 여러 개의 컬럼으로 구성된 키(key)가 있을 때, 없어도 되는 컬럼이 있으면 제외해야 함
- 최소성
- 키의 종류
- 수퍼 키(super key)
- 유일성 만족
- 최소성 만족 못 시킴
- 후보 키(candidate key)
- 유일성, 최소성 만족
- 기본 키(PK: primary key)
- 레코드의 구분을 위해 선택된 후보 키
- 관리자가 후보 키 중에서 지정
- 외래 키(FK: foreign key)
- 참조된 한 릴레이션의 기본 키
- 한 릴레이션 레코드와 다른 릴레이션에 관계된 레코드가 무엇인지 파악 가능
- 수퍼 키(super key)
관계형 모델의 예
- 수퍼 키
- 학과 이름, {학과 이름, 단과 대학}, 주소, 전화번호, {전화 번호, 졸업 학점} 등
- 후보 키
- 학과 이름, 주소, 전화 번호
- 기본 키
- 학과 이름
- 키가 될 수 있는 것들
- 단과 대학 + 졸업 학점, 학과 이름, 전화 번호
키의 참조
- 두 릴레이션에 포함된 레코드 간 연관성을 표현
- 하나의 릴레이션에 포함된 레코드가 다른 릴레이션과 연관되어 있다는 것을 표현하기 위한 방법
- 외래 키(FK)를 통해 다른 릴레이션의 레코드 식별 가능
- 값이 중복될 수 있음
관계형 모델의 제약 조건
- 영역 제약 조건
- 컬럼에 정의된 영역(domain)에 속한 값으로만 컬럼 값이 결정
- 키 제약 조건
- 키는 레코드를 고유하게 구별하는 값으로 구성
- 개체 무결성 제약 조건
- 어떠한 기본 키 값도 null이 될 수 없음
- 기본 키에는 반드시 무언가가 입력되어야 함
- null
- 한번도 입력되지 않은 상태
- 참조 무결성 제약 조건
- 반드시 존재하는 레코드의 기본 키만 참조 가능
널(NULL)의 개념
- 없음 또는 0이 아닌 미지의 값에 대한 표현
- 입력된 적이 없는 값
- 적용 불가능한 값
논리적 데이터 모델링의 수행
논리적 데이터 모델링의 개념
- DBMS의 구현 모델에 맞춰 데이터를 표현하는 과정
- 데이터 정의 언어로 기술된 개념 스키마 생성
논리적 데이터 모델링의 역할
- 관계형 DBMS(RDBMS)의 구현 모델이 맞춰 데이터의 구조와 관계를 표현
- 도출된 ERD를 RDBMS가 수용 가능한 구조로 변환
관계형 모델로 변환 방법
- 개체 집합
- 개체 집합은 릴레이션으로 변환
- 약한 개체 집합
- 강한 개체 집합의 키 속성을 약한 개체 집합의 릴레이션에 포함
- 일대일 관계
- 두 릴레이션 중에서 한 릴레이션의 기본 키를 다른 릴레이션에서 외래 키로 참조
- 일대다 혹은 다대일 관계
- 일 쪽의 기본키를 다 쪽 릴레이션에서 외래 키로 참조
- 다대다 관계
- 관계 릴레이션을 생성하고, 두 릴레이션의 기본 키를 각각 참조하는 외래 키를 복합 키 형태의 컬럼으로 구성
- 다중 값 속성
- 릴레이션의 기본 키를 참조하는 외래 키와 다중 값 속성으로 별도의 릴레이션으로 구성
- 관계 집합의 속성
- 외래 키가 위치한 릴레이션의 컬럼으로 삽입
ER 다이어그램의 변환
- 과목 코드를 교수 릴레이션의 외래 키로 넣으면 컬럼 값의 원자성에 위배됨
- 일대다의 관계에서는 다쪽의 개체 집합에 의해 만들어진 릴레이션에 외래키 위치 시킴
- 다대다의 관계에서는 관계 자체가 릴레이션으로 만들어짐
- 제약 조건을 표현하기 위해서 학생 번호도 PK로 지정
- 학생이 없어지면 계좌도 없어져야 함
관계형 데이터 연산
관계 연산의 개념
- 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 연산자
- 사용자의 관점에서 필요한 데이터를 다수의 릴레이션에서 추출하는 방법이 필요
- 관계 대수(relational algebra)
- 관계 연산을 정의하는 방법
- 주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자(⋃, ⋂, -, σ, π, X, ⋈, ÷, 집계 연산 등)로 구성
- 관계 대수 연산자는 새로운 임시 릴레이션을 생성
- 연산자를 중첩하여 연산 처리 절차를 표현
셀렉트 연산
- 주어진 릴레이션에서 조건을 만족하는 레코드를 갖는 릴레이션을 생성
1
σ조건(R)
- 조건
- a⊝b 또는 a⊝v a, b | 속성 이름 | V | 상수 값 — | — | — | — Θ | 비교자 {=, ≠, <, >, ≤, ≥} | R | 릴레이션
- 조건의 결합
- ∧ and
- ∨ or
셀렉트 연산의 예
교수번호 | 교수이름 | 직위 | 소속학과 | 연봉 |
---|---|---|---|---|
186432-760829 | 최우성 | 조교수 | 생활과학과 | 52000000 |
189414-790829 | 한용운 | 조교수 | 법학과 | 45000000 |
191924-730620 | 이동휘 | 부교수 | 행정학과 | 51000000 |
194634-810228 | 김규식 | 정교수 | 컴퓨터과학과 | 70000000 |
194834-760517 | 정재화 | 부교수 | 컴퓨터과학과 | 53000000 |
201216-158465 | 정용제 | 조교수 | 국어국문학과 | 55000000 |
- 조건
1
σ 소속학과='컴퓨터과학과'(교수)
결과
교수번호 교수이름 직위 소속학과 연봉 194634-810228 김규식 정교수 컴퓨터과학과 70000000 194834-760517 정재화 부교수 컴퓨터과학과 53000000
교수번호 | 교수이름 | 직위 | 소속학과 | 연봉 |
---|---|---|---|---|
186432-760829 | 최우성 | 조교수 | 생활과학과 | 52000000 |
189414-790829 | 한용운 | 조교수 | 법학과 | 45000000 |
191924-730620 | 이동휘 | 부교수 | 행정학과 | 51000000 |
194634-810228 | 김규식 | 정교수 | 컴퓨터과학과 | 70000000 |
194834-760517 | 정재화 | 부교수 | 컴퓨터과학과 | 53000000 |
201216-158465 | 정용제 | 조교수 | 국어국문학과 | 55000000 |
- 조건
1
σ소속학과 = '컴퓨터과학과' ^ 연봉 ≥ 60000000(교수)
결과
교수번호 교수이름 직위 소속학과 연봉 194634-810228 김규식 정교수 컴퓨터과학과 70000000
프로젝트 연산
- 기술된 컬럼만 갖는 릴레이션으로 재구성
1
Π<컬럼리스트>(R)
- <컬럼리스트> 컬럼리스트>
- A^1, A^2, … A^n와 같이 R에 존재하는 컬럼을 ,(콤마)로 분리하여 기술
- 컬럼의 순서를 다르게 표현하고자 할 때에는 프로젝트 연산자에서 컬럼의 순서를 다르게 표기하면 됨
프로젝트 연산의 예
교수번호 | 교수이름 | 직위 | 소속학과 | 연봉 |
---|---|---|---|---|
186432-760829 | 최우성 | 조교수 | 생활과학과 | 52000000 |
189414-790829 | 한용운 | 조교수 | 법학과 | 45000000 |
191924-730620 | 이동휘 | 부교수 | 행정학과 | 51000000 |
194634-810228 | 김규식 | 정교수 | 컴퓨터과학과 | 70000000 |
194834-760517 | 정재화 | 부교수 | 컴퓨터과학과 | 53000000 |
- 연산식
1
Π교수이름, 소속학과(교수)
결과
교수이름 소속학과 최우성 생활과학과 한용운 법학과 이동휘 행정학과 김규식 컴퓨터과학과 정재화 컴퓨터과학과
관계 대수 연산식의 활용
Q. 직위가 부교수인 교수의 교수 이름을 출력하라
| 교수번호 | 교수이름 | 직위 | 소속학과 | 연봉 | |—|—|—|—|—| | 186432-760829 | 최우성 | 조교수 | 생활과학과 | 52000000 | | 189414-790829 | 한용운 | 조교수 | 법학과 | 45000000 | | 191924-730620 | 이동휘 | 부교수 | 행정학과 | 51000000 | | 194634-810228 | 김규식 | 정교수 | 컴퓨터과학과 | 70000000 | | 194834-760517 | 정재화 | 부교수 | 컴퓨터과학과 | 53000000 | | 201216-158465 | 정용제 | 조교수 | 국어국문학과 | 55000000 | | 201547-634895 | 현경석 | 정교수 | 생활과학과 | 66000000 | | 210315-549413 | 황지수 | 부교수 | 유아교육과 | 52000000 |
- 연산식
1
σ직위 = '부교수'(교수)
- 결과 | 교수번호 | 교수이름 | 직위 | 소속학과 | 연봉 | | :— | :— | :— | :— | :— | | 191924-730620 | 이동휘 | 부교수 | 행정학과 | 51000000 | | 194834-760517 | 정재화 | 부교수 | 컴퓨터과학과 | 53000000 | | 210315-549413 | 황지수 | 부교수 | 유아교육과 | 52000000 |
- 연산식
1
Π교수이름(σ직위 = '부교수'(교수))
- 결과 | 교수이름 | | :— | | 이동휘 | | 정재화 | | 황지수 |
- 연산식
집합 연산자
- 릴레이션은 집합, 레코드는 집합에 포함된 원소
- 집합 이론에서의 이진 연산
- 합집합 : R ⋃ S
- 교집합 : R ⋂ S
- 차집합 : R - S
- 집합 연산자 사용 조건
- 릴레이션 R과 S의 차수가 동일
- 모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼의 도메인이 반드시 동일
카티시언 프로덕트 연산
1
R X S
두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 이항 연산자
카티시언 프로덕트 연산의 예
- 교수 X 학과
교수 릴레이션
교수번호 교수이름 소속 소속학과 186432-760829 최우성 … 생활과학과 189414-790829 한용운 … 법학과 191924-730620 이동휘 … 행정학과 194634-810228 김규식 … 컴퓨터과학과 194834-760517 정재화 … 컴퓨터과학과 201216-158465 정용제 … 국어국문학과 201547-634895 현경석 … 생활과학과 210315-549413 황지수 … 유아교육과 학과 릴레이션
학과이름 단과대학 주소 전화번호 졸업학점 국어국문학과 인문과학대학 … … 120 법학과 사회과학대학 … … 130 생활과학과 자연과학대학 … … 125 유아교육과 교육과학대학 … … 125 컴퓨터과학과 자연과학대학 … … 130 행정학과 사회과학대학 … … 120 교수 X 학과
교수번호 교수이름 소속 소속학과 학과이름 단과대학 주소 전화번호 졸업학점 186432-760829 최우성 … 생활과학과 국어국문학과 인문과학대학 … … 120 186432-760829 최우성 … 생활과학과 법학과 사회과학대학 … … 130 186432-760829 최우성 … 생활과학과 생활과학과 자연과학대학 … … 125 186432-760829 최우성 … 생활과학과 유아교육과 교육과학대학 … … 125 186432-760829 최우성 … 생활과학과 컴퓨터과학과 자연과학대학 … … 130 186432-760829 최우성 … 생활과학과 행정학과 사회과학대학 … … 120
조인 연산
두 릴레이션에서 조건을 만족하는 레코드만 결합한 레코드로 구성된 릴레이션을 생성
Q. 컴퓨터 과학과 소속의 교수가 강의하는 과목의 과목명과 과목 코드는?
과목코드 과목명 학점 선수과목 이수구분 교수번호 COM11 컴퓨터의이해 3 교양 194634-810228 COM12 파이썬프로그래밍기초 3 교양 194834-760517 COM24 자료구조 3 COM12 전공필수 194634-810228 COM31 데이터베이스시스템 3 COM24 전공필수 194834-760517 COM34 알고리즘 3 COM24 일반선택 194634-810228 COM44 클라우드컴퓨팅 3 전공필수 194834-760517 ECE24 놀이지도 3 전공필수 210315-549413 … … … … … … 과목 X 교수
과목코드 과목명 … 교수번호 교수번호 교수이름 직위 … COM11 컴퓨터의이해 … 194634-810228 186432-760829 최우성 조교수 … COM11 컴퓨터의이해 … 194634-810228 189414-790829 한용운 조교수 … COM11 컴퓨터의이해 … 194634-810228 191924-730620 이동휘 부교수 … COM11 컴퓨터의이해 … 194634-810228 194634-810228 김규식 정교수 … COM11 컴퓨터의이해 … 194634-810228 194834-760517 정재화 부교수 … COM11 컴퓨터의이해 … 194634-810228 201216-158465 정용제 조교수 … COM11 컴퓨터의이해 … 194634-810228 201547-634895 현경석 정교수 … COM11 컴퓨터의이해 … 194634-810228 210315-549413 황지수 부교수 … … … … … … … … … LAW12 헌법의기초 … 189414-790829 201547-634895 현경석 정교수 … LAW21 세법개론 … 189414-790829 210315-549413 황지수 부교수 … PA05 행정학개론 … 191924-730620 186432-760829 최우성 조교수 … σ과목.교수번호=교수.교수번호(과목X교수)
집계 함수 연산
집계 함수를 값들의 집합 또는 레코드의 집합에 적용하는 연산
- A
- 집계 연산을 적용할 컬럼
- x( )
- AVG, SUM, MIN, MAX, COUNT 등의 집계 함수
- A
집계 함수의 예
그룹화를 이용한 집계 함수 연산
레코드 그룹화를 위해 집계 함수 연산자 앞에 그룹화 속성을 기술
- B
- 그룹의 기준이 되는 컬럼
- x()
- 집계 함수
- A
- 집계 연산을 적용할 컬럼
- R
- 릴레이션
- B
그룹화 속성이 없는 경우, 전체 릴레이션을 한 개의 그룹으로 가정
그룹화를 이용한 집계 함수의 사용 예
연습 문제
관계형 모델에서 표와 유사하게 2차원 구조로 데이터를 표현하는 저장하는 것은?
a. 릴레이션
- 관계형 모델은 2차원 구조 표와 유사하게 컬럼과 레코드로 데이터를 표현하는 릴레이션에 데이터를 저장함
다음은 무엇에 대한 설명인가?
1
두 개의 릴레이션 사이에 명시되는 제약 조건으로, 한 릴레이션에 있는 레코드가 다른 릴레이션에 있는 레코드를 참조하려면 반드시 존재하는 릴레이션만 참조해야 한다는 제약 조건을 명시한다.
a. 참조 무결성 제약 조건
- 영역, 키, 개체 무결성 제약 조건을 한 릴레이션에 대한 제약 조건인 반면, 참조 무결성 제약 조건은 두 릴레이션 사이에서 명시되는 조건
- 반드시 존재하는 값만을 참조할 수 있다는 조건
- 데이터 간 관계를 대표 되는 값을 참조하는 형태로 표현하는 관계형 모델에서 관계에 대한 일관성을 유지하는데 사용
다음의 ER 다이어그램을 관계형 모델로 올바르게 변환한 것은?
a.
- 두 개체 집합에 대응하는 릴레이션이 생성되므로 고객 릴레이션과 계좌 릴레이션이 생성되며 각각의 속성을 릴레이션의 컬럼에 대응됨
- 그리고 키 속성을 기본 키로 변환되어 고객 릴레이션에는 고객 번호가, 계좌 릴레이션에는 계좌 번호가 기본 키가 됨
- 개설 관계 집합에 연관 된 두 개체 집합에서 고객 개체 집합만 화살 선으로 연결되어 있으므로 1:N 관계 집합임
- 외래 키는 N쪽인 계좌 집합 쪽에 위치함
정리 하기
- 관계형 모델은 표와 매우 유사한 구조인 릴레이션에 기초함
- 레코드는 릴레이션의 각 행을 의미하며, 컬럼은 각 열을 의미
- 릴레이션 스키마란 어떠한 테이블에서 사용되는 컬럼과, 컬럼이 지니는 데이터 타입을 정의한 것을 의미
- 릴레이션은 일반 표와는 달리, 레코드의 유일성, 레코드의 무순서성, 컬럼의 무순서성, 컬럼 값의 유일성이라는 특징을 갖음
- 기본 키는 한 데이터베이스 내에서 레코드를 유일하게 판별할 수 있는 컬럼을 말하며, 카디널리티는 레코드의 개수를 의미
- 키의 종류로는 기본 키, 후보 키, 수퍼 키 등이 있음
- 관계형 모델은 영역 제약 조건, 키 제약 조건, 개체 무결성 제약 조건, 참조 무결성 제약 조건이 항상 만족 되도록 모든 데이터의 삽입, 수정, 삭제 시 데이터를 검증하며, 이를 통해 데이터의 무결성과 일관성을 유지 시킴
- ER 모델링의 결과를 토대로 실제 상용 DBMS상의 데이터베이스를 만들기 위해서는 각 DBMS에 맞는 구현 데이터 모델로의 변환이 필요함
- 이러한 변환 과정을 논리적 데이터 모델링이라고 함
- ER 모델에서 관계 데이터 모델로의 변환 시 보통 개체는 릴레이션으로, 약한 개체 집합의 경우 강한 개체의 키를 약한 개체의 부분 키와 합쳐서 기본 키로 갖는 릴레이션으로 변환 가능
- ER 모델에서 관계 데이터 모델로의 변환 시 사상수에 따라 테이블 간 레코드의 연관성을 외래 키와 기본 키의 참조 관계로 표현
- 관계 데이터베이스에서는 관계 대수라는 절차적 질의 언어를 사용할 수 있음
- 관계 대수 연산에서 릴레이션에 대한 집합 연산으로는 셀렉트, 프로젝트, 합집합, 교집합, 차집합, 카티션 프로덕트 연산 등이 있음
- 관계 대수의 또 다른 연산은 자연 조인, 할당 연산자 및 프로젝트 연산과
SUM
,AVG
,MAX
,MIN
,COUNT
와 같은 집계 함수가 있음
체크 포인트
데이터 베이스에서 릴레이션에 대한 설명으로 틀린 것은?
a. 모든 필드는 서로 다른 값을 가지고 있다.
- 릴레이션에 대한 설명으로 옳은 것
- 모든 속성 값은 원자 값(atomic value)을 가짐
- 각 속성은 릴레이션 내에서 유일한 이름을 가짐
- 하나의 릴레이션에서 투플은 특정한 순서를 가지지 않음
- 릴레이션에 대한 설명으로 옳은 것
릴레이션에서 기본 키를 구성하는 속성은 널(null) 값이나 중복 값을 가질 수 없다는 것을 의미하는 제약 조건은?
a. 개체 무결성