데이터베이스 모델과 연산

2025. 4. 12. 16:21·Study/DateBase
반응형

데이터 모델링

데이터 모델링(data modeling): 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정

 

2단계 데이터 모델링

① 개념적 데이터 모델링(conceptual modeling): 현실 세계의 중요 데이터 추출 → 데이터베이스의 개념적 구조로 표현하는 작업

② 논리적 데이터 모델링(logical modeling): 개념 세계의 데이터 → 데이터베이스에 저장하는 구조로 표현하는 작업

 

데이터 모델(date model): 데이터 모델링의 결과물을 표현하는 도구

데이터 모델의 구성 요소:

  • 데이터 구조(data structure);개념적 구조와 논리적 구조
  • 데이터 구조에서 처리 가능한 연산(operation)
  • 데이터 구조와 연산에 대한 제약조건(constraint)

① 개념적 데이터 모델: 개체-관계 모델

② 논리적 데이터 모델: 관계 데이터 모델

 

개체-관계 모델(E-R model; Entity-Relationship model)

피터 첸이 제안한 개념적 데이터 모델

개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현

 

개체

개체(entity): 현실 세계에서 조직을 운영하는 데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것.

저장할 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물, 사건, 개념 등 다른 개체와 구별되는 이름을 가지고 있고, 속성(각 개체만의 고유한 특성이나 상태)을 하나 이상 가지고 있음

파일 구조의 레코드(record)와 대응됨

 

속성(attribute): 개체나 관계가 가지고 있는 고유 특성. 의미 있는 데이터의 가장 작은 논리적 단위

파일 구조의 필드(field)와 대응됨

 

개체 타입(entity type): 개체를 고유의 이름과 속성으로 정의한 것.

파일 구조의 레코드 타입(record type)에 대응됨

 

개체 인스턴스(entity instance): 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체

= 개체 어커런스(entity occurrence)

파일 구조의 레코드 인스턴스(record instance)에 대응됨

 

개체 집합(entity set): 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것

 

속성의 분류

속성 값의 개수

단일 값 속성(single-valued): 값을 하나만 가질 수 있는 속성. ex. 고객 개체의 이름, 적립금 속성

다중 값 속성(multi-valued): 값을 여러 개 가질 수 있는 속성. ex. 고객 개체의 연락처 속성, 책 개체의 저자 속성

 

의미의 분해 가능성

단순 속성(simple): 의미를 더는 분해할 수 없는 속성. ex. 고객 개체의 적립금 속성

복합 속성(composite): 의미를 분해할 수 있는 속성. ex. 고객 개체의 주소 속성, 생년월일 속성

 

기존 속성 값에서 유도

유도 속성(derived): 기존의 다른 속성의 값에서 유도되어 결정되는 속성. 값이 별도로 저장X

ex. 고객 개체의 출생연도 속성으로 계산되는 나이 속성

 

널 속성(null): 널 값이 허용되는 속성

* 널(null)값: 아직 결정되지 않았거나 모르는 값 또는 존재하지 않는 값. 공백이나 0과는 다른 의미.

 

키 속성(key): 각 개체 인스턴스를 식별하는 데 사용되는 속성.

모든 개체 인스턴스마다 다르며, 둘 이상의 속성들로 구성되기도 함

 

관계

관계(relationship): 개체와 개체가 맺고 있는 의미 있는 연관성. 개체 집합들 사이의 대응 관계 = 매핑(mapping)을 의미.

ex. 고객 개체와 책 개제 간의 구매 관계

 

관계의 유형: 관계에 참여하는 개체 타입의 수 기준

순환 관계(1진 관계): 개체 타입 하나가 자기 자신과 맺는 관계

이항 관계(2진 관계): 개체 타입 두 개가 맺는 관계

삼항 관계(3진 관계): 개체 타입 세 개가 맺는 관계

 

관계 대응수(mapping cradinality): 두 개체 타입의 관계에 실제로 참여하는 개별 개체(인스턴스) 수

