HeYStRanGeR
article thumbnail

 

(2022.04.07)

데이터베이스 강의 들으면서 정리하기 5탄

 


 

Data Model 구성 3요소

1. data structure : 데이터 구조

- 데이터를 어떤 형태로 저장하는지를 표현하는 추상적 표현

- 실제 저장 구조가 아닌 개념상의 저장구조를 직관적으로 표현

 

2. operation : 연산

- 개념적인 데이터 구조 안의 데이터를 어떤 방식으로 처리하지를 표현

 

3. constraint : 제약조건

- 데이터 구조 안에 데이터를 저장할 때의 구조적 제약 사항과 연산을 적용할 때의 행위적 제약 사항을 표현

 

 


 

관계형 데이터 모델

- relation으로 불리는 2차원 테이블 (table) 형태의 단순구조에 데이터를 저장하는 방식

- 테이블 구조는 relation 개념을 직관적으로 쉽게 이해하도록 함

 

 

관계형 데이터 모델의 3요소

- 데이터를 저장하는 기본 데이터 구조: relation

- relation의 데이터를 처리하는 연산 : 관계대수

- 제약사항 : 무결성 제약 조건

 

-------------------------------------------------------

 

relation  --> 관련된 여러 relation 들로 데이터베이스를 구성 (table)

: 관계형 데이터 모델의 핵심

 

▷tuple (투플)

- relation의 raw(행) (table의 행)

- 현실 세계의 개체를 표현

- 속성 값들의 조합으로 구성

- 파일 관리 시스템 관점에서 record에 대응

 

attribute (속성)

- relation의 column(열) (table의 열)

- 데이터를 표현하는 가장 작은 논리적 단위 --> 의미적으로 더 이상 분해할 수 없는 원자값만을 사용

- 릴레이션이 표현하는 대상의 주요 특성들을 서로다른 이름으로 구별하여 표현

- 파일 관리 시스템 관점에서 field에 대응

 

domain (도메인)

- 각 속성이 취할 수 있는 모든 값들의 집합, 즉 하나의 속성이 가질 수 있는 모든 값의 집합

- 적합성 판단의 기준이 됨

 

------------------------------------------

 

카디널리티 (cardinality) : 하나의 relation 안의 전체 tuple의 개수 -> 동적 특성

차수 (degree) : 하나의 relation 을 구성하는 전체 attribute의 개수 -> 정적 특성

 

------------------------------------------

 

 

relation의 구성

1. relation의 schema (relation intension)

- relation의 논리적 구조

- 정적인 특성있음

 

2. relation의 instance

- 어느 한 시점에 relation에 존재하는 tuple들의 집합

- 동적인 특성있음

 

 

database의 구성

1. database의 schema

- 데이터베이스 전체 구조

- 데이터베이스를 구성하는 relation의 schema의 모음

- 정적임

 

2. database의 instance

- database를 구성하는 relation의 instance의 모음

- 동적임

 

 


relation의 특성

  • tuple의 유일성
  • tuple의 무순서
  • attribute의 무순서
  • attribute의 원자성

 

1. tuple의 유일성 (uniqueness of tuple)

- 하나의 relation은 tuple들의 집합이다. --> relation 안에는 똑같은 tuple이 존재하지 않는다.

- 모든 tuple은 다른 tuple과 구별되는 유일한 속성값이 있어야한다.

 

2. tuple의 무순서성 (no ordering of tuple)

- 집합에서는 원소들 사이에서 순서가 의미가 없다. --> relation의 tuple 사이에 순서는 의미가 없다.

 

3. 속성의 무순서성 (no ordering of attribute)

- tuple과 마찬가지로 relation이 속성의 집합이라 순서에 의미가 없다.

- 속성 값은 속성의 순서가 아니라 속성의 이름에 의해 참조된다.

 

4. 속성의 원자성 (atomicity of attribute)

