데이터베이스 7) 관계형 데이터베이스

zh025700·2022년 12월 22일

데이터베이스

목록 보기
7/15

데이터베이스

7. 관계형 데이터 베이스

관계형 데이터 모델

  • 1970년에 IBM에서 처음 제안
    • 외형적으로는 단순한 테이블을 표현
      • 내부적으로는 릴레이션과 수학적인 이론을 기초로한다.

관계형 데이터모델에서 릴레이션은 2차원의 테이블을 의미한다.
테이블은 행(row)와 열(column)으로 이루어져 있다.

테이블 == 릴레이션

  • 테이블의 열(필드)는 애트리뷰트(attribute)라고 한다.
  • 테이블의 행(레코드)는 투플(tuple)이라고 한다.
  • 모델에서 데이터의 값들은 애트리뷰트의 값(value)라고한다.
    • 더 이상 분해할 수 없는 원자값(atomic value)만 허용

도메인(domain)

  • 하나의 애트리뷰트가 취할 수 있는 같은 타입의 모든 원자들의 집합
  • 하나의 도메인에 대해 둘 이상의 애트리뷰터가 정의될 수 있다.
    • 여러 속성은 같은 도메인인 int로 정의 가능

한 릴레이션에는 모든 애트리뷰트들의 이름이 반드시 달라야한다.

릴레이션의 개념

릴레이션 R의 스키마(schema)

  • 릴레이션 이름 R과 일정수의 애트리뷰트 A1,A2,...,An의 집합으로 구성된다
    • R(A1,A2,..,An)으로 표기한다.
  • 각 애트리뷰트 Ai(i=1,,,n)은 도메인 D1,D2...Dn 중 하나와 대응 된다.
  • 하나의 투플은 각 애트리뷰트에 대응 하는 값 <v1,v2..vn>으로 구성된다
  • 각 vi은 애트리뷰트 Ai의 값으로서 Ai를 정의하고 있는 도메인 Di의 한 원소값이다.
    • 즉, vi는 어떤 애트리뷰트의 값이고, 어떤 도메인을 따른다.

릴레이션의 차수(degree)

  • 애트리뷰트 or 도메인의 개수

릴레이션의 카디널리티(cardinality)

  • 투플의 수

릴레이션의 특성

투플의 유일성(uniqueness of tuples)

  • 한 릴레이션에 포함된 투플들은 모두 다르다.
    • 똑같은 투플은 한 릴레이션의 포함될 수 없다.
    • 수학적 의미에서 집합은 구분할 수 있는 원소의 모음이기 때문이다.

투플의 무순서성(no ordering of tuples)

  • 한 릴레이션에 포함되어 있는 투풀 사이에는 순서가 없다.
    • 투플의 순서가 바뀌어도 동일한 릴레이션이다.

애트리뷰트의 무순서성(no ordering of attributes)

  • 한 릴레이션을 구성하는 애트리뷰트 사이에는 순서가 없다.
    • 중요한 속성이 뒤에 있어도 상관이 없다.
  • 애트리뷰트는 순서가 아니라 이름에 의해 참조된다.

애트리뷰트의 원자성(atomicity of attributes)

  • 모든 애트리뷰트의 값은 원자값(atomic value)이다.
    • 더 분리할 수 없다.
  • 한 애트리뷰트에 여러 값이 있을 순 없다.
    • 하나에 하나만
    • 정규화 릴레이션이라 한다.

릴레이션에서 반복 그룹(집합)은 DBMS에서 허용되지 않는다.

이러한 릴레이션을 정규화 릴레이션이라고 한다.

비정규 릴레이션을 정규 릴레이션으로 변환하는 과정을 정규화(normalization)이라고 한다.

릴레이션에는 애트리뷰트의 값이 없는 경우도 허용된다.

  • 널값 허용
    • 널 값과 스페이스 입력 값은 다르다.

학사 관계형 데이터베이스

릴레이션 스키마

  • 객체 관계에 대한 정의만 명세한 것

데이터베이스의 키

릴레이션의 특성 중 투플의 유일성으로 인해 한 릴레이션에 포함된 투플들은 모두 다르다.
-> 그 릴레이션을 구성하는 애트리뷰트를 사용하면 각 투플을 고유하게 식별할 수 있다

이러한 애트리뷰트 집합을 키(key)라고 한다.

키에는 기본키, 후보키, 대체키, 수퍼키, 외래키 등이 있다.

후보키(candidate key)

  • 릴레이션에서 각 투플들을 유일하게 식별해 주는 애트리븉트의 조합
  • 후보키는 두가지 성질을 만족해야한다.
    • 유일성(uniqueness)
      • 투플을 유일하게 표현할 수 있어야함
    • 최소성(minimality)
      • 투플을 식별하는데 꼭 필요한 애트리뷰드들로만 구성됨
학생 테이블에서 <학번>, <성명,학과>

만약 성명만으로 학생 투플을 유일하게 식별할 수 있다면, 성명 학과는 후보키가 될 수 없다...
왜?? 유일성만 있고 최소성이 없으니.. 이 경우 슈퍼키

후보키가 둘 이상이 되는 경우에 그 중 하나는 기본키(primary key) 나머지는 대체키(alternate key)가 된다.

기본키는 그 키값을 가진 투플을 바로 맵핑할 수 있다.

유일성은 만족하지만 최소성은 만족하지 않는 애트리뷰트의 집합은 슈퍼키(super key)라고 한다.

외래키(foreign key)

  • 관계 릴레이션에서 개체들 간의 관계를 표현하는데 중요한 역할을 수행
  • 일반적으로 두 릴레이션으로부터 의미있는 정보를 검색하기 위해 한 릴레이션의 기본키와 다른 릴레이션의 외래키를 비교한다.
    • 즉 한 릴레이션에서 다른 릴레이션의 기본키를 슉 가져옴
    • 그렇기 때문에 외래키를 참조하면 그 값은 무조건 존재해야한다.
      • 아니면 에러난다.

외래키의 경우

다른 릴레이션의 기본키를 참조하는 외래키

  • 즉, 릴레이션이 서로 다른 경우
  • 릴레이션마다 어트리뷰트의 이름이 다를 수는 있지만, 값은 같아야한다
    • 참조를 하기 때문

자체 릴레이션의 기본키를 참조하는 외래키

  • 즉, 릴레이션이 서로 같은 경우
  • 외래키가 속한 릴레이션과 기본키가 속한 릴레이션이 반드시 달라야 할 필요가 없다
    • A 릴레이션의 기본키를 A릴레이션에서 외래키로 쓸 수도 있다.

무결성 제약 조건

데이터베이스에서 무결성이란 정확성이다

  • 개체 무결성 제약조건과 참조 무결성 제약조건이 있다.

개체 무결성 제약조건(entity integrity constraints)

  • 기본키에 속해 있는 애트리뷰트는 널 값이나 중복 값을 가질 수 없다
    • 어떤 애트리뷰트를 기본키로 설정해놓으면 이 애트리뷰트는 무조건 키값이 되는 유일한 값이 입력되어 있어야 한다.

참조 무결성 제약조건(referential integrity constraints)

  • 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다
    • 투플 중 하나라도 다른 릴레이션에서 가진 값이 없다면, 이 애트리뷰트는 외래키가 될 수 없다.

데이터베이스가 연산을 통해 변경되어도 무결성 제약조건이 유지되어야한다.

  • 어떤 외래키를 가진 릴레이션을 지우고 싶다면, 무결성이 위배되지 않도록 다른 릴레이션의 외래키를 지우거나 릴레이션을 지워야한다.
profile
정리

0개의 댓글