관계형 데이터베이스(RDB)

관계형 데이터 모델

데이터베이스 이용의 필요성

통계학

  • 데이터를 다루는 학문
  • 사회의 발전에 따라 데이터의 양 증가

데이터베이스 이용의 목적

  • 대용량 데이터의 효율적인 관리
  • 데이터의 효과적 활용
  • 데이터베이스의 이론적 측면보다는 활용적 측면에 주안

데이터의 표현

숫자나 문자 등과 같이 간단한 형태로 표현할 수 없는 현실 세계의 다양한 개체를 컴퓨터에서는 어떻게 표현하여 저장할 수 있을까?

  • 예 : 학생, 교수, …

컴퓨터에서의 저장 방법 : 개체가 가지고 있는 속성(특성)을 이용

  • 학생 : 이름, 학번, 학과, 학년, 주소, 주민등록번호, 부모 성명, 좋아하는 색, 좋아하는 가수, …
  • 교수 : 이름, 학과, 주소, 주민등록번호, 연구실 번호, 출신학교, 결혼여부, 자녀의 수, …

관심 있는 속성만을 이용하여 데이터 표현, 저장

데이터 모델(data model)

현실 세계의 데이터, 데이터들 사이의 관계, 데이터가 가지고 있는 의미, 데이터의 제약 조건 등을 기술하기 위한 단순화하고 추상화된 형태로 표현하는 모형

개념적 데이터 모형과 논리적 데이터 모형으로 구분

개념적 데이터 모델

학생, 교수 개체 : 매우 많은 속성을 가짐

관심을 갖는 속성은 이용주체에 따라 다름. 즉, 대학, 학원, 회사 등 이용주체에 따라 다름. 예를 들어, 대학에서 관심을 갖는 속성은

  • 학생 : 이름, 학번, 학과, 학년, 주소, …
  • 교수 : 이름, 학과, 주소, 주민등록번호, …

개념적 데이터 모형 : 개체를 관심 있는 속성들로 표현하는 것

현실 세계 개념적 데이터 모델
학생 이름, 학년, 주소, 학번 …
교수 교수번호, 이름, 학과 …

논리적 데이터 모델

개념적인 데이터 모델을 실제로 데이터베이스에 저장하기 위해서는 DBMS가 지원하는 논리적인 구조로 변환하여야 함

논리적 데이터 모델 : 데이터 속성들을 이용하고자 하는 DBMS에 적합한 구조로 생각하는 것

개념적 데이터 모델 논리적 데이터 모델
이름, 학년, 주소, 학번 … DBMS가 지원하는 논리적인 구조로 변환
교수번호, 이름, 학과 … DBMS가 지원하는 논리적인 구조로 변환

일반적으로 데이터 모델이라 하면 데이터의 논리적 구조를 뜻하는 것이 보통

대표적인 모델 : 관계형, 계층형, 네트워크, 객체지향 데이터 모델

관계형 데이터 모델

  • 1970년 Codd 박사 제안, 가장 일반적인 데이터 모델, 데이터와 데이터의 관계를 2차원 테이블로 표현

학생테이블

학번 학과명 성명 학년 지도교수
20170001 정보통계학과 뽀로로 3 1001
20170002 컴퓨터공학과 피카츄 3 2001
20170003 국문학과 에반 2 3001

교수테이블

교수번호 이름 소속학과
1001 피타고라스 정보통계학과
2001 빌게이츠 컴퓨터공학과
3001 세종대왕 국문학과

데이터의 구성 및 표현

데이터가 데이터베이스에 어떻게 저장되고 이용되는가를 알기 위해서는

  • 데이터가 어떤 구성요소들을 가지고 있으며,
  • 이들 데이터가 어떻게 연결되어 이용될 수 있는지를 살펴보아야 됨

개체(entity)

데이터베이스에 표현하려고 하는 유형 또는 무형적인 정보의 대상

개체는 독립적으로 존재하는 대상

  • 학생, 교수 등과 같이 물리적으로 존재
  • 성적, 학과 등과 같이 개념적으로 존재

개체는 하나 이상의 특성을 가짐 -> 개체의 속성(attribute)

  • 학생 개체의 속성 -> 학번, 이름, 학과, 학년 …
  • 성적 개체의 속성 -> 학번, 과목, 학기, 학수구분, 점수, …

개체의 속성이 갖는 값이 데이터베이스에 저장되는 중요한 부분

개체와 관련된 용어

  • 도메인(domain) : 한 속성이 취할 수 있는 모든 값
  • 개체 인스턴스(instance) : 실제 개체 값
  • 개체 집합(entity set) : 개체 인스턴스의 집합
  • 개체 타입(entity type) : 속성의 이름들로만 기술된 개체의 정의
