관계형 모델의 개념
릴레이션의 특성
데이터베이스 모델링 과정
개념적 데이터 모델링의 결과
논리적 데이터 모델링 단계
- DBMS에서 사용하는 데이터 모델에 맞추어 데이터를 표현하는 과정
- 데이터 정의 언어로 기술된 개념 스키마 생성
- 관계형 모델(relational model)
1969년 에드가 F. 코드에 의해 제안
릴레이션(relation)으로 데이터를 표현하는 모델
데이터 표현이 단순하고 직관적 구조화 모델
현재 대다수 DBMS의 기초 -> 관계형 모델을 사용하는 관계형 DBMS(RDBMS) ex) Oracle, DB2, PostgreSQL, MySQL, MSSQL 등
릴레이션의 구성
칼럼 값은 두 개의 메타 데이터(컴퓨터 과학과 + 전화번호)가 적용된 값
릴레이션의 특징
- 레코드의 유일성: 중복된 레코드의 존재가 불가능
- 레코드의 무순서성: 레코드의 순서는 의미가 없음
- 칼럼의 무순서성: 칼럼은 순서가 없고, 이름과 값의 쌍
- 칼럼값의 원자성: 모든 값들은 나눌 수 없는, 단 하나의 의미
키의 역할
릴레이션의 레코드를 유일하게 식별하는 값
키의 속성
키의 종류
- 슈퍼키(super key): 유일성 만족
- 후보키(candidate key): 유일성, 최소성 만족
- 기본키(PK: primary key): 레코드의 구분을 위해 선택된 후보키
- 외래키(FK:foreign key): 참조된 다른 릴레이션의 기본키
관계형 모델의 예
슈퍼키: 학과이름, {학과이름, 단과대학}, 주소, 전 화번호, {전화번호, 졸업학점} 등
후보키: 학과이름, 주소, 전화번호
기본키:학과이름
키의 참조
두 릴레이션에 포함된 레코드 간 연관성을 표현
관계형 모델의 제약조건
- 영역제약 조건: 칼럼에 정의된 영역(domain)에 속한 값으로만 칼럼값이 결정
영역: 실제 값이 가질 수 있는 범위를 한정시켜 놓은 것
ex) 전화번호는 숫자만, 이름은 문자만, 학점은 150 이하 - 키 제약조건: 키는 레코드를 고유하게 구별하는 값으로 구성
- 개체무결성 제약조건: 어떠한 기본키 값도 널(null)이 될 수 없음
- 참조무결성 제약조건: 반드시 존재하는 레코드의 기본키만 참조 가능
널(NULL)의 개념
‘없음’ 또는 ‘0’이 아닌 미지의 값에 대한 표현
- 입력된 적이 없는 값
- 적용 불가능한 값 ex) 연봉 칼럼에서 원화가 기준인데 달러로 써야 하는 경우 null
ERD의 변환
논리적 데이터 모델링
- DBMS의 구현 모델에 맞춰 데이터를 표현하는 과정
- 데이터 정의 언어로 기술된 개념 스키마 생성
- 논리적 데이터 모델링의 필요
관계형 DBMS(RDBMS)의 구현 모델에 맞춰 데이터의 구조와 관계를 표현
작성된 ERD를 RDBMS가 수용 가능하는 구조로 변환
관계형 모델로 변환 방법
단계 1. 개체 집합: 개체 집합은 릴레이션으로 변환
단계 2. 약한 개체 집합: 강한 개체 집합의 키 속성을 약한 개체 집합의 릴레이션에 포함
단계 3. 일대일 관계: 두 릴레이션 중에서 한 릴레이션의 기본키를 다른 릴레이션에서 외래키로 참조
단계 4. 일대다 혹은 다대일 관계: ‘일’ 쪽의 기본키를 ‘다’ 쪽 릴레이 션에서 외래키로 참조
단계 5. 다대다 관계: 관계 릴레이션을 생성하고, 두 릴레이션의 기본키를 각각 참조하는 외래키를 복합키 형태의 칼럼은 로 구성
단계 6. 다중값 속성: 릴레이션의 기본키를 참조하는 외래키와 다중 값 속성으로 별도의 릴레이션으로 구성 단계 7. 관계 집합의 속성: 외래키가 위치한 릴레이션의 칼럼으로 삽입
ER 다이어그램의 변환
다대다: 관계 집합이 하나의 릴레이션으로 만들어짐
일대일: 레코드의 개수가 적은 쪽으로 FK가 가는 것이 나음
약한 개체 집합: 참조되는 외래키가 그 테이블의 기본키가 됨 -> 강한 개체가 사라졌을 때 무결성 조건에 의해 함께 삭제되도록
데이터연산
관계연산의 개념
- 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
- 사용자의 관점에서 필요한 데이터를 릴레이션에서 추출하는 방법을 제공하는 도구
- 관계 대수(relational algebra)
관계 연산을 정의하는 방법
주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자(∪, ∩, -, σ, π, x, ⋈, ÷ , 집계함수 등)로 구성
관계 대수 연산자는 새로운 임시 릴레이션을 생성
연산자를 중첩하여 연산 처리 절차를 표현
관계대수연산자
셀렉트 연산 (시그마)
- 주어진 릴레이션에서 조건을 만족하는 레코드를 갖는 릴레이션을 생성
- 조건: aΘb 또는 aΘv
- 조건의 결합: ∧(and), ∨(or)
셀렉트 연산의 예
프로젝트 연산
기술된 칼럼만 갖는 릴레이션으로 재구성
<컬럼리스트>: A1 , A2 , …, An와 같이 R에 존재하는 칼럼을 , (콤마)로 분리하여 기술
프로젝션 연산의 예
직위가 ‘부교수’인 교수의 교수이름을 출력
집합 연산자
- 수학적 집합 이론에서의 이진 연산
합집합: R ∪ S
교집합: R ∩ S
차집합: R – S - 릴레이션은 집합, 레코드는 집합에 포함된 원소
- 집합 연산자 사용 조건
릴레이션 R과 S의 차수가 동일
차수: 한 릴레이션에 포함된 칼럼의 갯수
-> 다르면 합집합이나 교집합 처리를 한 이후에 하나의 릴레이션으로 구성할 수 없음
모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼의 도메인이 반드시 동일
-> 칼럼 1이 숫자이고 칼럼 2가 문자인데 이런 형식이 다를 경우 값 표현이 애매해짐
카티시언 프로덕트 연산
두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 이항 연산자
조인 연산
두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
카티시언 프로덕트와 셀렉트 연산의 결합으로 처리
집계 함수 연산 (캘리그래프 g)
집계 함수를 값들의 집합 또는 레코드의 집합에 적용하는 연산
- x( ): AVG, SUM, MIN, MAX, COUNT 등의 집계 함수
- A: 집계 연산을 적용할 칼럼
집계 함수의 예
과목이 몇 개인지 count 연산
그룹 집계 함수
레코드 그룹화를 위해 집계 함수 연산자 앞에 그룹화 속성을 기술
- B: 그룹의 기준이 되는 칼럼
- x( ): 집계 함수
- A: 집계 연산을 적용할 칼럼
- R: 릴레이션
그룹 집계 함수 사용 예
학과 별로 교수가 몇 명인지
'공부 > 데이터 베이스 시스템' 카테고리의 다른 글
5. SQL (2) (0) | 2024.02.27 |
---|---|
4. SQL (1) (0) | 2024.02.27 |
2. 데이터베이스 모델링 (0) | 2024.02.21 |
1. 데이터 베이스의 이해 (0) | 2024.02.21 |