Rad Blog

Archive

데이터베이스 기초 - 관계형 모델

2020-05-16 database xfrnk2

데이터베이스에 대해 공부한 내용을 이해하고 정리한 글입니다. 첫 공부이므로 기초적인 내용을 다루며 추후 자세한 정보로 업데이트를 예정하고 있습니다.


릴레이션

데이터베이스에서는 표를 릴레이션이라 부른다.

릴레이션의 구성
  • 스키마 : 열에 대한 의미를 담고 있는 공간, 표머리
  • 레코드/투플 : 행(값)
  • 컬럼/속성/필드 : 열
  • 컬럼값 : 특정 행과 열에 해당하는 값, 데이터란 값에 메타데이터가 2개 붙어 있는 것이므로, 릴레이션은 DB 데이터를 표현하기에 이상적인 구조
  • 인스턴스 : 특정 시점에서의 레코드가 들어가있는 상태, 모드 레코드들
릴레이션의 특징
  • 레코드의 유일성 : 중복된 레코드의 존재가 불가능
  • 레코드의 무순서성 : 레코드의 순서는 의미가 없음
  • 컬럼의 무순서성 : 컬럼은 순서가 없고, 이름과 값의 쌍
  • 컬럼의 원자성 : 모든 값들은 나눌 수 없는, 단 하나의 의미
키의 종류 및 속성
  • 키의 속성 : 유일성(Uniqueness), 최소성(모든 군더더기를 제거, Irreducibility)
  • 키의 종류
    • 슈퍼키(super key) : 유일성 만족
    • 후보키(candidate key) : 유일성, 최소성 만족
    • 기본키(PK:primary key) : 레코드의 구분을 위해 선택된 후보키
    • 외래키(FK:foreign key) : 참조된 다른 릴레이션의 기본키
관계형 모델의 제약조건
  • 영역 제약조건 : 컬럼에 정의된 영역(domain)에 속한 값으로만 컬럼값이 결정
  • 키 제약조건 : 키는 레코드를 고유하게 구별하는 값으로 구성
  • 개체 무결성 제약조건 : 어떠한 기본 값도 널(null:모른다는 의미)이 될 수 없음
  • 참조 무결성 제약조건 : 반드시 존재하는 레코드의 기본키만 참조 가능

널(NULL)의 개념
모른다, ‘없음’ 또는 0이 아닌 미지의 값에 대한 표현, 입력된 적이 없는 값을 의미

ER다이어그램의 변환
  • 일대일(1:1) 관계에서는 양쪽 모두 외래키로서 참조가 가능. 선택적인 부분이지만, 레코드의 갯수가 적은 쪽으로 가게 하는 것을 권장

  • 약한 개체집합에 대해서는 참조 되는 기본키가 그 테이블의 기본키가 된다.

  • 일대일(1:1)과 일대다(1:N) 및 다대일(N:1)관계에서는 새로운 릴레이션이 만들어지지 않음

  • 다대다(N:N)관계집합에 대해서만 해당 관계 집합을 릴레이션화

  • 다대다 관계에서는 관계 집합이 하나의 릴레이션으로 만들어짐

  • 만들어지는 릴레이션은 각각의 개체 집합으로 만들어지는 양쪽 릴레이션의 기본키가 참조되어서 기본키이자 외래키로 사용됨

  • ‘관계집합의 속성’은 외래키가 위치한 곳을 따라감

관계형 모델로 변환 방법
  1. 개체 집합 : 개체 집합은 릴레이션으로 변환
  2. 약한 개체 집합 : 강한 개체 집합의 키 속성을 약한 개체 집합의 릴레이션에 포함
  3. 일대일 관계 : 두 릴레이션 중에서 한 릴레이션의 기본키를 다른 릴레이션에서 외래키로 참조
  4. 일대다 혹은 다대일 관계 : ‘일’쪽의 기본키를 ‘다’쪽 릴레이 션에서 외래키로 참조
  5. 다대다 관계 : 관계 릴레이션을 생성하고, 두 릴레이션의 기본키를 각각 참조하는 외래키를 복합키 형태의 컬럼으 로 구성
  6. 다중값 속성 : 릴레이션의 기본키를 참조하는 외래키와 다중 값 속성으로 별도의 릴레이션으로 구성
  7. 관계 집합의 속성 : 외래키가 위치한 릴레이션의 컬럼으로 삽입
관계 연산
  • 의미 : 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
  • 관계 대수(relational algebra) : 관계 연산을 정의하는 방법
  • 관계 대수 연산자는 새로운 임시 릴레이션을 생성, 주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자(∪, ∩, -, σ, π, x, ⋈, ÷, 집계함수 등)로 구성

셀렉트 연산

σ 조건(R)

  • 주어진 릴레이션에서 조건을 만족하는 레코드를 갖는 릴레이션을 생성
  • 조건 : aΘb 또는 aΘv
    a, b 속성 이름 v 상수값
    Θ 비교자 {=, ≠, <, >, ≤, ≥} R 릴레이션
  • 조건의 결합: ∧(and), ∨(or)
  • 예시 : σ 소속학과=‘컴퓨터과학과’(교수)

프로젝트 연산

π<컬럼리스트>(R)

  • <컬럼리스트>: A1, A2, …, An와 같이 R에 존재하는 컬럼을 ,(콤마)로 분리하여 기술
  • 예시 : π학생이름,수강과목(학생)

카티시언 프로덕트 연산

R × S

  • 두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 이항 연산자
  • R과 S의 행 a와 b, 열 m과 n일 때, R X S = a x b, m + n 이 됨

조인 연산

R ⋈ AθB S
-> σ AθB(R × S)

  • 두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
  • 예시1 : σ 과목.교수번호=교수.교수번호(과목 × 교수)
  • 예시2 : 과목 ⋈ 과목.교수번호=교수.교수번호 교수

집계 함수 연산

Gx(A)(R)

  • 집계 함수를 값들의 집합 또는 레코드의 집합에 적용 하는 연산
  • x( ) : AVG, SUM, MIN, MAX, COUNT등의 집계 함수
  • A : 집계 연산을 적용할 컬럼
  • 예시 : Gcount(과목명)(과목)
    count(과목명)
    15

B Gx(A)(R)

  • B : 그룹의 기준이 되는 컬럼
  • x( ) : 집계 함수
  • A : 집계 연산을 적용할 컬럼
  • R : 릴레이션
  • 예시 : 소속학과G소속학과,count(*)(교수)
    소속학과 count(*)
    국어국문학과 1
    법학과 2
    생활과학과 1
    유아교육과 2
comments powered by Disqus