[SQL] 데이터 모델링의 요소(엔터티, 속성, 관계, 식별자)

김죠·2023년 12월 27일
0
post-thumbnail

1. 엔터티(Entity)

1.1 개념

  • 정보의 세계에서 의미 있는 하나의 정보 단위로, 개체라고 표현한다
  • 관련 있는 속성들이 모여 하나의 의미 있는 이룬 정보 단위
  • 데이터베이스의 레코드가 개체에 해당
  • 사람, 장소, 물건, 사건, 개념 등 업무상 관리 필요한 관심사

1.2 엔터티와 인스턴스

  • 엔터티는 인스턴스의 집합
  • 과목에는 데이터베이스, 인스턴스가 있고, 강사에는 Justin, Ed가 있다
  • 이때 과목과 강사가 엔터티, 데이터베이스,인스턴스, Justin, Ed가 인스턴스에 해당한다

  • 사원 정보를 담고 있는 테이블이 엔터티
  • 인스턴스는 데이터베이스 테이블에 저장된 특정한 데이터 내용의 전체 집합(하나의 row(행))
  • 하나의 인스턴스가 갖는 특징이 속성, 테이블의 세로 영역에 해당

1.3 특징

  • 엔터티는 특정 업무에서 필요로 하는지 파악해야 함
  • 엔터티 도출하는 경우 업무적으로 의미 갖는 인스턴스가 식별자에 의해 한개씩만 존재하는지 검증해야 함
  • 엔터티는 기본적으로 2개 이상의 인스턴스로 구성
  • 업무 프로세스에 활용되지 않는 엔터티가 있는 경우 해당 엔터티 제거하거나 프로세스에서 놓치고 있는 부분 없는지 확인해야 함
  • 엔터티는 엔터티를 설명할 수 있는 속성이 존재해야 의미를 가짐
  • 엔터티가 도출되었다는 것은 해당 업무에서 연관성을 가지는 다른 엔터티와 관계가 있음

1.4 엔터티의 분류

1) 유/무형에 따른 분류

  • 유형 엔터티 : 물리적인 형태 존재하는 엔터티, 안정적이고 지속적이어야 함 ex) 상품, 강사, 병장
  • 개념 엔터티 : 물리적 형태 아닌 관리해야 할 개념적인 정보로 구분되는 엔터티 ex) 학과, 코스닥 종목
  • 사건 엔터티 : 특정 이벤트에 종속되는 엔터티, 업무 수행에 따라 발생되는 엔터티로 비교적으로 발생량 많음 ex) 이벤트 응모, 주문

2) 발생 시점에 따른 분류

  • 기본/키 엔터티 :관계가 아닌 독립적인 생성 가능, 다른 엔터티의 부모 엔터티 역할(고유한 주식별자를 가짐)
    예) 고객, 상품

  • 중심 엔터티 : 기본 엔터티로부터 발생, 업무에서 중심적인 역할. 처리해야 하는 데이터의 양이 많고 다른 엔터티와의 관계 통해 많은 엔터티 생성
    예) 주문, 취소

  • 행위 엔터티 : 두개 이상의 부모 엔터티에서 발생, 자주 내용이 바뀌거나 데이터의 양 증가
    예) 주문 내역, 취소 내역

1.5 엔터티 이름짓기 규칙

  • 가능하면 업무에서 사용하는 용어 사용하기
  • (가능하면) 축약어 사용하지 않기 -> 의미 온전히 드러나게 작성
  • 단수명사 사용, 띄어쓰기 하지 않기
  • 모든 엔터티에 유일한 이름 부여하기(중복x)
  • 엔터티 생성 의미대로 이름 부여하기

2. 속성(Attribute)

2.1 개념

  • 인스턴스의 본질적인 성질
  • 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 분리되지 않는 최소의 데이터 단위

엔터티, 인스턴스, 속성, 속성값의 관계

  • 하나의 엔터티는 두 개 이상의 인스턴스의 집합
  • 하나의 엔터티는 두 개 이상의 속성으로 구성
  • 하나의 속성은 한 개의 속성값을 가짐

2.2 특징

  1. 속성은 업무에서 필요로 함
  2. 속성은 의미상 더 이상 분리되지 않는 가장 작은 단위로 독립성 유지
  3. 엔터티를 설명하고 인스턴스의 구성요소가 됨
  4. 정규화 이론에 기반을 두고 정해진 주식별자에 함수석 종속성 가져야 함

2.3 속성의 분류

1) 속성의 특징에 따른 분류

  • 기본 속성 : 업무로부터 추출된 모든 속성, 가장 많은 종류 차지
  • 설계 속성 : 데이터 모델링, 업무 규칙화 등을 위해 새로 만들거나 변형하여 정의하는 속성
  • 파생 속성 : 다른 속성에 영향을 받아 발생하는 속성, 보통 계산된 형태의 값. 데이터의 정합성을 유지하기 위해서는 가급적 파생적 속성 적게 정의하는 것이 좋음

