Skip to main content

Command Palette

Search for a command to run...

Logical database design, Database system, 7강

논리적 데이터베이스 설계, 데이터베이스 시스템, 7강

Updated
8 min read

Goals:

  • ER 모델을 관계 모델로 변환하는 과정(process of converting an ER model to a relational model)을 설명할 수 있다.

  • ERD릴레이션 스키마로 변환(convert an ERD to a relation schema)할 수 있다.

Contents:

  • 개체와 관계의 관계모델 변환(Converting entity and relationship to relational model)

  • 속성의 관계모델 변환(Converting attributes to relational model)

  • 특수개체 및 관계의 릴레이션 변환(Converting special entities and relationships to relations)

  • 릴레이션 스키마 생성 실습(Practice of creating relation schemas)


개체의관계모델변환

  • 개체의 릴레이션 변환

개체는 그 자체로 하나의 릴레이션으로 변환된다.

  • 개체의 이름은 릴레이션의 이름으로 대응된다.

  • * 부서코드 밑줄: 키애트리뷰트(Key-attribute)


    관계의관계모델변환

    - 관계의 릴레이션 변환 (N:M, N:1 / 1:N, 1:1 관계)

  • N:M 관계의 릴레이션 변환

    • 관계또한 하나의 릴레이션으로 변환된다.

      • 양쪽(학생, 과목)의 기본키 두개를 각각 외래키로 만든다.

      • 이 두 키를 합쳐서 기본키로 하는 별도의 릴레이션을 생성한다.

  • 학생의 학번 밑줄(기본키,primary key), 과목의 과목번호(기본키,primary key), 등록의 학번&과목번호(외래키,foreign key)

  • N:M 관계의 릴레이션을 데이터베이스로 변환

  • N:1 or 1:N 관계의 릴레이션 변환

  • N:1 or 1:N 관계의 릴레이션을 데이터베이스로 첫번째 변환

    - 그런데 사원의 사번과 소속의 사번이 중복된다.

    - 소속의 부서번호를 사원의 값으로 붙인다. 릴레이션을 굳이 억지로 나눌 필요는 없다.

    - 1쪽의 기본키를 N쪽의 외래키로 넣어서 릴 레이션을 생성한다.

  • N:1 or 1:N 관계의 릴레이션을 데이터베이스로 최종 변환

  • 1:1 관계의 릴레이션 변환

  • 어느 쪽이든 한쪽의 기본키를 다른 쪽의 외래키로 넣어 릴레이션을 생성한다.

  • 1:1 관계의 릴레이션을 데이터베이스로 최종 변환


속성의관계모델변환(Converting attributes to relational model)

  • 키속성(Key attribute)을 가진 개체의 릴레이션 변환: 일반적인 형태로 개체 자체가 정보의 저장/관리의 단위가 됨. 해당 개체를 릴레이션으로 만들고, 속성을 기본키로 설정

  • 다중값(Multi-valued attribute)을 가진 개체의 릴레이션 변환

    • 맨 아래 주석처럼 다중값 속성이란 하나의 속성에 여러 개의 값이 들어간다는 것을 표현한다. 관계형 모델에서 '하나의 속성은 하나의 원자값'만을 가져야되는 전제가 있으므로 별도의 변환 방법이 필요하다.

    • 변환방법: 해당 개체의 기본키와 다중값 속성을 합쳐 복합속성을 만들고 그 복합 속성을 기본키로 하는 별도의 릴레이션을 생성한다.

  • 복합속성(Composite Attribute)을 가진 개체의 릴레이션 변환

    • 맨 아래 주석처럼 복합속성이란 하나의 속성이 하나의 속성이 여러 작은 부분들로 쪼개어 질 수 있는 경우를 뜻한다. 다중값과 같은 이유로 별도의 변환 방법이 필요하다.

    • 변환방법: 합쳐서 하나의 애트리뷰트로 만들던지 아니면 나누어서 여러개의 애트리뷰트로 만든다.

    • 변환방법에서 어떻게 애트리뷰트를 나눌 건지는 분리된 속성들이 혼자서도 독립적인 의미를 가지고 있는지를 확인해야한다

    • 복합속성의 유형 맨아래 주석 참조

  • 유도속성(Derived Attribute)을 가진 개체의 릴레이션 변환

    • 맨 아래 주석처럼 유도속성이란 다른 속성에 의해 가공되어서 만들어진 값을 가진다. 다른 개체의 속성으로부터 유도되는 경우도 많이 존재한다. 예)나이, 주소

    • 위의 예시처럼 부양가족의 릴레이션을 통해 가족수를 알 수 있다. 그렇기에 별도의 애트리뷰트로 만들지 않았다.

    • 프로그램 로직으로 처리라는 뜻은 부양가족의 인스턴스 수를 계산한다는 뜻이다.

    • 유도속성의 유형은 주석참조

  • 관계에 속한 속성의 릴레이션 변환(사원, 소속 과 같은 밀접한 관계)

    • 1:N 관계의 경우: 해당 관계는 N쪽의 릴레이션에 외래키 형태로 나타남

    • N:M관계의 경우: 해당 관계는 새로운 릴레이션으로 생성됨

    • 관계에 속한 속성은 그 관계가 표현된 릴레이션의 한 애트리뷰트로 변환


