2 minute read

  • 관계 모델

    실제 세게의 데이터를 관계라는 개념을 사용해 표현한 데이터 모델

    • 데이터 모델

      ”~~라는 개념을 사용해 데이터를 표현해 주세요”라고 정의 하는 것

    수학의 집합론에 근거한 모델

    릴레이션(테이블)의 연산을 술어 논리로 표현할 수 있어야 함

    릴레이션 단위로 다양한 연산을 사용해 질의를 수행하는 데이터 모델

    SQL과 다른 개념

    RDB 에 직접 구현할 수 있도록 DB 구조 정의하는 방법 제공함. 테이블을 설계하는 과정으로 보면 되고 ER 다이어그램을 기반으로 작업하는 것이 순서

    릴레이션의 관계를 표현 하는 것

    • 릴레이션 (Relation)

      개체를 표현하기 위한 데이터 구조

      2차원 테이블로 표현

      heading(스키마), body(본체)로 구성

      SQL 의 테이블에 대응됨

      • heading

        속성이 n개가 모인 집합

        이름, 데이터형으로 구성됨

      • body

        속성 값의 집합인 튜블의 집합

    • 튜플

      하나의 개체를 의미

      Relation에서 행으로 표현하며 이를 릴레이션 상태(Relation State)라고도 함

      각 튜플은 유일해야 한다는 특징이 있음

      SQL의 row와 대응됨

    • 애트리뷰트

      개체의 속성들을 의미

      Relation에서 열로 표현

      SQL 의 column과 대응

  • 제약 조건

    관계 모델이 정의되기 위한 조건

    1. 무결성 제약 조건

      한 객체에 저장되는 데이터를 제한하는 조건

      • 도메인 제약 조건

        각 튜플의 애트리뷰트는 도메인에 속하는 값이어야 함

      • 엔티티 무결성 제약 조건

        기본 키 값은 NULL이 될 수 없음

      • 참조 무결성 제약 조건

        어떤 릴레이션 A의 튜플이 다른 릴레이션 B의 튜플을 참조하려면, 참조하려는 그 튜플은 B릴레이션 내에 존재해야 함

        외래 키(Foreign key)는 참조 무결성 제약 조건을 만족해야 함

    2. 키 제약 조건

      서로 다른 튜플은 동일한 키 애트리뷰트를 갖지 않아야 한다는 조건

  • ER 모델을 관계 모델로 변환

    개념적 설계인 ER 모델을 논리적 설계인 관계 모델로 바꾸는 방법

    ER 모델을 Relation모델로 변환할 떄의 주의점, 두 Entity간의 관계성에 다라 릴레이션의 수를 줄일 수 있는 방법

    릴레이션이 많아지는 것은 연산지 복잡해진다는 것을 의미하기 때문에 릴레이션의 수를 줄이는 것이 좋음

    Attribute에 따라, Relationship에 조금 다른 방법 적용 되는데 이 부분 주의해서 모델 작성 해야 리소스 낭비 초래 방지됨

    • Relation Type

      두 Entity의 primary key를 Attribute로 하는 하나의 릴레이션으로 만들 수 있음

    1. 일반적인 변환

      하나의 Entity는 한 개의 Relation으로 대응

      Entity가 가지고 있는 Attribute들은 Relation의 Attribute로 대응

      Relation Entity인 Takes역시 하나의 Relation으로 표현

    2. 복합 Attribute

      복합 Attribute를 구성하고 있는 독립된 Attribute들을 나눠서 관계 모델의 Attribute로 작성함

    3. 약한 개체

      약한 개체를 독립된 Relation으로 작성해야 함

    4. 유도된 Attribute

      유도된 Attribute는 Relation모델에서 생랴됨

    5. 다중값 Attribute

      다중값 Attribute 의 각 Attribute값들은 Relation에서 하나의 튜플이 됨

      • 정규화

        중복을 없애는 작업

    6. 1:1 관계

    Relation Type에 해당하는 릴레이션을 따로 만들 지 않고 한 쪽의 Entity에 다른 Entity에 primary key와 Relation Type의 Attribute들을 Attribute로 추가함

    null이 적게 생기는 릴레이션 쪽으로 Attribute를 추가하는 것이 좋음

    • 방법

      1. Relation Type에 해당하는 릴레이션을 생성하지 않음

      2. 원래 Relation Type에 있어야 할 Attribute들의 관계를 맺는 두 릴레이션 중 한쪽으로 합침 (합칠 떄 null값이 적게 생기는 경우를 선택)

    1. 1:M 관계

      Relation Type에 해당하는 릴레이션을 생성하지 않고 릴레이션을 합침

      null 적게 생성 위해 Many에 해당하는 릴레이션 쪽으로 Attribute 함침

    2. N:M 관계

    일반적인 경우 처럼 관계로 생성

Categories:

Updated: