Search

[데이터베이스 시스템] 관계형 모델

제목
Tag
작성일

논리적 데이터 모델링 단계

DBMS의 구현 모델에 맞춰 데이터의 구조를 표현하는 과정
데이터 정의 언어(DDL)로 기술된 개념 스키마 생성

관계형 모델(relational model)

관계(relation)로 데이터를 표현하는 모델
관계형 모델을 사용하는 DBMS를 RDBMS 라고 부름

릴레이션의 구성

구성
요소
설명
릴레이션 스키마
테이블의 구조(이름, 속성)
학생(학번, 이름, 학과, 전화번호)
릴레이션 인스턴스
실제 저장된 데이터
(1001, 홍길동, 컴퓨터공학, 010-1234-5678)
속성(Attribute)
테이블의 열(컬럼)
학번, 이름, 학과
튜플(Tuple)
테이블의 행(레코드)
1001, 홍길동, 컴퓨터공학
도메인(Domain)
속성 값의 허용 범위
전화번호: 010-xxxx-xxxx
키(Key)
유일한 데이터 식별
학번(PK), 교수ID(FK)

릴레이션의 특징

레코드 유일성: 레코드의 중복 존재 불가
레코드 무순서성: 레코드의 순서는 의미가 없음
컬럼의 무순서성: 컬럼은 순서가 없음
컬럼값의 원자성: 모든 값을 나눌 수 없는 단 하나의 의미로 이루어 져야함

키(key)

릴레이션의 레코드를 유일하게 식별하는 값
유일성: 키로 지정된 속성 조합이 각 튜플을 유일하게 식별할 수 있어야 함
최소성: 꼭 필요한 속성만 포함해야 하며, 불필요한 속성이 포함되면 안 됨
키의 종류
수퍼키 super key : 유일성 만족
후보기 candidate key: 유일성 & 최소성 만족
기본키 PK : 레코드의 구분을 위해 선택된 후보키
외래기 FK : 참조된 한 릴레이션의 기본키

관계형 모델의 제약조건

영역 제약 조건: 컬럼에 정의된 영역에 속한 값으로만 컬럼 값 결정
키 제약 조건: 키는 레코드를 고유하게 구별하는 값으로 구성
개체 무결성 제약조건: 어떤 기본키도 null 값 될수 없은
참조 무결성 제약조건: 반드시 존재하는 레코드의 기본키만 참조가능
널 Null 개념
없음 또는 0 이아닌 미지의 값에 대한 표현
입력된적 없거나 적용 불가능한 값

논리적 데이터 모델링의 수행

논리적 데이터 모델링 개념

DBMS의 구현 모델에 맞춰 데이터를 표현하는 과정
데이터 정의 언어로 기술된 개념 스키마 생성
논리적 데이터 모델링의 역할

관계형 모델 변환 규칙

관계 유형
변환 방법
개체집합
테이블로 변환, 기본 키 설정
약한 개체집합
강한 개체의 PK + 부분 키로 복합 키 생성
일대일(1:1) 관계
한 개체에 FK 추가 또는 별도 테이블 생성
일대다(1:N) 관계
"다"쪽 테이블이 "일"쪽의 PK를 FK로 포함
다대다(N:M) 관계
별도 연결 테이블 생성 후 두 개체의 PK를 복합 키로 설정

관계형 데이터 연산

관계형 모델을 기반으로 구성된 릴레이션을 사용해 새로운 릴레이션을 생성하는 연산자
사용자 관점에서 필요한 데이터를 다수의 릴레이션에서 추출하는 방법이 필요

관계대수

관계형 데이터베이스에서 원하는 데이터를 검색하기 위한 연산자들의 집합
SQL의 기초가 되는 개념이며, 질의(Query)를 수학적으로 표현할 수 있음
기본 연산과 집합 연산으로 나뉨

기본 연산

1.
선택(σ, Selection)
조건을 만족하는 튜플(행)만 선택
예시: σ학과='컴퓨터공학'(학생) → 컴퓨터공학과 학생만 출력
2.
투영(π, Projection)
특정 속성(열)만 추출
예시: π이름, 학과(학생) → 학생의 이름과 학과만 출력
3.
교차곱(×, Cartesian Product)
두 릴레이션의 모든 조합을 생성 (연산량이 큼)
예시: 학생 × 강의 → 모든 학생과 모든 강의의 조합 생성
4.
조인(⨝, Join)
두 릴레이션을 특정 조건으로 결합
예시: 학생 ⨝ 학번=학번 수강 → 학생과 수강 정보를 학번 기준으로 연결
5.
디비전(÷, Division)
A 릴레이션에서 B 릴레이션의 모든 값을 포함하는 튜플만 추출
예시: 수강(학번, 강의ID) ÷ 강의(강의ID) → 모든 강의를 수강한 학생 찾기

집합 연산

릴레이션 R과 S의 차수가 동일해야 사용가능
모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼 도메인이 반드시 동일해야함
1.
합집합(∪, Union) : 두 릴레이션의 모든 튜플을 합침(중복 제거)
2.
교집합(∩, Intersection) : 두 릴레이션에서 공통된 튜플만 출력
3.
차집합(-, Difference) : 첫 번째 릴레이션에서 두 번째 릴레이션의 튜플을 제거
4.
카타시안 프로덕트(×, Cartesian Product) : 모든 튜플의 조합을 생성