컴퓨터공학/데이터베이스

[데이터베이스] 관계형 데이터베이스

NIMHO 2022. 10. 14. 20:57
728x90

복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.

관계형 데이터 모델

  • 1970년에 IBM의 E.F.Codd에 의해 처음 제안되었다.
    • 외형적으로는 단순한 테이블의 구조로 표현하지만,
    • 내부적으로는 릴레이션과 수학적인 이론을 기초로 하고 있다.
  • 학생(Student) 테이블
    • 테이블 : 릴레이션 (relation)
    • 테이블의 (또는 필드) : 애트리뷰트 (atrribute)
    • 테이블의 (도는 레코드) : 튜플 (tuple)
    • "20181234", "김철수" : 애트리뷰트의 값 (value)
      • 더 이상 분해할 수 없는 원자 값(atomic value)만을 허용한다.

  • 도메인 (domain)
    • 하나의 애트리뷰트가 취할 수 있는 같은 타입의 모든 원자들의 집합
    • ex1. 학번의 도메인 : 8자리 정수의 집합
    • ex2. 성명의 도메인 : 5자리 문자열의 집합
  • 릴레이션 Student의 정의 예
    • 릴레이션 이름 : 학생(student)
    • 애트리뷰트 이름 : 학번(sno), 성명(sname), 학과(sdept), 전화번호(tel)
    • 도메인 : INTEGER, CHAR(5), CHAR(20),...
  • 하나의 도메인에 대하여 둘 이상의 애트리뷰트가 정의될 수 있다.
    • ex. sdept, stel은 같은 도메인 CHAR(20)으로 정의되어있다.
  • 한 릴레이션에서는 모든 애트리뷰트들의 이름은 반드시 달라야 한다.
  • DBMS에 DDL로 정의
create table student(
	sno	integer,
   	sname	char(10),
    	sdept	char(20),
    	stel	char(20)
);
728x90

릴레이션의 개념

  • 릴레이션 R의 스키마
    • 릴레이션 이름 R과 일정수의 애트리뷰트 A1, A2,..., An의 집합으로 구성된다.
    • R(A1, A2,..., An)으로 표기한다.
    • ex. 학생(학번, 이름,..., 전화번호)
  • 각 애트리뷰트 Ai(i = 1,..., n)는 도메인 D1, D2,..., Dn의 한 도메인 Di와 대응된다.
  • 하나의 튜플은 각 애트리뷰트에 대응하는 값, <v1, v2,..., vn>으로 구성된다.
  • 각 vi는 애트리뷰트 Ai의 값으로서 Ai를 정의하고 있는 도메인 Di의 한 원소 값이다.

 

학생(Student) 릴레이션

  • 도메인
    • 학번(sno)의 도메인 : integer
    • 성명(sname)의 도메인 : char(5)
    • 학과(sdept)의 도메인 : char(20)
    • 전화번호(stel)의 도메인 : char(20)
  • 학생(학번, 성명, 학과, 전화번호)으로 표기한다.
    • 릴레이션 이름 : 학생(student)
    • 4개의 애트리뷰트 이름 : 학번, 성명, 학과, 전화번호
    • 인스턴스 : 6개의 튜플로 구성
    • 각 튜플 : 4개의 애트리뷰트 값(학번, 성명, 학과, 전화번호)으로 구성
  • 릴레이션 R의 차수(degree) : 애트리뷰트(또는 도메인)의 개수 (4개)
  • 릴레이션 R의 카디널리티(cardinality) : 튜플의 수 (6개)

 

릴레이션의 특성

  • 튜플의 유일성
    • 한 릴레이션에 포함된 튜플들은 모두 상이하다.
    • 두 개의 똑같은 튜플은 한 릴레이션에 포함될 수 없다.
  • 튜플의 무순서성
    • 한 릴레이션에 포함되어 있는 튜플 사이에는 순서가 없다.
    • 튜플 순서가 바뀌어도 동일한 릴레이션으로 인식된다.
  • 애트리뷰트의 무순서성
    • 한 릴레이션을 구성하는 애트리뷰트 사이에는 순서가 없다.
    • 애트리뷰트는 순서가 아니라 이름에 의해 참조된다.
  • 애트리뷰트의 원자성
    • 모든 애트리뷰트 값은 원자 값이다.
    • 애트리뷰트의 값으로 반복 그룹, 즉 집합이 될 수 없다.

 