특수개체(special entities) 및 관계의 릴레이션 변환(Converting special entities and relationships to relations)

  • 약개체(Weak entity)의 릴레이션 변환 (대부분의 약개체는 1:N이다)

    • 약개체는 기본키에 해당하는 속성(집합)이 없다

    • 약개체가 기준으로 하는 개체에서 필요한 속성을 빌려와야 함

    • 기준 개체의 기본키와 약개체의 대표 속성을 합치고, 이를 기본키로 하는 릴레이션을 생성

  • 순환관계(circular relationship)의 릴레이션 변환(빈번하게 나오고 헷갈리는 개념)

    • 순환 관계에 참여하는 개체의 기본키를 바로 그 개체의 외래키로 넣어서 릴레이션을 생성한다. '자기참조관계'라고 부르기도 한다.
  • 이중 이진관계의 릴레이션 변환

    • 개체와 개체 사이에는 한 개 이상의 관계가 존재

    • N:M 관계의 경우: 독립된 릴레이션을 생성

    • 1:N 관계의 경우: N쪽의 릴레이션에 각각의 관계를 표현

    • 즉, 각각의 관계에서 따라 각각의 외래키를 포함해서 릴레이션을 생성


릴레이션 스키마 생성 실습(Practice of creating relation schemas)

  • 학사관리 ERD

  • 과목에서 '시간'은 다중값 속성이다. 별도의 릴레이션을 생성한다. '과목시간'으로 명확하게 표현한다. 시간의 기본키(과목번호)와 다중값 속성을 합쳐 복합속성을 만들고 그 복합 속성을 기본키로 하는 별도의 릴레이션을 생성한다.

  • 강의는 1:N관계이다. 별도의 릴레이션 생성안하고 N쪽의 개체의 관계를 표현한다. 그렇기에 과목의 '담당교수(FK)'는 강사의 '강사번호(PK)'에서 가져온다. 이름은 달라도 되고 의미만 같으면 된다.

  • 등록은 M:N관계이다. 양쪽(과목, 학생)의 기본키 두개를 각각 외래키로 만든다. 이 두 키를 합쳐서 기본키로 하는 별도의 릴레이션을 생성한다. 그리고 기존의 성적 속성을 넣는다. 학번과 과목번호의 순서는 바뀌어도 상관없다.

    결론: 릴레이션 스키마를 어떻게 저장할지를 논리적 설계단계에서 (다음강좌) 이루어진다.


