ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL 전문가 가이드] 1과목 - 제 4장. 관계(Relationship) 정리 ( + RDBMS, Relation과 Relation의 차이)
    데이터베이스(DataBase)/SQL 전문가 가이드 (2020 개정판) 2023. 5. 10. 12:11
    728x90

     

     

     

    1. 관계(Relation)의 개념


     

     

    가. 관계의 정의

     

     관계(關係, Relationship) : 둘 이상의 사람, 사물, 현상이 서로 관련을 맺거나 관련이 있음.

    즉, 상호 연관성이 있는 상태를 뜻한다.

     

    이러한 관계를 데이터 모델(Data Modal)에 정의해 보면, 

    "엔터티(Entity)의 인스턴스(Instance) 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태"라 할 수 있다. 이러한 관계는 엔터티와 엔터티 간 연관성을 표현하기 때문에 엔터티의 정의에 따라 영향을 받기도 하고 속성 정의 및 관계 정의에 따라서도 다양하게 변할 수 있다.

     

    관계의 정의

     

     


     

     

    나. 관계의 페어링(Paring)

     

    유의할 점으로, 관계(Relationship)는 엔터티(Entity) 안에 인스턴스(Instance)가 개별적으로 관계를 가지는 것(페어링)이고,

    이것의 집합으로 관계를 표현한다는 것이다.

    따라서 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다.

     

    각각의 엔터티의 인스턴스들은 '자신이 관련된 인스턴스들과 관계의 어커런스(Occurrence : 실제적 정보)로 참여하는 형태'관계 페어링(Relationship Paring)이라 한다.

    하단 이미지는 김선생은 A학생 / B학생에게 강의를, 이선생은 B학생에게만 강의를 진행하는 것을 알 수 있다. 

    이처럼 관계가 설정되어 있는 어커런스를 관계 페어링이라 한다. 

     

    [IE 표기법] 관계의 페어링

     

    엔터티는 인스턴스의 집합을 논리적으로 표현하였다면, 관계는 관계 페어링의 집합을 논리적으로 표현한 것이다.

     

     


     

     


     

    2. 관계의 분류 

     

    관계를 연결함에 있어 어떤 목적으로 연결되었느냐에 따라 분류하여,

    ① 존재에 의한 관계, ② 행위에 의한 관계로 구분될 수 있다.

     

     

    ① 존재에 의한 관계

    관계의 분류 중, 존재에 의한 관계

    해당 모델은 '홍길동' 사원이 'IT'부서에 소속되어 있음을 확인할 수 있다. 이처럼, '소속된다'라는 의미는 행위에 따른 이벤트에 의해 발생되는 것이 아닌, 

    '홍길동' 사원이라는 존재가 'IT'부서에 소속되어 있기에 이는 존재의 형태에 의해 관계가 형성되었다 볼 수 있다.

     

     

     

    ② 행위에 의한 관계

    관계의 분류 중, 행위에 의한 관계

    위 모델은 고객 '김철수'가 '주문한다'는 행위를 통해 주문코드 'A001'이 생성된 것이다.

    즉, 주문 코드는 '김철수' 고객의 '주문한다'라는 행위에서 비롯된 것으로 두 엔터티 사이의 관계는 행위에 의한 관계가 된다.

     

     

    * UML(Unified Modeling Language) : 통합 모델링 언어, 프로그램 설계를 표현하기 위해 사용하는 표기법.

     

    UML(Unified Modeling Language)에는 클래스다이어그램의 관계중 ① 연관관계(Association)와 ② 의존관계(Dependency)가 있다.

    ① 연관관계(Association) - 항상 이용하는 관계, 존재적 관계에 해당
    ② 의존관계(Dependency) - 상대방 클래스의 행위에 의해 관계가 형성

     

    즉, ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않고 표현했다면 클래스다이어그램에서는 이것을 구분하여 연관관계와 의존관계로 표현하고 있는 것이다. 연관관계는 표현방법이 실선으로 표현되고 소스코드에서 멤버변수로 선언하여 사용하게 하고, 의존관계는 점선으로 표현되고 행위를 나타내는 코드인 Operation(Method)에서 파라미터 등으로 이용할 수 있도록 되어 있다.

     

     



     

    3. 관계의 표기법

     

    관계에서는 표기법이 상당히 복잡하고 여러 가지 의미를 가지고 있다. 각각의 개념과 표기법을 이해할 필요가 있다.

     

    관계명(Membership) 관계의 이름
    관계차수(Cardinality) 1:1, 1:M, M:N
    관계선택사양(Optionality) 필수관계, 선택관계

     

     

    # 관계명(Membership)

    - 엔터티가 가진 관계에 대한 이름이다.
    - 엔터티간의 관계는 두 개의 관계명을 가지고 있다. ( ex> 부서는 사원을 '포함한다' / 사원은 부서에 '소속된다'.)
    - 동사 표기는  지양하고, 현재형으로 표현한다. (ex> '관계된다' (X), '강의한다' (O))
     



    # 관계차수(Cardinality)

    - 일반적인 표현 방법은 1:1, 1:M, M:N이다.
    - 관계에서 고려해야할 점으로, 한 개의 관계 또는 두 개 이상의 관계가 존재하는 지 확인해야 한다.
    - 관계 차수(Cardinality)를 표현할 때, crow's Foot 모델에서는 선을 이용해 표현한다.
    - 한 개가 참여하는 경우는 실선 / 다수가 참여한 경우에는 까마귀 발 모양을 사용한다. 




    # 관계 선택 사양(Optionality)

    - 엔터티의 참여도를 나타내는 것으로, 항상 참여 / 참여하거나 아닐 수도 있는 상황을 나타낸다.
       (항상 참여한다. => 필수 참여 관계(Mandatory), 참여하거나 아닐수도 있다. => 선택적 관계(Optional))

    ex> 주문서와 주문목록,  주문서는 반드시 주문목록이 필요하고, 주문목록 또한 주문서가 반드시 필요하다.
    => 필수 참여 관계

    ex> 목록과 주문,  목록은 주문이 될 수도 있고, 주문되지 않은 목록이 될 수도 있다.
    => 선택적 관계
     

     


     


     

     

    4. 관계의 정의 및 읽는 방법


    가. 관계 체크 사항

     

    두 개의 엔터티 사이에서 관계를 정의할 때, 다음 사항을 체크해 보도록 한다.

     

    • 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
    • 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
    • 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
    • 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는가?

     


     


     

    나. 관계 읽기

     

    데이터 모델을 읽는 방법은 먼저 관계에 참여하는 기준 엔터티를 하나 또는 각(Each)으로 읽고 대상 엔터티의 개수(하나, 하나 이상)를 읽고 관계선택사양과 관계명을 읽도록 한다.

     

    • 기준(Source) 엔터티를 한 개(One) 또는 각(Each)으로 읽는다.
    • 대상(Target) 엔터티의 관계참여도 즉, 개수(하나, 하나 이상)를 읽는다.
    • 관계선택사양과 관계명을 읽는다.

     

    [출처: Data on-air] 관계 읽기 중, 관계를 읽는 방법

     

    위의 관계를 정의를 한 사항에 대해서 뒷부분만 의문문으로 만들면 바로 관계를 도출하기 위한 질문 문장으로 만들 수 있다. 위의 질문을 업무를 분석하는 자기 스스로에게 질문하거나, 장표나 업무기술서 또는 업무를 잘 알고 있는 업무담당 고객과 대화를 하면서 관계를 완성해 갈 수 있다.

    예를 들어, 주문과 제품과 관계를 질문하기 원할 때 “한 주문에 대해서 하나의 제품만을 주문합니까?”라고 할 수도 있고 또는 “한 제품은 하나의 주문에 대해서만 주문을 접수받을 수 있습니까?”라고 질문할 수 있다. 이러한 질문 방법은 엔터티간 관계설정뿐 아니라 업무의 흐름도 분석이 되는 실제 프로젝트에서 효과적인 방법이 된다.

     

     

     


     

     

     

    + RDBMS, Relation과 Relation의 차이

     

    * 해당 내용은 [RDBMS] DBMS에서 Relation과 Relationship 차이 - [적분의 블로그]에서 참고하며, 필요한 내용을 덧붙였습니다.

     

    [RDBMS] DBMS 에서 Relation 과 Relationship 의 차이점

    나는 나름대로 MySQL 을 다뤄봤다고 생각했다.

    jee00609.github.io

     

     

    # RDBMS (Relational DataBase Management System)이란?

    : 관계형 데이터베이스 관리 시스템으로,

      모델을 기반으로 하여, 관계형 데이터베이스를 생성하고, 수정, 관리할 수 있는 프로그램이다. 

     

     

    * 관계형 데이터베이스(Relational DataBase)

    더보기

    # 관계형 데이터베이스(RDB)

     

    : 데이터가 하나 이상의 열(Column)과 행(Row)의 테이블에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 구성된 데이터베이스이다.

     

    즉, 모든 데이터를 2차원의 테이블로 표현하며,

    이러한 테이블은  키(key)와 값(value)의 관계를 나타낸다. 

    이처럼 데이터의 종속성을 관계(Relationship)로 표현하는 것이 관계형 데이터베이스이다.

     

     


    # 관계형 모델

    :  실제 세계의 데이터를 ‘관계’ 라는 개념을 사용해서 표현한 데이터 모델.

     


    * 관계형 데이터베이스의 특징

    - 데이터의 분류, 정렬, 탐색 속도가 빠르다.

    - 오래동안 사용된 DB인 만큼 신뢰성(Reliability)이 높고 데이터의 무결성(Integrity)을 보장해준다.

    - 작성된 스키마(schema)는 수정이 어렵다.

    - 데이터베이스의 부하를 분석하는 것이 어렵다.

     


     

    Relation과 Relationship의 차이점을 확인하기 전에, 각각의 개념을 알아보자.

     

     

     

    # Relation이란?

     

    : 관계형 데이터베이스 모델에서 사용되는 용어.

      개체(Entity)들의 집합을 표현하는 테이블(Table)로,

       테이블 내 각 열(Column)은 속성(Attribute)을 나타내며 각 행(Row)은 개체(Entity)를 나타낸다.

     

    - A database consists of a set of tables. A table is also called an entity.
      (데이터베이스는 하나의 테이블로 구성된다. 이때, 테이블은 엔터티(Entity)라고 부를 수 있다.

    - It is a basic structure of data in the relational model.
      (이것은 관계형 모델에서 데이터의 가장 기본적인 구조이다.)

    -  A table consists of rows and columns.
      (테이블은 행과 열로 구성되어 있다.)

    - A row or tuple represents a single entry in the table.
      (행 또는 튜플은 테이블의 하나의 엔터티를 나타낸다.)

    - The columns represent the attributes.
      (열은 속성을 나타낸다.)

     

    .

    .

    .

     

     

    결론적으로 Relation은 '서로 다른 속성으로 구성된 관계형 모델 기반의 데이터베이스의 테이블 혹은 Entity' 라 정의할 수 있다.

     

     

     

     


     

     

    # Relationship이란?

     

    : 개체(Entity) 간의 관계를 나타내는 것을 의미.

      관계형 데이터베이스에 존재하는 테이블 간의 관계를 나타내기 위해 사용한다.

     

    - Relationship describes how two tables or entities are connected to each other.
      (Relationship은 두 개의 테이블 또는 개체들이 어떻게 연결되어 있는가를 설명하는 것이다.)

    - These tables can be associated with each other using constraints such as primary keys, and foreign keys.
      (이 테이블들은 기본키와 외래키와 같은 제약조건을 사용하여 서로 연관시킬 수 있다.)

    - A primary key is the main key of a table.
      (기본키는 테이블의 가장 중심이 되는 키다.)

    - It helps to uniquely identify each record in a table.
      (이것은 테이블에서 각 Record를 고유하게 식별해준다.)

    - When the primary key in one table is added to some other table, that primary key becomes a foreign key in the new table.
      (한 테이블의 기본키가 다른 테이블에 추가되면, 해당 기본키는 새 테이블의 외래키가 된다.)

     

    .

    .

    .

     

    결론적으로 Relationship은 "관계 모델 기반 데이터베이스에서 두 실체 사이의 연관성을 나타내는 것"이라 정의할 수 있다.

     

     


     

    # Relation과 Relationship의 차이점

     

    정의
    Relation 서로 다른 속성으로 구성된 관계형 모델 기반의 데이터베이스의 테이블 혹은 Entity
    Relationship 관계 모델 기반 데이터베이스에서 두 실체 사이의 연관성을 나타내는 것.

     

    + DBMS 에서 Relation 과 Relaionship 의 또 다른 차이점은, Relation 은 Entity, 즉 개체이며, Relationship은 두 Entities 사이의 관계를 의미한다는 것이다.

     

     

    결론적으로, DBMS에서 Relation과 Relationship의 차이점은

    • Relation 은 관계형 모델 데이터베이스의 테이블
    • Relationship 은 관계형 모델 데이터베이스의 두 테이블이 서로 연결되는 방식

    위와 같이 정리할 수 있다. 

    728x90

    댓글

Designed by Tistory.