DB 4주차

이다연·2023년 3월 30일

DB

목록 보기
4/7

1. ER 모델( Entity Relation Model )

-1. ER Model

  • 개체(Entity)와 개체간의 관계(Relation), 애트리뷰트(Attribute)를 이용해 현실 세계를 개념적 구조로 표현하는 방법
  • 기본 구문
    : Entity, Relation, Attribute
  • 기타 구문
    : Cardinality 비율, 참여 제약조건(Domain)
  • 개념적 Database설계를 표현하는데 사용되는 Model
  • DDL을 만들기 위해 사용
    (Data Definition Language: database의 schema를 정의하기 위한 언어)
  • 현재 EER Model이 Database설계 과정에 널리 사용됨
  • 기타
    • ER Model을 기반으로 만들어진 CASE 도구(ERWin, DataArchitect, PowerBuilder)는 ER 설계를 자동적으로 DDL(Sybase, Oracle, Infomix, DB2)로 변환
    • 현재는 UML사용(ER모델링이 구형 표기법이 됨)

2. 개체( Entity )

  • 사람, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체(이때 동일한 객체는 존재 x)
  • 실체가 있는 것도 있고 추상적인 것도 있음
  • ER Diagram에서 Entity Type은 직사각형으로 표현

1. 엔티티 타입

  • 관계 Model 의 Relation 내포(schema)
  • 동일한 애트리뷰트들을 가진 엔티티들의 틀
  • 강한 엔티티 타입
    • 독자적으로 존재
    • 엔티티 타입 내에서 자신의 Key Attribute를 사용하여 고유하게 엔티티들을 식별 할 수 있는 엔티티 타입
  • 약한 엔티티 타입
    • Key를 형성하기에 충분한 Attributes를 갖지 못한 엔티티 타입
    • 약한 엔티티 타입이 존재하려면 소유 엔티티 타입이 존재해야 함
    • 이때 소유 엔티티 타입 = 강한 엔티티 타입
    • 강한 소유 엔티티 타입의 Key Attributes를 결합해야 약한 엔티티 타입의 엔티티들 식별 o
    • 이중선 직사각형으로 표기
    • 약한 엔티티타입의 부분키는 점선 밑줄을 그어 표시
    • 부분키
      : 약한 엔티티타입의 기본 키

2. 엔티티 집합

  • 관계 Model의 외연(Instances, Tuples)
  • 동일한 애트리뷰트들을 가진 엔티티들의 모임

3. 엔티티들

  • 엔티티 타입(or 엔티티 집합)들에 따라 분류됨
  • 하나의 엔티티는 한 개 이상의 엔티티 집합에 속할 수 있음

3. 애트리뷰트, 속성( Attribute )

  • 엔티티가 가지고 있는 고유한 특성
  • 사원 엔티티에서 사번, 직책, 이름, 급여 = Attribute
  • 엔티티 -> 독립적인 의미 o, 애트리뷰트 -> 독립적인 의미x, 어딘가에 종속
  • 하나의 엔티티 -> 연관된 Attributes의 집합으로 설명됨
  • 애트리뷰트의 도메인
    - 그 애트리뷰트가 가질 수 있는 모든 가능한 값들의 집합 = 제약조건을 주는 것
    - 여러 애트리뷰트가 동일한 도메인을 공유할 수 있음
    ex) 사원번호, 부서번호 네 자리 정수를 가질 수 있음
    -> 이때 도메인 = 네 자리 정수
    -> 즉 도메인이 있다 = 제약 조건이 있다
  • Key Attribute
    : 한 엔티티 타입 내에서 각 엔티티를 고유하게 식별
    한 애트리뷰트 또는 애트리뷰트들의 모임
  • 애트리뷰트는 요구사항 명세에서 명사나 형용사로 표현
  • ER Diagram에서 애트리뷰트는 타원형으로 나타냄
  • ER Diagram에서 기본 키(Primary Key)에 속하는 애트리뷰트는 밑줄을 그어 표시
  • 엔티티와 애트리뷰트 끼리 실선으로 연결

-1. 단순 애트리뷰트

  • 더 이상 다른 애트리뷰트로 나눌 수 없음
  • 단순 애트리뷰트의 값 = 의미가 하나
  • 실선 타원으로 표현
  • ER Diagram에서 대부분의 애트리뷰트 = 단순 애트리뷰트