관계의 유형: 일대일(1:1) 관계, 일대다(1:n) 관계, 다대일(n:1) 관계, 다대다(n:m) 관계(매핑 카디널리티 기준)

 

관계의 참여 특성

필수적 참여(전체 참여): 모든 개체 인스턴스가 반드시 참여

선택적 참여(부분 참여): 개체 인스턴스 중 일부만 관계에 참여해도 됨

 

관계의 종속성

약한 개체(weak entity): 다른 개체의 존재 여부에 의존적인 개체

강한 개체(strong entity): 다른 개체의 존재 여부를 결정하는 개체

* 일반적으로 강한 개체와 약한 개체는 일대다 관계, 약한 개체는 강한 개체와의 관계에 필수적 참여

* 약한 개체는 강한 개체의 키를 포함하여 키 구성

 

E-R 다이어그램

개체-관계 다이어그램(E-R diagram): 개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것

 

개체: 사각형으로 표현

약한 개체: 이중 사각형으로 표현

속성: 타원으로 표현

다중 값 속성: 이중 타원으로 표현

복합 속성: 세분화된 속성을 표현

유도 속성: 점선 타원으로 표현

키 속성: 밑줄로 표현

관계: 마름모로 표현

약한 개체가 강한 개체와 맺는 관계: 이중 마름모로 표현

관계의 필수적 참여 특성: 이중선으로 표현

 

IE 표기법

 

 

논리적 데이터 모델

: E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조

사용자가 생각하는 데이터베이스의 모습 또는 구조

* 데이터베이스의 논리적 구조 = 데이터베이스 스키마

 

1) 관계 데이터 모델

일반적으로 많이 사용됨

DB 논리적 구조가 2차원 테이블 형태

 

2) 계층 데이터 모델

DB의 논리적 구조가 트리 형태

루트 역할을 하는 개체가 존재하고, 사이클이 없음

개체 간 상하 관계 성립: 부모/자식(일대다 관계만 허용)

두 개체 사이 하나의 관계만 정의

다대다 관계를 직접 표현할 수 없음

개념적 구조를 모델링하기 어려움 → 구조 복잡해질 수 있음

데이터 삽입,삭제,수정,검색이 쉽지 않음

 

3) 네트워크 데이터 모델

DB의 논리적 구조가 네트워크, 즉 그래프 형태

개체 간 일대다 관계만 허용(오너/멤버)

두 개체 사이에 여러 관계 정의 가능 → 이름으로 구별

다대다 관계를 직접 표현할 수 없음

구조가 복잡하고 데이터의 삽입,삭제,수정,검색이 쉽지 않음


관계 데이터 모델

개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델

하나의 개체에 대한 데이터를 하나의 릴레이션에 저장

 

릴레이션(relation)

하나의 개체에 관한 데이터를 행과 열로 구성된 2차원 테이블의 구조로 저장한 것.

파일 관리 시스템 관점의 파일(file).

릴레이션 내에서 생성되는 관계 → 릴레이션 내 데이터들의 관계

릴레이션 간에 생성되는 관계 → 릴레이션 간의 관계

 

릴레이션의 구성

릴레이션 스키마(relation schema): 릴레이션의 논리적 구조 (=relation intension, 내포)

  • 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의
  • 정적인 특징
  • 속성(attribute): 릴레이션의 열. 파일 관리 시스템 관점에서의 필드(field).
  • 도메인(domain): 하나의 속성이 가질 수 있는 모든 값의 집합. 속성 값을 입력 및 수정할 때 적합성 판단의 기준이 됨. 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의.
  • 차수(degree): 하나의 릴레이션에서 속성의 전체 개수

릴레이션 인스턴스(relation instance): 어느 한 시점에 릴레이션에 존재하는 투플들의 집합 (=relation extension).

  • 동적인 특징
  • 투플(tuple): 릴레이션의 행. 파일 관리 시스템 관점에서의 레코드(record).
  • 카디널리티(cradinality): 하나의 릴레이션에서 투플의 전체 개수

 

데이터베이스의 구성

