본문 바로가기
👨‍💻Computer Science/데이터베이스

[Database] 02 - 1 관계 데이터 모델과 제약조건

by 코푸는 개발자 2021. 9. 14.
728x90
  • 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델의 하나
  • IBM 연구소의 E.F. Codd가 1970년에 관계 데이터 모델을 제안함
  • 관계 데이터 모델을 최초로 구현한 가장 중요한 관계 DBMS 시제품은 1970년 대에 IBM 연구소에서 개발된 System R
  • 1980년대 후반부터 여러 가지 데이터 모델들이 새로 등장했지만 관계 DBMS는 여전히 가장 널리 사용되는 DBMS

관계 DBMS 제품

관계 데이터 모델이 큰 성공을 거둔 요인

  • 바탕이 되는 데이터 구조로서 간단한 테이블(릴레이션)을 사용
  • 중첩된 복잡한 구조가 없음(이해하기 쉽고 사용하기 쉽다)
  • 집합 위주로 데이터를 처리(수학의 기초를 알고 있는 사람이라면 누구나 이해가능)
  • 다른 데이터 모델에 비해 이론이 잘 정립되었음(생각하지 못한 에러발생이 적다)
  • 관계 데이터베이스 설계와 효율적인 질의 처리 면에서 뛰어난 장점을 가짐
  • 표준 데이터베이스 응용에 대해 좋은 성능을 보임
  • 숙련되지 않은 사용자도 쉽게 이해할 수 있음

 

2.1 관계 데이터 모델의 개념

관계 데이터 모델

- 동일한 구조(릴레이션)의 관점에서 모든 데이터를 논리적으로 구성

  • 논리적으로 연관된 데이터를 연결하기 위해서 링크나 포인터를 사용하지 않음(모든 것이 릴레이션에 의해 표현됨)

- 선언적인 질의어를 통한 데이터 접근을 제공

  • 사용자는 원하는 데이터(what)만 명시하고, 어떻게 이 데이터를 찾을 것인가(how)는 명시할 필요가 없음
  • 응용 프로그램들은 데이터베이스 내의 레코드들의 어떠한 순서와도 무관하게 작성됨(응용프로그램 작성이 쉬움)

기본적인 용어

  • 릴레이션(relation): 2차원의 테이블(스프레드 시트와 유사, 행과 열로 구성)
  • 레코드(record): 릴레이션의 각 행
  • 투플(tuple): 레코드를 좀더 공식적으로 부르는 용어(특별한 구분이 없다면 레코드와 구분x)
  • 애트리뷰트(attribute): 릴레이션에서 이름을 가진 하나의 열(원자값을 가짐)

릴레이션의 예(투플: 4, 차수: 5)

도메인(domain)

  • 한 애트리뷰트에 나타날 수 있는 값들의 집합
  • 각 애트리뷰트의 도메인의 값들은 원자값(쪼게질 수 없는 값, 정수 문자열등의 single value만 가능)
  • 프로그래밍 언어의 데이터 타입과 유사함
  • 동일한 도메인이 여러 애트리뷰트에서 사용될 수 있음
  • 복합 애트리뷰트나 다치(multivalued) 애트리뷰트는 허용되지 않음
  • 도메인 정의

*address: city, dong 복합 애트리뷰트(composite attr, 밑에 서브 애트리뷰트를 갖게 하지 않음)

*다치: multi-valued(취미: 독서, 축구) -> 이걸 표현하려면 여러 튤을 사용하여 나타냄

관계 데이터 모델

 - 복합 애트리뷰트, 다치 애트리뷰트를 허용x

*중복이 생기면 일관성을 해칠 수 있다.(유지보수가 어려워짐)

EMPNAME 도메인

차수(degree)와 카디날리티(cardinality)

- 차수: 한 릴레이션에 들어 있는 애트리뷰트들의 수

  • 유효한 릴레이션의 최소 차수는 1(열의 없는 릴레이셔 허용x)
  • 릴레이션의 차수는 자주 바뀌지 않음

- 카디날리티: 릴레이션의 투플 수

  • 유효한 릴레이션은 카디날리티 0을 가질 수 있음(empty 릴레이션 가능)
  • 릴레이션의 카디날리티는 시간이 지남에 따라 계속해서 변함

용어들의 대응 관계

널값(null value)

  • ‘알려지지 않음’ 또는 ‘적용할 수 없음’을 나타내기 위해 널값을 사용
  • 예: 사원 릴레이션에 새로운 사원에 관한 투플을 입력하는데, 신입 사원의 DNO(부서번호)가 결정되지 않았을 수 있음 널값은 숫자 도메인의 0이나 문자열 도메인의 공백 문자 또는 공백 문자열과 다름
  • DBMS들마다 널값을 나타내기 위해 서로 다른 기호를 사용함

*NULL flag에 비트를 통해 널값을 표현함

 

릴레이션 스키마(relation schema)

  • 릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합
  • 릴레이션을 위한 틀(framework)
  • 표기법 릴레이션이름(애트리뷰트1, 애트리뷰트2, ... 애트리뷰트N) -> 집합의 형태임
  • 기본 키 애트리뷰트에는 밑줄 표시
  • 내포(intension)라고 함

릴레이션 인스턴스(relation instance)

  • 릴레이션에 어느 시점에 들어 있는 투플들의 집합
  • 시간의 흐름에 따라 계속 변함
  • 일반적으로 릴레이션에는 현재의 인스턴스만 저장됨
  • 외연(extension)이라고 함

릴레이션의 내포와 외연

관계 데이터베이스(relational database) 스키마

  • 하나 이상의 릴레이션 스키마들로 이루어짐

관계 데이터베이스 인스턴스

  • 릴레이션 인스턴스들의 모임으로 구성됨

 

728x90

댓글