-2. 복합 애트리뷰트

  • 두 개 이상의 애트리뷰트로 이루어짐
  • 여러 개의 의미를 포함
  • 동일한 엔티티 타입이나 관계 타입에 속하는 애트리뷰트들 중 밀접하게 연관된 것 들 끼리 모아둠

-3. 단일 값 애트리뷰트

  • 각 엔티티마다 정확하게 하나의 값을 갖는 애트리뷰트
  • ER Diagram에서 단일 값 애트리뷰트 = 단순 애트리뷰트
  • ex)사원의 사번 애트리뷰트 -> 한 사원당 한 개의 사번 -> 사번은 단일 값 애트리뷰트

-4. 다치 애트리뷰트

  • 각 엔티티마다 여러 개의 값을 가질 수 있는 애트리뷰트
  • ex) 취미 애트리뷰트 -> 취미가 전시회 감상, 음악 듣기 등 여러개임
    = 취미는 다치 애트리뷰트
  • 이중선 타원으로 표현

-5. 저장된 애트리뷰트

  • 다른 애트리뷰트와 연관성 없이 독립적으로 존재하는 애트리뷰트
  • ex) 사원 엔티티 타입 -> 사원 이름, 급여는 독립적으로 존재 -> 저장된 애트리뷰트
    시, 도 애트리뷰트 -> 주소 애트리뷰트와 연관 -> 시,도는 저장된 애트리뷰트x
  • ER Diagram에서 저장된 애트리뷰트 = 단순 애트리뷰트

-6. 유도된 애트리뷰트

  • 다른 애트리뷰트의 값으로부터 얻어진 애트리뷰트
  • 관계 DB에서 Relation의 애트리뷰트로 포함시키지 않는 것이 좋음
  • 점선 타원으로 표현

4. 관계 ( Relation )

  • 엔티티 사이에 존재하는 연관, 연결
    = 두 개 이상의 엔티티 타입들 사이의 사상
  • ex) 수강을 뜻하는 Takes는 학생과 과목간의 "수강"이라는 관계를 가짐
  • 관계 집합 -> 동질의 관계들의 집합
  • 관계 타입 -> 동질의 관계들의 틀
  • 관계 집합, 관계 타입 엄격하게 구분할 필요는 x
  • ER Diagram에서 관계 -> 동사
  • 다이아몬드로 표기
  • 관계 타입이 서로 연관시키는 엔티티 타입들을 관계 타입에 실선으로 연결

-1. 관계의 애트리뷰트

  • 관계 타입은 관계의 특징을 기술하는 애트리뷰트들을 가질 수 o
  • 관계 타입 -> 키 애트리뷰트 갖지 x

-2. 차수

  • 관계의 차수 = 관계로 연결된 엔티티 타입들의 연관 개수
  • 2진관계(두 개의 엔티티 타입을 연결함)가 가장 흔함

-3. 카디널리티 비율( 첫 번째 제약조건 )

  • 한 엔티티가 참여할 수 있는 관계의 수
  • 관계 타입에 참여하는 엔티티들의 가능한 조합을 제한함
    = 엔티티 1명 -> 임의의 개수로 연관
  • 1:1, 1:N, M:N 등으로 관계를 구분
  • 카디널리티에 대한 정보는 간선 위에 나타냄

1. 1:1 관계

  • 두 개의 Entity Type의 개체들은 서로 일대일로 대응하는 관계

2. 1:N 관계

  • 하나의 개체가 다른 Entity Type의 많은 개체들과 관련되지만, 그 역은 성립하지 않는 관계

3. M:N 관계

  • 하나의 개체가 다른 Entity Type의 많은 개체들과 관련되며, 역이 성립하는 관계

4. 카디널리티 비율의 최소값과 최대값

  • ER Diagram에서 관계 타입과 엔티티 타입을 연결하는 실선 위에 (min,max)형태로 표기
  • min: 이 엔티티 타입 내의 각 엔티티는 적어도 min번 관계에 참여함
    min = 0 -> 어떤 엔티티가 반드시 관계에 참여해야 할 필요x
  • max: 이 엔티티 타입 내의 각 엔티티는 최대한 max번 관계에 참여함
    max = * -> 어떤 엔티티가 관계에 임의이 수만큼 참여할 수 있음을 의미