데이터베이스 스키마(database schema): DB의 전체 구조. DB를 구성하는 릴레이션 스키마의 모음

데이터베이스 인스턴스(database instance): DB를 구성하는 릴레이션 인스턴스의 모음

 

릴레이션의 특성

  • 투플의 유일성: 하나의 릴레이션에는 동일 투플 존재 불가
  • 투플의 무순서: 하나의 릴레이션에는 투플 사이의 순서 무의미
  • 속성의 무순서: 하나의 릴레이션에서 속성 사이의 순서 무의미
  • 속성의 원자성: 속성 값으로 원자 값만 사용 가능

 

키(key)

: 릴레이션에서 투플들을 유일하게 구별하는 속성 또는 속성들의 집합. 특정 투플을 식별할 때 사용

중복된 투플 비허용 → 각각의 투플에 포함된 속성들 중 키가 되는 속성 하나 이상은 반드시 값이 달라야 함.

키는 릴레이션 간 관계를 맺는 데에도 사용

 

키의 특성

  • 유일성(uniqueness): 하나의 릴레이션에서 모든 투플은 서로 다른 키 값을 가져야 함
  • 최소성(minimality): 꼭 필요한 최소한의 속성들로만 키를 구성함

 

키의 종류

① 슈퍼키(super key): 유일성을 만족하는 속성 또는 속성들의 집합

② 후보키(candidate key): 유일성과 최소성을 만족하는 속성 또는 속성들의 집합

③ 기본키(primary key): 후보키 중에서 기본적으로 사용하기 위해 선택한 키

    고유한 값을 가져야 함(Null값 비허용, 적은 변동성), 최소한의 속성만 가져야 함, 향후 키를 사용하는 데 문제 발생 소지가 없어야 함. 릴레이션 스키마 표시 시 밑줄 그어 표시.

④ 대체키(alternate key): 기본키로 선택되지 못한 후보키

⑤ 외래키(foreign key): 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합.

    릴레이션들 간의 관계 표현(참조 관계; 참조되는 릴레이션은 외래키가 참조하는 기본키를 가진 릴레이션)

    릴레이션 내 기본키를 참조하는 외래키도 정의 가능.

    널 값을 가질 수도 있음!

 

관계 데이터 모델의 제약

무결성 제약조건(integrity constraint)

데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙

* 무결성: 데이터 결함이 없는 상태. 정확하고 유효하게 유지되는 것.

  • 개체 무결성 제약조건(=기본키 제약): 기본키는 Null값을 가져서는 안 되며 릴레이션 내 오직 하나의 값만 존재해야 함.
    • 삽입: 기본키 값이 같으면 삽입이 금지됨
    • 수정: 기본키 값이 같거나 NULL로 수정이 금지됨
    • 삭제: 특별한 확인 필요 없이 즉시 수행
  • 참조 무결성 제약조건(=외래키 제약): 릴레이션 간 참조 관계 선언.
    • 외래키는 참조할 수 없는 값을 가질 수 없음. 즉 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 함.
    • 제약조건 검사할 필요가 있는 항목: 외래키의 삽입, 수정 / 참조되는 기본키의 삭제, 수정
    • 자식 릴레이션의 값 변경 시 부모 릴레이션의 제약을 받음
    • 부모 릴레이션의 삭제 시 참조하는 테이블을 같이 삭제할 수 있어서 금지 또는 자식 릴레이션 관련 투플을 삭제하거나 초기 값으로 변경해둔 뒤 삭제해야 함
    • 수정: 삭제 후 삽입으로 진행

  • 도메인 무결성 제약조건(=도메인 제약): 릴레이션 내 투플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건. SQL문에서 데이터 형식(type), 널(null/not null), 기본 값(default), 체크(check) 등을 사용하여 지정 가능.

관계 데이터 연산

관계 데이터 연산(relational data operation): 관계 데이터 모델의 연산. 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것.

  • 관계 대수: 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술
  • 관계 해석: 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술