정규화(normalization) 릴레이션

  • 정규화 릴레이션
    • 반복 그룹(집합)을 애트리뷰트 값으로 허용하지 않는 릴레이션
  • 정규화
    • 비정규 릴레이션을 정규 릴레이션으로 변환하는 과정
  • 널(null) 값
    • 애트리뷰트의 값이 없는 경우 사용하는 특별한 값

개체 릴레이션

  • 튜플의 유일성을 보장하기 위해 학번, 교수 번호, 과목 코드와 같은 유일하게 구분할 수 있는 애트리뷰트 삽입
  • 개체 및 속성 관계 다이아그램으로부터 각각 4개의 애트리뷰트로 작성
  • 릴레이션과 애트리뷰트 이름은 DDL 작성을 위해 한글(영어)로 작성

 

관계 릴레이션

  • 지도 릴레이션은 교수 번호와 학번으로 교수와 학생 릴레이션 간 관계를 구성 (일 대 다)
  • 강의 릴레이션은 교수 번호와 과목 코드로 교수와 과목 릴레이션 간 관계를 구성 (일 대 다)
  • 수강 릴레이션은 학번과 과목 코드로 교수와 학생 릴레이션 간 관계를 구성 (다 대 다)
  • 강의 릴레이션은 시간과 강의실 애트리뷰트가 추가로 삽입된다고 가정
  • 수강 릴레이션은 성적 애트리뷰트가 추가로 삽입된다고 가정

 

데이터베이스의 키(key)

  • 키(key)
    • 튜플의 유일성
    • 실제로는 하나 또는 몇 개의 애트리뷰트만 이용해도 튜플들을 유일하게 식별 가능하다.
    • 키(key)는 튜플들을 유일하게 식별할 수 있는 애트리뷰트 집합이다.
  • 후보 키(candidate key)
    • 릴레이션에서 각 튜플들을 유일하게 식별해주는 몇 개의 애트리뷰트들의 조합이다.
    • 유일성
      • 몇 개의 애트리뷰트 조합으로 이루어진 후보 키만 비교하더라도 그 튜플을 유일하게 표현할 수 있어야 한다.
    • 최소성
      • 후보 키는 튜플들을 유일하게 식별하는데 꼭 필요한 애트리뷰트들로 구성된다.
    • ex. 학생 테이블에서 <학번>, <성명, 학과>
      • 만일 성명만으로 학생 튜플을 유일하게 식별할 수 있다면 <성명, 학과>는 후보 키가 될 수 없다.
      • 유일성만 있고 최소성이 없기 때문이다.
    • 후보 키가 둘 이상이 되는 경우에 그중에서 어느 하나를 선정하여 기본키(primary key)라 지정하면 나머지 후보 키들은 대체키(alternate key)가 된다.
      • ex. <학번> : 기본키,        <성명, 학과> : 대체키
  • 기본키(primary key)
    • 그 키 값을 가진 튜플들을 바로 지정할 수 있다.
    • ex. 학생 릴레이션에서 키 값 20181234는 튜플 <20181234, 김철수, 컴퓨터, 010-4654-7654>를 대표하여 지정할 수 있다.
  • 슈퍼 키(super key) - *시험
    • 유일성(uniqueness)은 만족하지만 최소성(minimality)은 만족하지 않는 애트리뷰트의 집합
  • 외래 키(foreign key)
    • 강의 릴레이션에서 교수 번호 애트리뷰트는 실제로 교수 릴레이션의 기본키인 교수 번호를 참조하는 외래 키이다.
    • 외래 키 : 강의 릴레이션의 교수 번호나 과목 코드 애트리뷰트

 

무결성 제약조건(integrity constraints)

  • 개체 무결성 제약조건 (entity integrity constraints)
    • 기본키에 속해 있는 애트리뷰트는 널 값이나 중복 값을 가질 수 없다.
  • 참조 무결성 제약조건 (referential integerity constraints)
    • 릴레이션은 참조할 수 없는 외래 키 값을 가질 수 없다.
    • ex. 수강 릴레이션에서 학번 20207779인 튜플이 있다면 참조 무결성이 위배된다.
  • 데이터베이스가 삽입, 삭제, 변경 등의 연산을 통해 변경되어도 무결성 제약조건이 유지되어야 한다.
    • 과목 릴레이션에서 과목 코드 CO123이 제거 시
    • 강의 릴레이션과 수강 릴레이션에 있는 과목 코드 CO123도 함께 삭제되어야 한다.
728x90