-4. 역할

  • 관계 타입의 의미를 명확하게 하기 위해 사용
  • 하나의 관계 타입에 하나의 엔티티 타입이 여러번 나타나는 경우
    -> 반드시 역할을 표기해야 함
  • 관계 타입의 간선 위에 표시

5. 전체 참여와 부분 참여(두 번째 제약조건)

  • 전체 참여: 어떤 관계에 엔티티 타입 E1의 모든 엔티티들이 관계 타입 R에 의해 어떤 엔티티 타입E2의 어떤 엔티티와 연관되는 것
  • 부분 참여: 어떤 관계에 E1의 일부 엔티티만 참여하는 것
  • 약한 엔티티 타입은 항상 전체참여
  • 전체참여 -> 이중 실선으로 표시
  • 다치 애트리뷰트 -> 엔티티로 구분
  • 엔티티에는 애트리뷰트들이 직접적으로 연관된 애트리뷰트들을 한정해서 붙임
  • 가능한 복합 식별자 피하기
  • 관계 -> 독자적으로 존재x지만 엔티티 타입과 관계 타입을 구분하기 어려움

-1. 다중 관계

  • 두 엔티티 타입 사이에 두 개 이상의 관계 타입이 존재할 수 있음

-2. 순환적 관계

  • 하나의 엔티티 타입이 동일한 관계 타입에 두 번 이상 참여하는 것

6. Database설계 과정

    1. 응용의 요구사항 수집, 기술
    1. 사전 결정 사항
    • 응용과 연관이 있는 엔티티 타입, 관계 타입 식별하여 결정
    • 관계가 1:1, 1:N, M:N 중 어떤 것에 해당하는지 결정
    1. ER Diagram 작성
    • 엔티티 타입, 관계 타입에 필요한 애트리뷰트들 식별하여 그림 그리기
    • 각 애트리뷰트가 가질 수 있는 값들의 집합을 고려하여 카디널리티와 참여 방법의 관계성 적기
    • 애트리뷰트들 중 엔티티 타입들을 위한 기본 키 식별
    1. ER Schema Diagram이 응용에 대한 요구사항에 부합되는지 검사
    1. ER Schema Diagram을 각종 DBMS에서 사용되는 DataModel로 변환

-3. 구조적 제약조건 ( Structural Constraint )

  • 앞서 살펴 본 두 개의 제약조건을 가리켜 구조적 제약조건이라 합니다.

  • 구조적 제약조건은 관계를 맺는 두 Entity Type에 1 , N , M을 표시하거나 한 줄 또는 두 줄을 표시하지 말고 ( MIN, MAX ) 방식으로 두 제약조건을 한 번에 표현하는 방식입니다.

  • 예를 들어, 학생은 최소 3개, 최대 6개의 강의를 수강할 수 있으며, 강의는 최소 10명 최대 100명의 학생들이 들을 수 있을 때, 이를 ER 다이어그램으로 표현하면 다음과 같습니다.

-4. 약한 개체( Weak Entity )와 식별 관계성 타입(Identifying Relationship Type)

  • 약한 개체란 자신의 Key Attribute가 없는 Entity Type을 뜻합니다.

  • 예를 들어 "학사 관리 시스템"에서 강의번호 10043는 10043-01 , 10043-02와 같이 여러 개의 분반이 있을 수 있습니다.
    -> 이 때 분반이라는 개체는 자신의 key Attribute가 없고, 강의 테이블에 의존하기 때문에 약한 개체라 합니다.
    -> 다시 말하면 분반이 존재하기 위해서는 꼭 Course Entity Type이 있어야 합니다.

  • ER 다이어그램에서 약한 개체는 두 개의 네모로 표현하고, 약한 개체의 key인 bun_no를 partial key( 부분 키 )라고 합니다.

  • 부분 키는 단독으로 존재할 수 없고 자신을 소유하고 있는 Owner Entity Type인 Course Entity type의 key와 합쳐서 표현되어야 합니다.

  • ER 다이어그램에서 부분 키는 점선으로 된 밑줄로 표현합니다.

  • 또한 Entity type이 약한 개체와 관계를 맺을 때는 식별 관계성 타입으로 표현하고, ER 다이어그램에서 두 개의 마름모로 표현합니다.

  • 약한 개체는 항상 의존적이기 때문에 참여 제약 조건은 전체 참여( total participation )입니다.

0개의 댓글