→ 데이터 언어의 유용성을 검증하는 기준

관계 대수나 관계 해석으로 기술할 수 있는 모든 질의(query, 데이터에 대한 처리 요구)를 기술할 수 있는 데이터 언어는 관계적으로 완전하다고 판단함

 

관계 대수(relational algebra)

원하는 결과를 얻기 위해 릴레이션의 처리 과정을 순서대로 기술; 절차 언어(procedural language)

릴레이션을 처리하는 연산자들의 모임

폐쇄 특성(closure property)이 존재함: 피연산자, 연산의 결과 모두 릴레이션임

 

일반 집합 연산자(set operation)

릴레이션의 투플이 집합이라는 개념을 이용하는 연산자

피연산자(릴레이션) 2개로 연산 수행

합집합, 교집합, 차집합은 피연산자인 두 릴레이션이 합병 가능해야 함

→ 차수가 같고 서로 대응되는 속성의 도메인이 같아야 함

① 합집합(Union)

릴레이션 R에 속하거나 S에 속하는 모들 투플로 결과 릴레이션 구성

교환적, 결합적 특징이 있음

결과 릴레이션의 특성

  • 차수 = 두 릴레이션의 차수
  • 카디널리티 = 두 릴레이션의 카디널리티를 더한 것과 같거나 적어짐

 

② 교집합(intersection)

두 릴레이션에 공통으로 속하는 투플로 결과 릴레이션 구성

교환적, 결합적 특징이 있음

결과 릴레이션의 특성

  • 차수 = 두 릴레이션의 차수
  • 카디널리티 = 두 릴레이션의 어떤 카디널리티보다 크지 않음

 

③ 차집합(difference)

릴레이션 R에는 존재하지만 릴레이션 S에는 존재하지 않는 투플로 결과 릴레이션 구성

교환적, 결합적 특징 없음

결과 릴레이션의 특성

  • 차수 = 두 릴레이션의 차수
  • R-S의 카디널리티 = 릴레이션 R의 카디널리티와 같거나 적음
  • S-R의 카디널리티 = 릴레이션 S의 카디널리티와 같거나 적음

 

④ 카티션 프로덕트(cartesian product)
릴레이션 R에 속한 각 투플과 릴레이션 S에 속한 각 투플을 모두 연결하여 만들어진 새로운 투플로 결과 릴레이션 구성

교환적, 결합적 특징이 있음

결과 릴레이션의 특성

  • 차수 = 릴레이션 R과 S의 차수를 더한 것
  • 카디널리티 = 릴레이션 R과 S의 카디널리티를 곱한 것

 

순수 관계 연산자(relational operation)

릴레이션의 구조와 특성을 이용하는 연산자

 

⑤ 셀렉트(select) 또는 셀렉션(selection)

릴레이션에서 조건을 만족하는 투플만 선택하여 결과 릴레이션을 구성 → 릴레이션의 투플을 추출하기 위한 연산

하나의 릴레이션을 대상으로 연산 수행하는 단항 연산자

결과 릴레이션은 연산 대상 릴레이션의 수평적 부분집합

교환적 특징:  σ조건1( σ조건2(릴레이션)) = σ조건2( σ조건1(릴레이션)) = σ조건1∧조건2(릴레이션)

데이터 언어적 표현법: 릴레이션 where 조건식

조건식 = 비교식, 프레디킷(predicate): 속성과 상수의 비교나 속성들 간의 비교로 표현. 비교 연산자, 논리 연산자를 이용

 

⑥ 프로젝트(project) 또는 프로젝션(projection)

릴레이션에서 선택한 속성의 값으로 결과 릴레이션 구성

하나의 릴레이션 대상으로 속성을 추출하기 위한 단항 연산자

결과 릴레이션에서 동일한 투플은 중복되지 않고 한 번만 나타남

결과 릴레이션은 연산 대상 릴레이션의 수직적 부분집합

데이터 언어적 표현법: 릴레이션[속성리스트]

 

⑦ 조인(join)

