데이터 모델, 연산

Oak_Cassia·2023년 4월 11일
0

데이터베이스

목록 보기
2/6

데이터 모델링

데이터 모델링의 정의

  • 현실 세계 데이터 변환 과정
  • 개념적 및 논리적 모델링 포함

데이터 모델링 도구

  • 개념적 및 논리적 데이터 모델 생성
  • 데이터 구조, 연산, 제약조건 고려하여 모델 작성

개체 관계 모델

  • 개체 (Entity): 저장할 만한 가치가 있는 중요 데이터를 가진 대상

    • 개체 타입: 동일한 속성 및 구조를 갖는 개체들의 집합
    • 개체 인스턴스: 개체 타입의 개별 구성원, 각각의 실체
    • 개체 집합: 동일한 개체 타입에 속하는 개체 인스턴스의 모임
  • 속성 (Attribute): 개체의 고유한 특성을 나타내는 요소

    • 단일 값 속성: 개체의 속성이 하나의 값을 가지는 경우
    • 다중값 속성: 개체의 속성이 여러 개의 값을 가지는 경우
    • 단순 속성: 더 이상 세분화할 수 없는 기본 속성
    • 복합속성: 여러 개의 단순 속성으로 구성된 속성
    • 유도 속성: 다른 속성에서 파생되는 속성, 직접 저장되지 않고 필요할 때 계산
    • 널 속성: 값을 가지지 않거나 알려지지 않은 값을 가지는 속성
  • 키 속성 (Key Attribute): 각 개체 인스턴스를 식별하는 데 사용되는 속성으로, 모든 개체 인스턴스의 키 속성 값이 서로 다르다.

관계 (Relationship)

  • 개체와 개체 사이의 의미 있는 연결
  • 관계 타입: 동일한 속성 및 구조를 갖는 관계들의 집합
  • 관계 인스턴스: 개별 관계를 나타냄
  • 관계 속성: 관계의 고유한 특성을 나타내는 요소 (예: 구매일자, 결제방식)
  • 다이어그램에서 마름모로 표현

관계의 유형

  • 이항 관계: 두 개체 사이의 관계
  • 삼항 관계: 세 개체 사이의 관계
  • 순환 관계: 같은 개체 타입 내의 개체들 사이의 관계

매핑 카디널리티

  • 일대일 관계: 하나의 개체 인스턴스가 다른 개체 인스턴스와 한 번만 연결
  • 일대다 관계: 하나의 개체 인스턴스가 여러 개체의 인스턴스와 연결
  • 다대다 관계: 여러 개체 인스턴스가 서로 여러 번 연결될 수 있음

관계 참여 특성

  • 필수적 참여 (전체 참여): 개체가 관계에 반드시 참여
  • 선택적 참여 (부분 참여): 개체가 관계에 참여하지 않을 수 있음

관계의 종속성

  • 존재 종속: 개체 B가 개체 A의 존재 여부에 의존
    • 약한 개체: 종속된 개체
    • 오너 개체: 다른 개체의 존재를 결정하는 개체
    • 구별자 (부분키): 약한 개체를 구별하는 속성
      • 자신만의 속성으로 식별이 어려워 오너개체의 키 포함

논리적 데이터 모델의 종류:

  • 계층 데이터 모델: 트리 형태의 구조를 가진 데이터 모델, 상위 노드와 하위 노드 간의 일대다 관계 표현
  • 네트워크 데이터 모델: 그래프 또는 네트워크 형태의 구조를 가진 데이터 모델, 노드 간에 다대다 관계 표현
  • 관계 데이터 모델: 테이블 형태의 구조를 사용하여 데이터를 표현, 키를 사용하여 데이터 간의 연결을 관리하는 데이터 모델
  • 객체-관계 데이터 모델: 객체 지향 프로그래밍의 개념을 데이터 모델에 도입한 모델, 객체와 클래스를 사용하여 데이터를 표현, 상속과 다형성 등의 객체 지향 기능 제공

관계 데이터 모델

관계 데이터 모델 (Relational Data Model)

  • 데이터를 2차원 테이블 형태인 릴레이션에 저장하는 데이터 모델
  • 데이터 간의 관계를 표현하기 용이함

속성 (Attribute)

  • 릴레이션의 열로, 개체의 특성을 나타냄
  • 예: 학생 릴레이션에서 '이름', '학번', '학과' 등

튜플 (Tuple)

  • 릴레이션의 행으로, 개체의 인스턴스를 나타냄
  • 예: 학생 릴레이션에서 '홍길동', '20190001', '컴퓨터공학과'를 가진 한 행

도메인 (Domain)

  • 속성이 가질 수 있는 값의 범위 또는 집합
  • 예: '성별' 속성의 도메인은 {'남성', '여성'}