개체 속성
학생 학번, 이름, 학과, 학년 <- 개체 타입
개체 인스턴스
101 정보통계학개론 피타고라스 학점
개체 집합
101 정보통계학개론 피타고라스 학점
201 컴퓨터공학개론 빌게이츠 학점
301 국문학개론 세종대왕 학점

관계(relationship)

Relationship은 어떤 개체나 속성들의 관련성, 즉 관계를 나타냄

관계의 종류

속성 관계
  • 학생 개체를 표현하는 학번, 이름, 학과, 학년들 사이에는 ‘속성 관계’
개체 관계
  • ‘학생’ 개체와 ‘교수’ 개체는 ‘지도’라는 ‘개체 관계’

관계(relationship) : 속성 관계 또는 개체 관계는 정보를 추출해 내는데 아주 중요한 역할을 수행

  • “학번이 200020182인 학생의 지도교수는 누구인가?”

  • 이 질의는 학생과 교수 개체 사이에 존재하는 ‘지도’라는 개체관계를 이용해서만 정보 추출이 가능

관계형 데이터베이스 구조

데이터 구조

모든 데이터를 2차원 테이블로 표현

테이블은 유일한 이름을 가짐

테이블에서

  • 각각의 열은 필드(field) 또는 아이템(item) (cf. 컬럼(column))

  • 각각의 행은 레코드(record) 또는 튜플(tuple) (cf. 로우(row))

테이블명 : Student
학번 학과명 성명 학년 지도교수
ID Dept Name Grade PID
20170001 정보통계학과 뽀로로 3 1001
20170002 컴퓨터공학과 피카츄 3 2001
20170003 국문학과 에반 2 3001

속성과 도메인

관계형 데이터 모델에서 데이터의 가장 작은 논리적 단위는 학번(ID) ‘20170001’나 이름(Name) ‘뽀로로’과 같은 개개 속성 값(attribute value)

한 속성이 취할 수 있는 모든 값을 총칭해서 도메인(domain)

  • 학년 속성은 정수 값으로 충분히 표현할 수 있으므로 학년 속성의 도메인은 정수로 설정할 수 있음

이러한 개념은 같은 도메인의 값들끼리 비교를 할 수 있다는 점에서 중요

왜냐하면, 데이터베이스 사용자들은 속성 값을 비교함으로써 각 레코드를 구별할 수 있기를 원하기 때문

관계형 데이터 제약

실제 데이터와 데이터베이스에 저장된 데이터는 일치해야 함

  • 어떤 실수로 인하여 학생 테이블에 학번이 ‘20170001’인 데이터 하나가 더 생겼다거나 실제로는 존재하지 않는 학번이 입력되었다면 문제 발생

데이터 무결성(data integrity) : 데이터를 항상 정확하고 일관성 있게 유지하여 데이터에 결함이 없는 성질

데이터베이스에서는 키(key)와 키로부터 유래되는 ‘개체 무결성’과 ‘참조 무결성’이라는 제약조건을 사용하여 문제의 소지를 없앰

키(Key)

데이터베이스는 하나의 테이블에 똑같은 레코드를 두 번 저장하지 않음

  • 예를 들어, 학생 테이블에서 실제 속성 값 (20170001, 뽀로로, 통계, 3, 1001)을 갖는 레코드는 한 번만 유일하게 나타남
    • 따라서 전체의 속성 값을 다른 레코드들과 구분하는 식별자로 이용할 수 있음
    • 그러나 전체속성을 이용하지 않고, 하나 또는 몇 개의 속성만 조합해도 각 레코드를 유일하게 식별할 수 있음
    • (학번,이름, 학과명), (학번, 학과명), (학번) : OK
    • (이름, 학과명), (이름, 지도교수번호), (이름) : NO

테이블에서 레코드를 유일하게 식별할 수 있는 속성들의 집합을 키(key) 또는 슈퍼 키(super key)라 함

키는 데이터의 무결성 유지에 꼭 필요하기 때문에 데이터베이스에서 매우 중요

기본 키(primary key)

레코드를 유일하게 식별할 수 있는 속성의 집합인 키(key)는 테이블을 구성하는 속성들에 따라 하나의 테이블에 여러 개가 존재할수 있음

여러 개의 키 중에서 특히 다음과 같은 두 가지 성질을 만족하는 키를 후보 키(candidate key)라 함

유일성(uniqueness)
  • 어떤 테이블의 레코드가 유일하게 구분되는 성질
최소성(minimality)
  • 최소의 속성들로만 이루어져야 하는 성질

  • (학번,이름, 학과명), (학번, 이름) : 유일성 O, 최소성 X
  • (학번) : 유일성 O, 최소성 O