2) 엔터티 구성 방식에 따른 분류

  • PK 속성 : 엔터티를 식별할 수 있는 속성
  • FK 속성 : 다른 엔터티와의 관계에 포함된 속성
  • 일반 속성 : PK,FK에 포함되지 않은 속성

2.4 도메인 및 속성의 명명

  • 도메인 : 각 속성이 가질 수 있는 값의 범위, 엔터티 내 속성에 대한 데이터 타입, 크기, 제약 사항 등 지정

  • 속성 명명 규칙
    1. 가능하면 업무에서 사용하는 용어 사용
    2. 가능하면 축약어 쓰지 않고 의미 온전하게 드러나게 사용
    3. 서술형보다는 명사형
    4. 수식어 많이 붙지 않고 명확하게 의미 파악할 수 있어야 함
    5. 전체 데이터 모델에서 유일하게 작성

3. 관계(Relationship)

  • 엔터티와 인스턴스 사이의 논리적인 연관성으로서 존재의 형태 행위로서 서로에게 연관성 부여된 상태
  • 엔터티들 간 연관성을 표현하므로 엔터티의 정의에 따라 영향을 받기도 하고 속성 정의 및 관계 정의에 따라 다양하게 변할 수 있음

3.1 관계의 페어링

  • 관계는 엔터티 안에 인스턴스가 개별적으로 연결되어 있는 구조. 이러한 관계를 '페어링'이라 함
  • 연결 관계의 집합을 관계로 표현 가능
  • 개별 인스턴스가 다른 종류의 관계를 가지면 두 엔터티 사이 두개 이상 관계 형성 가능

3.2 관계의 분류


관계는 크게 어떤 목적으로 연결지어졌는지에 따라 존재(소속/포함의 형태)/행위(행동/행위의 결과)에 의한 관계 2가지로 분류 가능하다

3.3 관계 차수(Degree/Cardinality)

  1. 1:1(One to One) 관계 표시
  • 두 엔터티간의 관계되는 데이터의 개수가 1개인 엔터티 간 관계
  1. 1:M(One to Many) 관계 표시
  • 한 엔터티에 존재하는 데이터 1개와 관계되는 다른 엔터티에 존재하는 데이터의 개수가 여러 개인 엔터티 간 관계
  1. M:N(Many to Many) 관계 표시
  • 두 엔터티 간 관계되는 데이터의 개수가 여러개인 엔터티 간 관계

3.4 관계선택사항

  • 필수 조건 : 상대 엔터티에 대한 해당 조건 만족하는 엔터티 반드시 존재할 경우 표시
  • 선택 조건 : 점선으로 표시, 상대 엔터티에 대한 해당 조건 만족하는 엔터티 존재할수도, 아닐 수도 있음
  • 하나의 주문목록에는 하나의 상품목록을 항상 포함, 한 상품목록은 여러 개의 주문 몽록 포함될 수 있음

3.5 관계 읽는 방법

  • 기준 엔터티를 한개/각으로 읽는다
  • 대상 엔터티의 관계 참여도 개수(하나/하나 이상)로 읽는다
  • 관계 선택 사양과 관계 이름 읽는다

4. 식별자(Identifier)

  • 집합체를 구분할 수 있는 구분자
  • 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에서 엔터티를 대표할 수 있는 속성
  • 하나의 엔터티는 반드시 하나의 유일한 식별자 존재해야 함

4.1 주식별자의 특징

  • 유일성 : 주식별자에 의해 엔터티 내 모든 인스턴스 유일하게 구분
  • 최소성 : 주식별자 구성하는 속성 수는 유일성 만족하는 최소의 수 되어야 함
  • 불변성 : 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
  • 존재성 : 주식별자 지정되면 반드시 데이터 값 존재해야 함(NULL값 허용하지 않음)

4.2 식별자 분류


1) 대표성 여부

  • 주식별자 : 다른 엔터티와 참조 관계 연결 가능 식별자
  • 보조 식별자 : 엔터티간 참조 관계 연결 불가능
  • 두 식별자 모두 엔터티 내에서 각 인스턴스 구분할 수 있는 구분자

2) 스스로 생성 여부

  • 내부 식별자 : 엔터티 내부에서 정의되는 식별자
  • 외부 식별자 : 다른 엔터티와의 관계를 통해 다른 엔터티로부터 받아오는 식별자

3) 속성의 수

  • 단일 식별자 : 하나의 속성으로 구성된 식별자
  • 복합 식별자 : 둘 이상의 속성으로 구성된 식별자

4) 대체 여부

  • 본질 식별자 : 업무에 의해 만들어지는 식별자
  • 인조 식별자 : 업무적으로 만들어지진 않지만 인위적으로 만들어진 식별자

식별자 표기법

4.2 주식별자 도출 기준

  • 해당 업무에서 자주 이용되는 속성으로 설정
  • 명칭, 내역 등과 같이 특정한 이름으로 기술되는 것은 가능하면 주식별자로 사용하지 않음
  • 복합으로 주식별자 구성하는 경우 너무 많은 속성 포함되지 않도록 해야 함
profile
1=850

0개의 댓글