되자!백엔드개발자

[DB기초] 관계형 데이터베이스 용어 - 스키마, 릴레이션, 관계 본문

개발공부/DB기초

[DB기초] 관계형 데이터베이스 용어 - 스키마, 릴레이션, 관계

HyunJng 2022. 9. 8. 22:44

스키마(Schema)


데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것이다.

전체 table간의 연결 관계도나, table안의 데이터들의 속성, 속성들의 집합으로 이루어진 개체, 이들이 유지해야 할 제약조건들이 기술된다. 

 

스키마는 사용자의 관점에 따라 3가지로 나눌 수 있다. 

  • 외부스키마 = 서브스키마(Sub Schema)
    사용자나 응용 프로그래머가 접근하는 데이터베이스의 논리적 구조를 정의한 것이다. 쉽게 말해 각 조직별로 필요한 정보만 모아 만든 것으로, 개념스키마의 서브 스키마라고 할 수 있다. 하나의 시스템안에 여러개의 외부 스키마가 존재할 수 있고 하나의 외부 스키마를 여러개의 응용프로그램잉나 사용자가 공유할 수 있다.
  • 개념스키마
    데이터베이스의 전체적인 논리적 구조로, 조직 전체의 데이터베이스이다. 그래서 하나만 존재할 수 있고 단순히 스키마라고하면 개념 스키마를 의미한다. 데이터베이스관리자(DBA, Data base Administer)에 의해 구성된다.
  • 내부스키마
    물리적 저장장치의 입장에서 본 데이터구조이다. 실제로 데이터베이스에 저장될 릴레이션의 물리적 구조를 정의한다. 시스템 프로그래머나 시스템 설계자가 접근하는 스키마이다.

회사 경영 정보 데이터베이스를 구축하는 예를 들어보자.

데이터베이스 즉, 개념스키마 안에는 아래와 같은 정보가 들어있을 것이다.

-  직원들에 대한 정보(이름, 급여, 고과 등의 개인정보)

- 회사 영업팀의 매출정보 등등

그런데 영업팀이 그 중 영업실적정보를 요청하게된다. 그럼 개발자는 필요한 정보는 주되, 직원들의 개인정보같은 다른 정보는 알게해서는 안된다. 이때 필요한 정보만 모아 외부스키마를 생성해서 주는 것이다.

 

릴레이션(relation)


행과 열로 구성된 테이블(Table, 표)이다.

참고로 relation은 관계로 해석해선 안된다. relationship이 관계이다.

<스키마의 표현>

릴레이션이름(속성1 : 도메인1 , 속성2: 도메인2,...)

위의 경우는,

도서(도서번호, 도서이름, 출판사, 가격) 으로 쓸 수 있다. domain은 정해진 것이 없으므로 생략한다.

 

<스키마의 요소>

속성(attribute, 애트리뷰트)

릴레이션 스키마의 열(column)이다. 위의 표에서는 {도서번호, 도서이름, 출판사, 가격}이 해당된다.

속성은 고유한 이름을 갖고 있어서 동일 릴레이션 내에서는 같은 이름의 속성이 존재할 수 없다. 또한 도메인에 정의된, 단 하나의 값만 가져야한다.

도메인(domain)

속성들이 각각 가질 수 있는 값들의 집합이다.

예를들어 "안경 착용의 유무"라는 속성이 있을 때 이 속성이 가질 수 있는 값은 "유" 혹은 "무"일 것이다.

이러한 {"유", "무"} 집합을 A라고 했을 때, "안경착용의 유무"라는 속성은 A라는 도메인에 있는 값만 가질 수 있다.

도메인의 이름은 속성 이름과 같을 수도 있고 다를 수도 있다. 또 하나의 도메인을 여러 속성에서 공유할 수도 있다.

차수(degree)

속성의 개수를말한다. 속성은 반드시 하나 이상 존재하므로 유효한 릴레이션의 최소 차수는 1이다.

 

<인스턴스의 요소>

튜플(tuple, 레코드)

릴레이션의 행(row)이다. 비공식적으로 레코드라고도 부른다.

릴레이션 내의 모든 튜플은 서로 중복되서는 안된다.

카디날리티(cardinality)

투플의 개수이다. 아직 데이터가 삽입되어있지 않으면 차수와 다르게 0의 값을 가질 수 있다.

 

<릴레이션의 특징>

  • 한 속성의 값은 모두 같은 도메인 값을 가진다.
    한 속성에 속한 열은 모두 그 속성에서 정의한 도메인 값만 가질 수 있다.
  • 속성의 순서는 상관없다.
    속성의 순서가 달라도 릴레이션 스키마는 동일하다.
  • 튜플의 순서는 상관 없다.
    튜플의 순서가 달라도 같은 릴레이션이다.

 

관계(relationship)


관계는 두 가지로 나눌 수 있다.

1. 릴레이션 에서 생성되는 관계

첫 번째 행(1, 축구의 역사, 굿스포츠, 7000)의 경우 네 개의 집합에서 각각 원소 한 개씩 선택하여 만들어진 것으로 이 원소들이 관계를 맺고있다.

2. 릴레이션 의 생성되는 관계

key를 이용하여 릴레이션간에 관계를 맺을 수 있다.