BlueHarmel
BlueHarmel Devlog
BlueHarmel
전체 방문자
오늘
어제

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (330)
    • Book (11)
    • Dev (29)
      • ArtCon (0)
      • ESTsoft 오르미 (29)
    • Study (290)
      • Web (18)
      • AWS (2)
      • 알고리즘 (1)
      • GameDev (1)
      • 정보처리기사 (201)
      • English (1)
      • Mathematics (24)
      • 머신러닝 (7)
      • 딥러닝 (10)
      • 네트워크 보안 (5)
      • R (4)
      • 컴퓨터 네트워크 (6)
      • 데이터베이스 (8)
      • 데이터 통신 (0)
      • 운영체제 (2)
      • TIL (0)
    • Project (0)
      • 개인 (0)
      • 단체 (0)

인기 글

hELLO · Designed By 정상우.
BlueHarmel

BlueHarmel Devlog

데이터베이스 4. 관계 데이터베이스
Study/데이터베이스

데이터베이스 4. 관계 데이터베이스

2023. 10. 16. 13:42

1. 관계 데이터 모델

- 관계 데이터베이스의 기반

- 수학의 릴레이션과 집합 이론에 기초한다

- 테이블 : Relation

- 테이블의 열 : attribute 

- 테이블의 행 : tuple

 

애트리뷰트와 도메인

- 도메인 : 애트리뷰트가 취할 수 있는 값들의 집합 (학년 : {1,2,3,4} / {x | 1<=x<=4})

1. 단순 도메인 : 단순 애트리뷰트 : 원자 값

2. 복합 도메인 : 복합 애트리뷰트 : 복합 값 (연, 월, 일 => 날짜 : <연,월,일>)

- 애트리뷰트 : 도메인의 역할 이름 / 한 릴레이션 내에서 애트리뷰트 이름들은 모두 달라야 한다.

 

애트리뷰트 이름과 도메인 이름은 같을 수도 있다. (역할 이름을 도메인 이름으로 지정)

2. 릴레이션의 개념

DCL : Declare (선언)

릴레이션 스키마 : 릴레이션 내포(relation intension) / 릴레이션 스킴(relation scheme) 릴레이션 타입..

- 한 릴레이션의 논리적 구조를 정의 

- 정의 자체이므로 시간에 따라 변하지 않는 정적인 성질

릴레이션 인스턴스 : 릴레이션 외연 (relation extension), 릴레이션 값(보통 릴레이)

- 어느 한 시점에서 릴레이션의 내용(상태), 즉 투플 전체

- 삽입, 삭제, 갱신으로 시간에 따라 내용이 변하는 동적 성질

관계 데이터 모델은 DB를 구성하는 개체나 관계를 모두 릴레이션이란 한가지 방법으로 표현한다.

1. 개체 릴레이션 : entity를 표현하는 릴레이션

2. 관계 릴레이션 : relationship을 표현하는 릴레이션

 

릴레이션 R:

수학적 정의

- 릴레이션 R : 카티션 프로덕트의 부분집합 

- 릴레이션 R의 정의에서 사용된 도메인(애트리뷰트)의 개수 : 릴레이션의 차수(n)

- 릴레이션에 포함되어있는 튜플의 수 : 카디널리티(cardinality)

- cardinality는 시간에 따라 변하지만, 차수는 그대로 유지된다.

3. 릴레이션의 특성

1. 튜플의 유일성 : 

- 릴레이션 = 튜플의 집합("set") : 따라서 두개의 똑같은 튜플은 한 릴레이션에 포함될 수 없다.

2. 튜플의 무순서성 : 

- 릴레이션 : 튜플들의 집합이기 때문에 하나의 릴레이션을 순서만 바꾼다고 해도 같은 릴레이션이다.

- 테이블 : 릴레이션을 외부로 기술하는 하나의 구체적 표현

3. 애트리뷰트의 무순서성 : 

- 릴레이션 스키마 => 애트리뷰트들의 집합("set") 따라서 순서가 없다.

- 튜플 : <attribute : value> 쌍의 집합

4. 애트리뷰트의 원자성 : 

- 애트리뷰트 값은 원자값 : 논리적으로 더 이상 분해 불가능한 처리상의 단위 값(unit value)

- 정규화 릴레이션 :

1. 애트리뷰트 값으로 원자 값만 허용되는 릴레이션 (반복 그룹(값의 집합)을 허용하지 않는다.)

2. 비정규화 릴레이션은 분해를 통해 정규화

3. 동등한 의미를 유지