키의 성질은 레코드가 변경되고 삽입되더라도 당연히 항상 유지되어야 하며, 시간이 지나더라도 후보 키의 성질은 변하지 않아야

하나의 테이블에 후보 키가 둘 이상 있는 경우에 그 중 하나를 선정해서 키로 사용할 때 이것을 기본 키(primary key)라고 하며, 나머지 후보 키를 대체 키(alternative key)라고 함

  • 예 : (학번, 주민등록번호, 이름) 속성으로 이루어진 테이블
  • 이 테이블에서는 (학번), (주민등록번호)가 후보 키임
  • 여기에서 (학번) 속성을 기본 키로 이용한다면, (주민등록번호) 속성은 대체 키가 됨

일반적으로 키(key)라고 하면 기본 키를 뜻함

기본 키가 중요한 이유는 기본 키를 통해서 개개의 레코드를 정확히 찾아낼 수 있기 때문

일반적으로 테이블 설계 시에 테이블 구조에 키에 대한 정보를 포함(PK)

속성 속성명 데이터타입 길이 제약사항
학번 SID char 8 PK
이름 Name char 10
학과 Dept char 20
학년 Grade int
지도교수번호 PID char 4 FK

외래 키(foreign key)

어떤 테이블의 기본 키를 다른 테이블에서 사용할 때 지정할 수 있는 키

예를 들어, 교수 테이블과 학생 테이블 생각
  • 교수 테이블 : 교수 번호
  • 학생 테이블 : 지도교수번호
  • 학생 테이블에 있는 ‘지도교수번호’ 속성 값은 반드시 교수 테이블에 존재해야만 의미가 있음
  • 이렇게 반드시 다른 테이블에 존재하는 값만을 취할 수 있는 속성을 외래 키라 함

일반적으로 테이블 설계 시에 테이블 구조에 키에 대한 정보를 포함

속성 속성명 데이터타입 길이 제약사항
교수번호 PID char 4 PK
이름 Name char 10
소속학과 Dept char 20

개체무결성 제약

때로는 한 레코드의 어떤 속성 값은 아직 모르거나 결정되지 않았을 경우가 생김

  • 이러한 경우에 사용할 수 있는 특별한 값이 지정되어 있는 데
  • 이것이 널(null)임

개체무결성 제약은 기본 키에 속해 있는 속성은 널(null) 값을 가질 수 없다는 것

기본 키는 테이블의 레코드를 유일하게 식별하는 기능을 수행하는 것

만일 이 기본 키가 널 값을 갖는 것이 허용된다면, 널 값을 갖는 레코드가 여러 개 존재할 수 있을 것이며, 결과적으로 식별할 수 없는 레코드가 발생하게 됨.

  • 이것은 기본 키 정의에 위배

예를 들어, 학생테이블에서 학번이 없는 학생의 레코드는 식별 불가능하여 데이터 관리를 할 수 없음

따라서 학번이 없는 학생은 데이터의 가치가 없다는 생각으로 데이터베이스에 처음부터 저장을 허용하지 않겠다는 의미

참조무결성 제약

모든 외래 키가 가질 수 있는 값은 기본 키 값과 같거나 널 값을 가져야 한다는 제약

외래 키 값이 널 값이라면 참조할 레코드가 결정되지 않은 것으로 해석할 수 있음

참조되고 있는 동안 기본 키 값은 수정, 삭제할 수 없음

관계형 데이터 추출의 기본적 방법

관계형 데이터베이스에서는 데이터를 표현하는 방식뿐만 아니라 데이터를 추출하는 방식도 정의

관계형 데이터 모델은 기본적으로 관계 대수(relational algebra) 에 이론적 근거를 두고 있음

관계 대수는 테이블을 처리하기 위한 연산자의 집합으로 대표적인 데이터 추출 연산자들에는 선택(select), 추출(project), 조인(join) 등이 있음

선택(select) 연산

전체 레코드 중에서 주어진 조건을 만족하는 레코드들만 선택

예를 들어, 학생 테이블에서 통계학과의 학생들만 선택(검색)

추출(project) 연산

전체 필드 중에서 필요한 필드의 값들로만 이루어진 레코드를 선택

예를 들어, 학생 테이블에서 학번과 이름만 선택

조인(join) 연산

두 개 이상의 테이블을 연결시켜 필요한 데이터를 선택.

  • 예를 들어, 학생들의 지도교수 이름을 알고 싶다고 할 때, 학생 테이블이나 교수 테이블 중 어느 하나의 테이블만을 검색해서는 이러한 정보를 추출할 수가 없음

이런 경우에는 학생 테이블과 교수 테이블을 같이 이용해야 하는데 이 때 조인(join) 연산 이용

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다