널 값 (NULL)

  • 속성 값이 없거나 알 수 없는 경우 사용하는 특별한 값
  • 예: 전화번호가 없는 학생의 전화번호 속성에 NULL 값 할당

차수 (Degree)

  • 릴레이션에서 속성의 전체 개수
  • 예: 학생 릴레이션의 속성이 '이름', '학번', '학과' 일 경우 차수는 3

카디널리티 (Cardinality)

  • 릴레이션의 튜플 전체 개수
  • 예: 학생 릴레이션에 100명의 학생 튜플이 있다면 카디널리티는 100

릴레이션 스키마 (Relation Schema)

  • 릴레이션의 논리적 구조로, 릴레이션 이름과 포함된 모든 속성의 이름으로 정의됨
  • 예: 학생(이름, 학번, 학과)

릴레이션 인스턴스 (Relation Instance)

  • 릴레이션에 존재하는 튜플들의 집합
  • 시간에 따라 변할 수 있음

데이터베이스 스키마 (Database Schema)

  • 데이터베이스 내의 모든 릴레이션들의 스키마를 모아둔 것
  • 데이터베이스의 구조를 정의함

데이터베이스 인스턴스 (Database Instance)

  • 저장된 데이터 내용의 전체 집합
  • 시간에 따라 변할 수 있음

릴레이션의 특성

  • 튜플의 유일성: 하나의 릴레이션에 동일한 튜플이 존재할 수 없음
  • 튜플의 무순서: 릴레이션 내 튜플의 순서는 무의미함
  • 속성의 무순서: 릴레이션 내 속성의 순서는 무의미함
  • 속성의 원자성: 속성 값으로 원자 값만 사용할 수 있음 (더 이상 분해할 수 없는 값)

키의 종류

  • 수퍼키 (Superkey): 유일성을 만족하는 속성 또는 속성들의 집합
  • 후보키 (Candidate Key): 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
  • 기본키 (Primary Key): 후보키 중 선택된 하나의 키로, 튜플을 유일하게 구별하는 역할
  • 대체키 (Alternate Key): 기본키로 선택되지 못한 후보키
  • 외래키 (Foreign Key): 다른 릴레이션의 기본키를 참조하는 속성 또는 속성 집합

관계 데이터 모델의 제약

  • 무결성 제약조건: 데이터의 정확성과 일관성을 보장하기 위한 제약 사항
  • 개체 무결성 제약조건: 기본키를 구성하는 모든 속성은 널 값을 가질 수 없음
  • 참조 무결성 제약조건: 외래키는 참조할 수 없는 값을 가질 수 없음 (참조하는 기본키 값과 일치해야 함)

관계 데이터 연산

집합 연산

합집합 (Union, ∪)

  • 두 릴레이션의 모든 튜플을 합친 결과 반환
  • 예: RSR ∪ S

교집합 (Intersection, ∩)

  • 두 릴레이션에서 공통된 튜플만을 반환
  • 예: RSR ∩ S

차집합 (Difference, -)

  • 한 릴레이션에서 다른 릴레이션의 튜플을 제외한 결과 반환
  • 예: RSR - S

관계 대수 연산

선택 (Selection, σ)

  • 주어진 조건을 만족하는 튜플 반환
  • 예: σage>30(R)σ_{age > 30} (R)

프로젝션 (Projection, π)

  • 주어진 속성을 갖는 튜플의 부분 집합 반환
  • 예: πname,age(R)π_{name, age} (R)

카티션 곱 (Cartesian Product, ×)

  • 두 릴레이션의 모든 튜플 조합 반환
  • 예: R×SR × S

조인 (Join, ⨝)

  • 두 릴레이션을 결합하여, 주어진 조건을 만족하는 튜플들의 집합 반환

내부 조인 (Inner Join)

  • 두 릴레이션에서 조건을 만족하는 튜플만을 반환
  • 예: RR.id=S.idSR ⨝_{R.id = S.id} S

외부 조인 (Outer Join)

  • 조건을 만족하지 않는 튜플도 포함하여 결과를 반환

    • 왼쪽 외부 조인 (Left Outer Join, ⟕)
      • 왼쪽 릴레이션의 모든 튜플과, 조건을 만족하는 오른쪽 릴레이션의 튜플을 반환
      • 예 : RR.id=S.idSR ⟕_{R.id = S.id} S
    • 오른쪽 외부 조인 (Right Outer Join, ⟖)
      • 오른쪽 릴레이션의 모든 튜플과, 조건을 만족하는 왼쪽 릴레이션의 튜플 반환
      • 예: RR.id=S.idSR ⟖_{R.id = S.id} S
    • 완전 외부 조인 (Full Outer Join, ⟗)
      • 두 릴레이션의 모든 튜플을 반환
      • 조건을 만족하지 않는 튜플은 널 값
      • 예: RR.id=S.idSR ⟗_{R.id = S.id} S
profile
rust로 뭐할까

0개의 댓글