- 널값(Null value)도 원자 값으로 취급 : unknown, inapplicable

- 도메인 : 

1. 단순 도메인 : 

2. 복합 도메인 : 의미상 값을 하나의 단위로 취급

정규화 : 비정규화 릴레이션을 분해를 통해 원자 값을 갖는 애트리뷰트들로 만드는 것.

관계 데이터 모델에서 정규화 릴레이션만 취급하는 이유 : 구조적으로 간단하고 조작이 간단해서 데이터의 관리가 용이하다.

4. 관계 데이터베이스 개념

1. 관계 데이터베이스 :

- 테이블들의 집합 / 관계 데이터베이스 스키마에 정의된 릴레이션 인스턴스들의 집합

- 데이터베이스를 시간에 따라 그 내용(상태)이 변할 수 있는 테이블 형태로 표현

2. 관계 데이터베이스 스키마 = {릴레이션 스키마} + {무결성 제약조건}

3. 관계 데이터 모델 <=> 프로그래밍 시스템

- 릴레이션 <=> 파일

- 튜플 <=> 레코드 (레코드 어커런스)

- 애트리뷰트 <=> 필드(필드 타입)

※관계 데이터베이스라고 할 때, 데이터가 물리적 테이블 형태로 저장된다는 것을 의미하지 않음

5. 데이터베이스 키

- 키 : 각 튜플을 유일하게 식별할 수 있는 애트리뷰트 집합

 

1. 후보키 : 릴레이션 R(A1,A2,A3,...,An)에 대한 애트리뷰트 집합, K({ Ai,Aj,Ak,...,Ah})로서 다음의 두 성질을 만족

- 유일성 : 각 튜플에 대해 K의 값(<vi,vj,...,vk>)은 유일

- 최소성 : K는 각 튜플을 유일하게 식별하는데 꼭 필요한 애트리뷰트만 포함 (학번 / 주민 번호)

2. 슈퍼키 : 유일성은 만족하지만 최소성은 만족하지 않는 애트리뷰트의 집합

3. 기본키 : 후보키 중에서 DBA가 지정한 하나의 키

- 각 튜플에 대한 기본 키 값들은 항상 유효한 값이어야 한다.(NULL값이 허용되지 않음)

4. 대체키 : 후보 키 중에서 기본키를 제외한 나머지 후보 키

5. 외래키 : 릴레이션 R의 애트리뷰트 집합 FK가 릴레이션 S의 기본 키일 때, 이 FK는 R의 외래 키이다.

- FK의 도메인 = S의 기본키의 도메인

- FK의 값은 S에 존재하는 값이거나 NULL

- R과 S가 같은 릴레이션일 수도 있음

- R을 참조 릴레이션, S를 피참조 릴레이션이라고 한다. (릴레이션 R은 FK를 통해 릴레이션 S를 참조)

 

- R != S 인 경우

- R == S 인 경우

6. 무결성 제약

1. 개체 무결성 : 기본키 값은 언제 어느때고 NULL 값을 가질 수 없다.

2. 참조 무결성 : 외래 키 값은 반드시 피 참조 릴레이션의 기본키 값이거나 NULL이다.

- null 값 : 정보 부재를 명시적으로 표현하는 특수한 데이터 값

1. 알려지지 않은 값 (unknown value)

2. 해당 없음 (inapplicable)

- 이 무결성 제약조건은 데이터베이스 상태가 항상 만족시켜야 될 제약조건이다.

 

데이터베이스 상태- 어느 한 시점에 데이터베이스에 저장되어 있는 모든 데이터 값(튜플)- 데이터베이스 인스턴스-- 데이터베이스 스키마에 포함되어있는 모든 릴레이션들의 인스턴스 집합- 데이터베이스 상태의 계속적인 변화-- 삽입, 삭제, 변경 연산

 

- DBMS는 데이터베이스 상태의 변화에도 항상 무결성 제약을 만족시키도록 해야한다.

저작자표시 비영리 변경금지 (새창열림)

'Study > 데이터베이스' 카테고리의 다른 글

데이터베이스 6. SQL  (0) 2023.10.22
데이터베이스 5. 관계대수와 관계해석  (0) 2023.10.22
데이터베이스 3. 데이터베이스 시스템의 구성  (0) 2023.10.15
데이터베이스 2. 데이터베이스 관리 시스템과 구성  (0) 2023.10.15
데이터베이스 1. 데이타베이스 환경  (0) 2023.09.18
    BlueHarmel
    BlueHarmel
    Interested in Mathematics, Foreign Language, and "Programming"

    티스토리툴바