[DB] 2. 데이터 모델

    DBMS의 역할

    정보 시스템에서 파일시스템을 대체하여, 데이터의 중복을 방지하고, 독립성, 일관성, 무결성을 보장. 

    또한, 데이터 관리, 재난 복구, 동시성 제어 등의 기능을 갖는다.

     

    데이터 모델링 : 현실 세계의 데이터를 -> 개념적 -> 논리적 모델링 단계를 거쳐 데이터베이스에 저장하는 구조로 표현하는 작업.

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

    개념적 데이터 모델 : E-R(Entity-Relation, 개체-관계) 모델로 나타낸다. 

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

     

    데이터 모델의 구성

    1. 연산, ex) CRUD..

    2. 데이터 구조, 데이터가 저장되는 형태

    3. 제약조건, 데이터 간의 만족해야할 조건

     

    1. 개념적 데이터 모델 : 현실 세계의 '중요 데이터를 추출'하는 작업 

        E-R Diagram을 이용해 나타낸다. 고객 = 구매 - 책 , Entity(고객, 책) 사이에 관계(구매)로  나타낸다.

    2. 논리적 데이터 모델 : DB에 저장할 형태로 표현한 논리적 구조, DB의 논리적 구조 == DB schema

        과거에는 node와 edge로 나타내는 계층, 네트워크 데이터 모델을 사용하여 표현. (1세대)

        현재는 관계 데이터 모델(2세대)을 가장 많이 사용.

        객체(3세대)와 관계 데이터 모델의 장점을 섞은 객체-관계 데이터 모델(3세대)도 사용

     

    1세대 : 포인터를 사용하여 관계를 표현. 

    2세대 : 속성 값 사용. 

    3세대 : object id를 사용. 데이터를 객체 단위로 본다.

        2세대와 3세대의 차이 : 2세대에서는 속성 값을 사용해서 해당 테이블의 내용을 조회하는 과정 필요.

                                            3세대는 객체단위로 생각. 테이블 내용을 바로 가져올 수 있다.

     

    1세대. 계층 데이터 모델(hierachical data model)

    - 트리 형태의 DB 논리적 구조.

    - 루트 역할을 하는 개체가 존재하고 사이클이 존재하지 않음

    - 개체 간에 상하 관계가 성립한다. 즉, 부모와 자식 개체는 일 대 다수의 관계만 허용된다.

    - 다대다 관계 표현이 불가능. 개념적 구조 모델링이 어렵고 데이터의 CRUD가 어렵다.

     

    1세대. 네트워크 데이터 모델

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

    - 개체 간에는 일 대 다수의 관계만 허용됨 (owner, member)

    - 두 개체 사이에 여러 관계가 정의 가능하다. 여러 관계는 이름으로 구별된다.

    - 마찬가지로 다대다 관계 표현이 불가능. 구조가 복잡하고 어렵고 데이터의 CRUD가 어렵다.

     

    2세대. 관계 데이터 모델 - by 에드가 코드

    - DB의 논리적 구조가 '2차원 테이블'(릴레이션) 형태, 즉 속성(attribute)과, 값(value)에 형태로 저장.

    - relation에 대한 제약조건과 관계 연산을 위한 관계대수(relational algebra) 정의.

    - relation : 행과 열로 구성된 테이블 

    - 관계 데이터 모델의 유래는 집합론의 관계대수(relation algebra)에서 기원.

     

    - 도메인(domain)

    1. 하나의 속성이 가질 수 있는 모든 값의 집합

    2. 속성 값을 입력 및 수정할 때 적합성 판단의 기준이 됨.

    3. 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의

     

    - relation의 구성

    relation schema - relation의 논리적 구조

    relation의 이름과 포함된 모든 속성 이름으로 정의, ex) 고객(고객아이디, 고객이름, 나이, 등급,  적립금)

    릴레이션 내포(relation intension)라고도 하며, 정적인 특징이 있음.

     

    - realation instance

    어느 한 시점에 릴레이션에 존재하는 튜플들의 집합.

    릴레이션 외연(relation extension)라고 하며, 동적인 특징이 있다.

     

    schema - DB에 저장되는 데이터 구조와 제약조건의 정의

    instance - 스키마에 따라 DB에 실제 저장된 값

     

    스키마의 요소

    속성(attribute) :  릴레이션 스키마의 열

    도메인 : 속성이 가질 수 있는 값의 집합

    차수(degree) : 속성의 개수

     

    인스턴스 요소

    투플(tuple) : 릴레이션의 행, 릴레이션 내의 모든 투플들은 서로 중복되지 않아야 한다.

    카디날리티(cadinality) : 투플의 수 

     

    릴레이션(구조 강조의 의미)과 테이블(데이터 강조의 의미를 가짐)은 같은 맥락으로 사용된다.

    릴레이션은 수합의 집합이론에 기초. 즉, 속성이나 인스턴스의 중복을 허용하지 않는다.

     

    릴레이션의 특성

    1. 속성은 단일 값을 가진다.

    2. 속성은 서로 다른 이름을 가진다.

    3. 한 속성의 값은 모두 같은 도메인 값을 가진다. - 한 속성에 속한 열은 모두 그 속성에서 정의한 도메인 값만을 가질 수 있다.

    4. 속성의 순서는 상관이 없다. - 속성의 순서가 달라도 스키마는 같음.

    5. 릴레이션 내의 중복된 투플은 허용하지 않는다. - 하나의 릴레이션 인스턴스 내에 모든 투플은 서로 값이 달라야 한다.

    6.  투플의 순서는 상관 없다. 순서가 달라도 같은 릴레이션이다. 관계 데이터모델의 투플은 데이터의 삽입, 삭제, 수정에 따라 순서가 뒤바뀔 수 있음

     

    DB의 구성

    데이터베이스 스키마 

    - DB의 전체 구조

    - DB를 구성하는 릴레이션 스키마의 모음

    데이터베이스 인스턴스 

    - DB를 구성하는 릴레이션 인스턴스의 모음

    '강의요약 > 데이터베이스' 카테고리의 다른 글

    [DB] 4. SQL  (0) 2023.04.04
    [DB] 3. 관계대수  (0) 2023.03.20
    [DB] 2.2 키(key)  (0) 2023.03.20
    [MySQL] 데이터베이스, DBMS  (0) 2023.03.07

    댓글