Relational Model: 두 판 사이의 차이

youngwiki
편집 요약 없음
 
(같은 사용자의 중간 판 13개는 보이지 않습니다)
1번째 줄: 1번째 줄:
상위 문서: [[데이터베이스 시스템]]
==개요==
==개요==
Relational Model은 데이터를 표현하기 위해서 표의 형식을 사용한다. 각각의 표는 고유한 이름(속성)을 가지는 열들을 통해 data를 표시한다.
Relational Model은 데이터를 표현하기 위해서 표의 형식을 사용한다. 각각의 표는 고유한 이름(속성)을 가지는 열들을 통해 data를 표시한다.
4번째 줄: 6번째 줄:


==예시==
==예시==
[[파일:Relational Model Example1.jpg|테두리|프레임없음|300x300픽셀]]      [[파일:RelationalModelExaple2.png|테두리|프레임없음|336x336픽셀]]
[[파일:Relational Model Example1.jpg|테두리|프레임없음|300x300픽셀]]      [[파일:RelationalModelExaple2.png|테두리|프레임없음|270x270px]]


오른쪽의 그림은 두개의 표로 구성된 Relational Model의 예시이다.
오른쪽의 그림은 두개의 표로 구성된 Relational Model의 예시이다.
첫번째 테이블인 instructor 표에서는 ID가 22222인 Einstein 교수가 물리학과 소속이며, 연봉이 95,000달러임을 나타낸다.
첫번째 테이블인 instructor 표에서는 ID가 22222인 Einstein 교수가 물리학과 소속이며, 연봉이 95,000달러임을 나타낸다.
두 번째 테이블인 department 테이블에서는, 예를 들어, 생물학과가 Watson 건물에 위치하고 있으며, 예산이 90,000달러임을 나타낸다.
두 번째 테이블인 department 테이블에서는, 예를 들어, 생물학과가 Watson 건물에 위치하고 있으며, 예산이 90,000달러임을 나타낸다.
==Relational Schema와 Instance==
<math>A_1, A_2, ...,A_n</math>이 구현하고자 하는 DB의 attribute(속성)이라고 하자. relation schema는 relation의 구조를 정의하는 것이다. relation schema R은 <math>R = (A_1, A_2, ...,A_n)</math>과 같이 정의된다.
<ref>예시: instructor = (ID, name, dept_name, salary)</ref>
relation instance은 relation table에 저장된 실제 데이터를 의미한다. relation r의 원소 t는 tuple이라고 불리며, 이는 table에서 행에 해당한다.<ref>어떤 속성 하나에 해당하는 데이터 하나가 tuple이 아니라 각 행 하나가 통째로 tuple에 해당한다.</ref>
또한 schema R에 대한 relation instance r은 r(R)로 나타내어 진다.
이때 tuple들은 서로 irrelevant하며, 이는 tuple이 정렬되어 있지 않다는 것을 의미한다. 또한 하나의 relation 내에서 두개의 튜플이 모든 속성에 대해 정확히 동일한 값을 가지는 것은 허용되지 않는다. 즉, 튜플의 속성 값의 집합은 해당 튜플을 고유하게 식별할 수 있어야 한다.
===Attribute===
Attribute는 atomic하다. 이는 해당 속성이 단일한 값으로 이루어졌기 때문에 쪼개서 또다른 정보를 얻을 수 없다는 것을 의미한다.
또한 Attribute는 Domain을 가진다. Domain은 각각의 attribute에 대해 허용되는 value의 집합을 의미한다. 이때 null은 해당 value가 정의되지 않았음을 의미하며, 모든 domain에 원소로 존재한다.
==Keys==
집합 K가 relation schema R의 부분집합이라고 하자. superkey, candidate key, primary key, foreign key는 다음과 같이 정의된다.
[[파일:SchemaDiagram.jpg|테두리|프레임없음|600x600픽셀]]
* superkey: K를 구성하는 속성들 만으로 r(R)에 속하는 각 튜플을 고유하게 구분할 수 있다면 K를 R의 superkey라고 한다. 
** 현재의 인스턴스 r을 기준으로 하는 것이 아니라 앞으로 변경되거나 추가될 tuple까지 고려하여 결정한다.
** 예시: instructor relation에서 {ID}, {ID, name}, {ID, salary} 등은 superkey에 해당한다.
* candidate key: superkey K에서 불필요한 속성을 제거하여 미니멀 해졌다면 K는 candidate key에 해당한다.
** 예시: instructor relation에서 {ID}가 candidate key에 해당한다.
* primary key: candidate key 중에서 DB 설계자가 주요 식별자로 선택한 key를 의미한다.
** DB 설계자가 primary key 값을 고르는 기준은 존재하지 않는다. 즉, 자기 마음대로이다.
* foreign key: 한 relation의 속성 값이 다른 relation의 primary key 값을 참조하는 경우, 해당 속성을 foreign key라고 한다.
** 예시: instructor relation에 존재하는 dept_name은 department relation의 primary key이므로 instructor의 foreign key이다.
** foreign key가 존재하는 relation을 referncing relation이라고 하며, 해당 key가 primary key로 존재하는 relation을 referenced relation이라고 한다.
** Referential Integrity Constraint: foreign key의 값은 반드시 참조하는 referenced relation에도 존재해야 한다.<ref>Foreign Key Constraint는 해당 제약 조건을 실제적으로 강제하는 제약 조건이다.</ref>
*** 예를 들어 department에서 dept_name = 'CS'를 삭제하고 instructor에서 dept_name = 'CS'를 가진 튜플이 존재하면 문제가 생긴다.
==Relational Query Languages==
자세한 내용은 [[Relational Query Languages]]를 참고하십시오.
==각주==
[[분류:데이터베이스 시스템]]
[[분류:데이터베이스 시스템]]