추가설명 (Further explanation)

  • ER model(Entity-Relationship):데이터베이스 설계의 개념적인 틀을 제공하고 개체(Entity), 속성(Attribute), 관계(Relationship) 등을 사용하여 데이터의 구조와 관계를 표현한다. 관계 모델(개념적 모델링 단계에서 사용) 이전단계인 요구사항 수집 및 분석 단계에서 이루어진다.

  • ERD (Entity-Relationship Diagram): 관계 모델을 시각적으로 표현한 다이어그램. 관계모 델링을 위한 시각적 도구이다.

  • 릴레이션 스키마(relation schema): 애트리뷰트 들의 집합(Relation schema = Set of attributes)이다. 데이터베이스의 테이블의 형태로 된 구조를 표현한다.. 예를 들어, "학생(Student)" 테이블의 릴레이션 스키마는 학생 번호, 이름, 성별 등의 속성을 포함할 수 있다. 논리적 모델링을 위한 도구이다

  • 관계모델(relation model):관계 모델은 데이터베이스를 표현하는 데 사용되는 개념적인 모델 중 하나이다. 테이블(relation)의 집합으로 데이터를 구성하며, 각 테이블은 튜플(tuple, 행)의 집합으로 이루어져 있습니다.

  • 데이터베이스를 표현하는 과정은 일반적으로 다음과 같은 순서로 진행된다. 요구사항 수집 및 분석(Requirement Gathering and Analysis) -> 개념적 모델링(Conceptual Modeling) -> 논리적 모델링(Logical Modeling) -> 물리적 데이터 모델링(Physical Data Modeling) -> 데이터베이스 구현(Database Implementation) -> 데이터베이스 유지보수 및 최적화의 과정(Database Maintenance and Optimization)으로 이루어진다. 관계모델은 개념적 모델링 단계에서 주요 사용된다. 개념적 모델링이란 데이터 베이스의 전반적인 구조를 나타내는 단계이다. 요구사항 분석을 기반으로 관계모델을 적용하여 데이터 모델을 설계한다. 6주차까지는 개념적 모델링의 단계까지 배웠다. 이후에는 논리적 데이터 모델링 과정에서 논리적 구조로 변환된다. 논리적 구조에 관한 내용은 7주차 강의록 참고.


  • 키속성(Key attribute) 개체를 고유하게 식별하는 데 사용되는 속성. 각 행(레코드,튜플)은 데이터베이스 테이블에서 개체를 나타내며, 키 속성은 이러한 행을 고유하게 식별하는 데 사용한다. 키 속성의 유형에는 기본 키, 외래 키 등이 있다.

  • 다중값(Multi-valued attribute) 같은 개체 내에서 하나의 속성이 여러 개의 값을 가질 수 있는 속성이고 ERD에서 다중값은 이중의 원으로 표시한다 (예: 색상, 취미, 성별)

  • 복합속성(Composite Attribute)하나의 속성이 여러 작은 부분들로 쪼개어 질 수 있는 경우이다. 타원형으로 표시하고 쪼개어지는 단순 속성들을 연결해서 표시한다.

  • 복합속성의 유형(type of composite attribute):예를 들어 주소(address),날짜(date), 전화번호(phone number)의 복합속성이 있을 경우 주소는 도시(city), 거리(street), 우편번호(zip code) 등으로 분리하여 독립적인 속성으로 나타낼 수 있다. 날짜(date)는 년(year), 월(month), 일(day) 등의 하위 속성으로 구성될 수 있다. 각각의 하위 속성은 날짜의 특정 부분을 나타내며, 개별적인 의미를 갖는다. 전화번호(Phone Number) 국가번호(country code), 지역번호(area code), 번호(number) 등의 하위 속성으로 분리하여 각각의 부분이 개별적인 의미를 갖도록 할 수 있다.

  • 유도속성(Derived Attribute) 존재 유무와는 무관한 상태로 어떤 값과 복수의 값을 이용하여 산출되는 속성이다. 예)나이는 생년월일로 계산 될 수 있다. 주소 속성으로 국가의 지역 번호를 알 수 있다. 점선 타원으로 표시한다.

    유도속성의 유형(type of derived attribute): 유도속성은 다른 속성의 값에서 파생되는 정보를 제공하는데 사용된다. 직접 저장되는 것이 아니라 필요할 때마다 계산되므로 데이터베이스의 논리적 구조에 직접적으로 나타나지 않지만 데이터베이스 시스템은 필요한 경우에 유도속성을 자동으로 계산하여 제공한다. 종류에는

    1) 계산된 속성 (Computed Attribute): 다른 속성들의 값을 기반으로 계산되는 속성입니다. 예를 들어, 나이는 생년월일과 현재 날짜를 기반으로 계산될 수 있다.

    2) 집계 속성 (Aggregate Attribute): 여러 행의 값으로부터 계산된 값을 나타내는 속성입니다. 예를 들어, 주문 테이블에서 주문된 상품의 총 가격은 각 상품의 가격과 수량을 곱한 값들의 합계로 계산될 수 있다.

    3) 문자열 결합 속성 (Concatenated Attribute): 두 개 이상의 문자열 속성을 결합하여 새로운 문자열을 생성하는 속성입니다. 예를 들어, 성명 속성과 성별 속성을 결합하여 "성별이 포함된 이름"과 같은 유도 속성을 생성할 수 있다.

    4) 논리적 속성 (Logical Attribute): 다른 속성들의 논리 연산에 의해 파생되는 속성입니다. 예를 들어, 주문이 배송되었는지 여부는 주문 상태와 배송 날짜에 따라 논리적으로 파생될 수 있다.


  • 특수개체(special entities)란? 개체-관계 모델링(Entity-Relationship Modeling)에서 특별한 역할을 하는 개체를 가리킨다. 이러한 특수개체는 일반적인 개체와는 조금 다른 특징을 갖고 있을 수 있다.

    • 고유한 규칙 또는 조건을 따르는 개체: 특수개체는 종종 특정한 규칙 또는 조건을 따르는 경우가 있다. 예를 들어, 할인 상품 개체는 특정 조건에 따라 할인이 적용되는 상품을 나타내는 경우가 있을 수 있다.

    • 다른 개체와의 강한 관계: 특수개체는 다른 개체와 밀접한 관계를 가질 수 있다. 예를 들어, 주문과 주문 상세라는 개체가 있을 때, 주문 상세는 주문에 종속되는 특수개체로 정의될 수 있다.

    • 구분을 위한 사용: 특수개체는 일반적으로 데이터베이스에서 특정 상황을 구분하기 위해 사용된다. 예를 들어, 주문과 쿠폰 개체가 있을 때, 쿠폰은 특수개체로 정의하여 주문에 적용되는 특별한 할인이나 혜택을 나타낼 수 있다.

  • 약개체(Weak entity)란? 자체적으로 유일하게 식별될 수 없는 개체이다. 다른 개체에 의존한다. 예) '주문'개체에서 '주문 상세'는 약개체이다. 이유는 '주문 상세'를 식별하기 위해서는 해당 '주문번호'와 '상품순번'이 필요하기 때문이다.

  • 순환관계(circular relationship)란? 개체-관계 모델링(Entity-Relationship Modeling)에서 발생하는 형태 중 하나이다. 주로 계층적인 데이트 구조를 표현할 때 사용한다. 한 개체가 자기 자신이나 다른 개체를 참조하여 발생한다. 예를 들어, "직원"과 "상사"라는 개체가 있을 때, 상사 역시 직원이 될 수 있다. 이런 경우, 상사와 직원 사이에는 상호적인 관계가 형성되며, 순환 관계가 발생한다. 즉, 한 직원이 다른 직원의 상사가 되고, 그 상사 역시 또 다른 직원의 상사가 될 수 있는 것. 이러한 관계가 적절하게 관리되지 않으면 데이터베이스의 무결성이 깨질 수 있으며, 쿼리나 연산을 수행할 때 예상치 못한 결과가 발생할 수 있다. 따라서 순환 관계가 있는 경우 이를 적절히 모델링하여 데이터의 정확성과 일관성을 유지하는 것이 중요하다.

  • 이중 이진관계(double binary relationship)란?

    • 개체-관계 모델링(Entity-Relationship Modeling)에서 발생하는 관계 중 하나. 복잡한 데이터 모델에서 주로 발생하며, 엔티티 간의 다양한 상호 작용을 모델링하는 데 유용하게 사용될 수 있다. 이러한 관계는 모델링할 때 주의하여야 하며, 관계의 정확성과 일관성을 유지하기 위해 적절한 제약 조건을 사용해야 한다.

    • 이러한 관계는 두 개의 엔티티 간에 발생하며, 각 엔티티는 서로 다른 역할을 수행한다. 두 개의 엔티티 간에 관계가 존재: 이중 이진 관계에서는 두 개의 엔티티 간에 서로 다른 관계가 존재한다. 각 관계는 독립적으로 정의되며, 서로 다른 역할을 수행한다.

    • 각 엔티티가 관계에 대해 서로 다른 역할을 수행: 이중 이진 관계에서 각 엔티티는 서로 다른 역할을 수행한다. 예를 들어, "직원"과 "프로젝트"라는 엔티티가 있다고 가정해보자. 이때 "직원" 엔티티는 "프로젝트"와의 관계에서 "참여자"의 역할을 수행하고, "프로젝트" 엔티티는 "참여"의 역할을 수행할 수 있다.

    • 양방향 관계: 이중 이진 관계는 양방향으로 발생할 수 있다. 즉, 한 엔티티가 다른 엔티티와의 관계에서 한 역할을 수행할 때, 다른 엔티티는 같은 관계에서 다른 역할을 수행할 수 있다.


이미지 자료출처: 고려사이버대학교 데이터베이스시스템 7주차 강의록

Database System

Part 7 of 9

데이터베이스 시스템, 3학년 1학기, 나홍석 교수님 Database System

Up next

Relational data structures and constraints, Database system, 6주차

관계 데이터 구조, 관계 데이터 제약