- 속성 값은 더 이상 의미적으로 쪼개서 사용할 수 없다.

- relation은 다중값이나 복합속성을 허용하지 않는다.


 

key

- relation에서 tuple 들을 유일하게 구별하는 속성 또는 속성들의 집합

- 모든 relation은 키를 가진다. --> 키에 속하는 속성 집합은 반드시 속성값의 조합이 tuple마다 달라야함

- 여러 무결성 제약 조건과 관련하여 중요한 역할을 함

 

key 의 특성

  • 유일성 (uniqueness) : 하나의 relation에서 모든 tuple은 서로 다른 키값을 가짐
  • 최소성 (minimality) : 최소한의 속성들로만 key를 구성함 (복합키 제외하면 최소성 조건은 항상 충족함)

key 의 종류

  • 슈퍼키(super key) : 유일성 만족 but, 최소성 불만족
  • 후보키(candidate key) : 유일성과 최소성 만족
  • 기본키(primary key) : 후보키 중에서 보통 값이 바뀌지 않는 것
  • 대체키(alternate key) : 기본키로 선택되지 못한 후보키
  • 외래키 (foreign key) : 다른 relation의 기본키를 참조하는 키 (외래키 속성과 그것이 참조하는 기본키 속성의 이름은 달라도 되지만, 도메인은 같아야한다), 하나의 relation에는 외래키가 여러개일 수도 있음, 외래키 속성은 null 값 일수도 있음.

 


 

무결성 제약조건 integrity constraint

- 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙 (무결성: 데이터를 결함이 없는 상태로 유지하는 것)

  • 개체 무결성 제약조건 : 기본키를 구성하는 모든 속성은 null 값을 가질 수 없다
  • 참조 무결성 제약조건 : 외래키는 참조할 수 없는 값을 가질 수 없다

 

1. 개체 무결성 제약조건

- 기본키를 구성하는 모든 속성은 null 값을 가질 수 없고, relation 안에서 중복되지 않는 유일한 값을 가져야 한다는 제약

- primary key constraint 라고도 함 (기본키 제약조건)

- 개체의 유일성을 선언하는 제약 조건

- DBMS에게 기본키를 선언함으로써 즉시 적용

 

2. 참조 무결성 제약조건

- 외래키는 참조할 수 없는 값을 가질 수 없는 규칙

- 외래키로 지정한 속성은 참조하는 relation의 기본키 속성값과 일치하는 값이나 null 값만을 가져야한다는 제약

- foreign key constraint 라고도 함 (외래키 제약조건)

- 개체의 참조관계를 선언하는 제약 조건

- DBMS에게 외래키를 선언함으로써 즉시 적용 (의미적으론 연관된 두 relation tuple 사이의 일관성 유지를 위해 사용)

- 외래키 속성이 null 값을 가진다고 해서 참조 무결성 제약조건을 위반하는 것은 아님

 

+ 도메인 무결성 제약조건

- tuple의 모든 속성 값이 각 속성의 도메인에 속한 값만을 취해야 한다는 제약 사항

 

+ 유일성 제약조건

- 모든 키 속성 값이 서로 중복되지 않고 유일해야한다는 제약사항

 

 

데이터 무결성을 유지하는 2가지 구현방식

  • 개별 응용 프로그램 안에 코드를 추가하여 구현
  • DBMS 안의 무결성 제약 조건을 설정하여 구현

 

 


 

관계연산 relation operation

- 관계형 데이터 모델에서 relation을 조작하기 위한 연산

- 관계형 데이터베이서 언어의 명세 형식, 내부 처리과정과 밀접한 연관성 있음

 

관계연산 2가지 표현방법

  • 관계 대수 relation algebra : 절차적 표현방법 procedural (연산들의 적용 순서, 절차를 명세)
  • 관계 해석 relation calculus : 비절차적 표현방법 nonprocedural / 선언적 declarative (연산들의 최종 결과만 명세)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!