2025년 4월 19일 (토) 18:14 기준 최신판

상위 문서: 데이터베이스 시스템

개요

Relational Model은 데이터를 표현하기 위해서 표의 형식을 사용한다. 각각의 표는 고유한 이름(속성)을 가지는 열들을 통해 data를 표시한다. 또한, 현재 대부분의 data model은 Relational Model로 이루어져 있다.

예시

오른쪽의 그림은 두개의 표로 구성된 Relational Model의 예시이다. 첫번째 테이블인 instructor 표에서는 ID가 22222인 Einstein 교수가 물리학과 소속이며, 연봉이 95,000달러임을 나타낸다. 두 번째 테이블인 department 테이블에서는, 예를 들어, 생물학과가 Watson 건물에 위치하고 있으며, 예산이 90,000달러임을 나타낸다.

Relational Schema와 Instance

A1,A2,...,An이 구현하고자 하는 DB의 attribute(속성)이라고 하자. relation schema는 relation의 구조를 정의하는 것이다. relation schema R은 R=(A1,A2,...,An)과 같이 정의된다. [1] relation instance은 relation table에 저장된 실제 데이터를 의미한다. relation r의 원소 t는 tuple이라고 불리며, 이는 table에서 행에 해당한다.[2] 또한 schema R에 대한 relation instance r은 r(R)로 나타내어 진다.

이때 tuple들은 서로 irrelevant하며, 이는 tuple이 정렬되어 있지 않다는 것을 의미한다. 또한 하나의 relation 내에서 두개의 튜플이 모든 속성에 대해 정확히 동일한 값을 가지는 것은 허용되지 않는다. 즉, 튜플의 속성 값의 집합은 해당 튜플을 고유하게 식별할 수 있어야 한다.

Attribute

Attribute는 atomic하다. 이는 해당 속성이 단일한 값으로 이루어졌기 때문에 쪼개서 또다른 정보를 얻을 수 없다는 것을 의미한다. 또한 Attribute는 Domain을 가진다. Domain은 각각의 attribute에 대해 허용되는 value의 집합을 의미한다. 이때 null은 해당 value가 정의되지 않았음을 의미하며, 모든 domain에 원소로 존재한다.

Keys

집합 K가 relation schema R의 부분집합이라고 하자. superkey, candidate key, primary key, foreign key는 다음과 같이 정의된다.

  • superkey: K를 구성하는 속성들 만으로 r(R)에 속하는 각 튜플을 고유하게 구분할 수 있다면 K를 R의 superkey라고 한다.
    • 현재의 인스턴스 r을 기준으로 하는 것이 아니라 앞으로 변경되거나 추가될 tuple까지 고려하여 결정한다.
    • 예시: instructor relation에서 {ID}, {ID, name}, {ID, salary} 등은 superkey에 해당한다.
  • candidate key: superkey K에서 불필요한 속성을 제거하여 미니멀 해졌다면 K는 candidate key에 해당한다.
    • 예시: instructor relation에서 {ID}가 candidate key에 해당한다.
  • primary key: candidate key 중에서 DB 설계자가 주요 식별자로 선택한 key를 의미한다.
    • DB 설계자가 primary key 값을 고르는 기준은 존재하지 않는다. 즉, 자기 마음대로이다.
  • foreign key: 한 relation의 속성 값이 다른 relation의 primary key 값을 참조하는 경우, 해당 속성을 foreign key라고 한다.
    • 예시: instructor relation에 존재하는 dept_name은 department relation의 primary key이므로 instructor의 foreign key이다.
    • foreign key가 존재하는 relation을 referncing relation이라고 하며, 해당 key가 primary key로 존재하는 relation을 referenced relation이라고 한다.
    • Referential Integrity Constraint: foreign key의 값은 반드시 참조하는 referenced relation에도 존재해야 한다.[3]
      • 예를 들어 department에서 dept_name = 'CS'를 삭제하고 instructor에서 dept_name = 'CS'를 가진 튜플이 존재하면 문제가 생긴다.

Relational Query Languages

자세한 내용은 Relational Query Languages를 참고하십시오.

각주

  1. 예시: instructor = (ID, name, dept_name, salary)
  2. 어떤 속성 하나에 해당하는 데이터 하나가 tuple이 아니라 각 행 하나가 통째로 tuple에 해당한다.
  3. Foreign Key Constraint는 해당 제약 조건을 실제적으로 강제하는 제약 조건이다.