조인 속성을 이용해 두 릴레이션을 조합하여 결과 릴레이션을 구성

조인 속성: 두 릴레이션이 공통으로 가지고 있는 속성

조인 속성 값이 같은 투플만 연결하여 생성된 투플을 결과 릴레이션에 포함

조인 연산의 구분: 기본 연산 - 세타조인, 동등조인, 자연조인 / 확장된 조인 연산 - 세미조인, 외부조인

기본 연산

세타 조인(θ-join); R⋈(r θ s)S

주어진 조인 조건을 만족하는 두 릴레이션의 모든 투플을 연결하여 생성된 투플로 결과 릴레이션을 구성

→ 조인에 참여한 속성이 조합되어 생략되지 않고 그냥 R과 S가 연결된 형태

결과 릴레이션의 차수 = 두 릴레이션 차수의 합

θ는 비교 연산자( =, ≠, <, ≤, >, ≥)를 의미

 

동등 조인(equi-join); R⋈(r=s)S

θ 연산자가 =인 세타 조인을 의미

 

자연 조인; R⋈N(r,s)S

동등조인에서 조인에 참여한 속성이 두 번 나오지 않도록 두번째 속성을 제거한 결과를 반환

 

확장 연산

세미 조인(semi-join); R⋉S

S를 조인 속성으로 프로젝트 연산 후, R에 자연 조인하여 결과 릴레이션을 구성

불필요한 속성을 미리 제거하여 조인 연산 비용을 줄이는 장점

교환적 특징 X

외부 조인(outer-join); R⋈+S

자연 조인 연산에서 제외되는 투플도 결과 릴레이션에 포함시키는 조인 → 두 릴레이션에 있는 모든 투플을 포함

자연조인 시 조인에 실패한 투플을 모두 보여주되, 값이 없는 대응 속성에는 NULL값을 채워 반환

모든 속성을 보여주는 기준 릴레이션 위치에 따라 왼쪽, 오른쪽, 완전(full, 양쪽) 외부조인으로 나뉨

왼쪽 외부 조인: R⟕(r,s)S = R⋈+S

완전 외부 조인: R⟗(r,s)S

오른쪽 외부 조인: R⟖(r,s)S

 

⑧ 디비전(division)

S의 모든 투플과 관련이 있는 R의 투플로 결과 릴레이션을 구성

S에 포함된 투플 값을 모두 갖고 있는 투플을 R에서 추출. 이때 S 속성은 제외하고 작성

단, R이 S의 모든 속성을 포함하고 있어야(=도메인이 같아야) 연산 가능

 

 

 

관계 해석(relational calculus)

처리를 원하는 데이터가 무엇인지만 기술하는 언어 - 비절차 언어(SQL)

수학의 프레디킷 해석(predicate calculs)에 기반

  • 투플 관계 해석
  • 도메인 관계 해석

 

 

 

 

출처: 데이터베이스 개론 2판 김연희 저, MySQL로 배우는 데이터베이스 개론과 실습 박우창 외2

 

반응형

'Study > DateBase' 카테고리의 다른 글

데이터베이스 언어 SQL  (2) 2025.05.25
데이터베이스 기초 이론  (2) 2025.04.12
'Study/DateBase' 카테고리의 다른 글
  • 데이터베이스 언어 SQL
  • 데이터베이스 기초 이론
harchiving
harchiving
Computer Science Engineering, undergraduate student
  • harchiving
    harchiving
    harchiving
  • 전체
    오늘
    어제
    • 분류 전체보기 (14)
      • Study (14)
        • JavaScript (6)
        • OS (5)
        • DateBase (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    모던자바스크립트딥다이브
    javascript
    OS
    OperatingSystem
    operatingsystemconcepts
    DB
    DATABASE
    운영체제
    js
    데이터모델
    데이터베이스
    프로그래밍
    SQL
    공룡책
    CS
    자바스크립트
    FE
    Datebase
    프론트엔드
    데이터베이스개론
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
harchiving
데이터베이스 모델과 연산
상단으로

티스토리툴바