1. 엔터티의 개념
- 개체(Thing), 의미 있는 하나의 정보 단위를 뜻한다.
- 관련 있는 속성(Attribute)이 모여 하나의 의미있는 개체를 만든다.
- 개체 사이의 연관성은 관계(Relationship)
엔터티와 인스턴스(Instance)
- 엔터티 : 사원 테이블
- 인스턴스 : 테이블에 저장된 특정한 데이터 내용의 집합. 즉, 하나의 row(행)
- 속성 : 인스턴스가 갖는 각각의 특징. colum(열)
2. 엔터티의 6가지 특징
- 업무에서 필요로 하는 정보 : 데이터를 수집하고 관리하는 목적은 업무에 활용하기 위함
- 식별 가능 여부 : 업무적으로 의미를 갖는 인스턴스가 식별자에 의해 한개씩만 존재
- 인스턴스의 집합 : 기본적으로 2개 이상의 인스턴스로 구성
- 업무 프로세스에 의해 활용 : 활용되지 않는 엔터티는 제거하거나 놓친 부분은 없는지 점검 필요
- 속성을 포함 : 주식별자만 존재하고 일반 속성이 없는 경우 엔터티가 아님
- 관계의 존재 : 엔터티가 도출된 것은 다른 엔터티와의 연관성이 있다는 것.
3. 엔터티의 분류
- 유/무형에 따른 분류
- 유형 엔터티 : 물리적 형태가 존재하며 안정적이고 지속적(ex. 상품, 강사, 병장)
- 개념 엔터티 : 물리적 형태가 아닌 관리해야 할 개념적 정보로 구분(ex. 학과, 코스닥)
- 사건 엔터티 : 특정한 이벤트에 종속(ex. 이벤트 응모, 주문)
- 발생 시점에 따른 분류
- 기본/키 엔터티 : 독립적 생성이 가능하고 다른 엔터티의 부모 엔터티 역할(ex. 고객, 상품)
- 중심 엔터티 : 기본 엔터티로부터 발생하고 업무에서 중심적 역할(ex. 주문, 취소)
- 행위 엔터티 : 두개 이상의 부모 엔터티로부터 발생, 자주 내용이 바뀌거나 데이터 양이 증가(ex. 주문내역, 취소내역)
- 엔터티 분류 방법의 예시
4. 엔터티의 이름 짓기 방식
- 업무에서 사용하는 용어를 사용한다.
- 축약어를 사용하지 않는다.
- 단수 명사를 사용하고 띄어쓰기 하지 않는다.
- 모든 엔터티에서 유일한 이름이 부여되어야 한다. (엔터티 이름 중복 x)
- 엔터티 생성 의미대로 이름을 부여한다.
1. 속성의 개념
- 속성의 개념
- 인스턴스가 갖는 개별 특징
- 하나의 인스턴스는 최소 하나 이상의 속성을 가짐
- 업무에서 필요로 하는 인스턴스로 관리하고 자하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
- 엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합
- 한 개의 엔터티는 두 개 이상의 속성
- 한 개의 속성은 한개의 속성값을 가짐
- 속성의 표기법
2. 속성의 특징 및 분류
- 속성의 특징
- 속성은 업무에서 필요로 한다.
- 의미가 더이상 분리되지 않는 그 자체로 독립성을 유지한다.
- 엔터티를 설명하고 인스턴스를 구성한다.
- 정규화 이론에 기반을 두고 정해진 주식별자에 함수적 종속성을 가진다.
- 정규화 이론 : X -> Y (X : 결정자, Y : 종속자)
- X의 값을 알면 Y의 값을 알 수 있고 X값에 의해 Y값이 달라질 때, 이를 Yz는 X에 함수적 종속이라 한다.
- 하나의 속성은 한 개의 값만 갖는다.
- 속성의 분류
- 속성의 특징에 따른 분류
- 기본속성 : 업무로부터 추출된 모든 속성, 속성중 가장 많은 종류를 차지함
- 설계속성 : 데이터 모델링, 업무의 규칙화 등을 위해 새로 만들거나 변형해 정의한 속성
- 파생속성 : 다른 속성에 영향을 받아 발생하는 속성. 데이터의 정확성을 위해 파생속성을 적게 정의하는 것이 좋다.
- 엔터티 구성 방식에 따른 분류
- PK(Primary Key) : 엔터티를 식별할 수 있는 속성
- FK(Foreign Key) : 다른 엔터티와의 관계에 포함된 속성
- 일반속성 : PK, FK에 포함되지 않은 다른 속성
3. 도메인 및 속성의 명명
- 도메인 : 각 속성이 가질 수 있는 값의 범위, 엔터티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정함
- 속성의 명명
- 가능하면 업무에서 사용하는 용어를 사용한다.
- 가능하면 축약어를 사용하지 않고, 의미가 온전히 드러날 수 있도록 작성한다.
- 명사형을 사용한다.
- 수식어가 많이 붙지 않고 명확히 의미를 파악할 수 있어야 한다.
- 전체 데이터 모델에서 유일하게 작성해야 한다 : 속성의 충돌을 해결하는데 도움됨
1. 관계의 개념
- 관계란? 엔터티와 엔터티 간 연관성, 엔터티와 인스턴스 사이의 논리적인 연관성으로서 존재의 형태 행위로서 서로에게 연관성이 부여된 상태
- 관계의 페어링 : 엔터티 안에 인스턴스가 개별적으로 연결되어 있는 구조이며 이러한 관계를 '페어링'이라 부른다. 연결 관계의 집합을 관계로 표현할 수 있다.
2. 관계의 분류
- 관계의 종류 : 어떤 목적으로 연결지어졌는지에 따라 존재/행위에 의한 관계로 분류
- 존재에 의한 관계
- 존재에 의한 관계를 기준으로 소속/포함의 형태
- 행위에 의한 관계
- 행위에 의한 관계를 귀준으로 행동/행위의 결과
- UML(Unified Modeling Language) : 통합 모델링 언어
- UML은 추상화된 시스템을 특정한 모델로 표현해주는 언어
- ERD는 존재적 관계와 행위의 관계를 구분하지 않고 표현했다면 UML은 이를 구분하여 연관 및 의존 관계를 표현한다.
3. 관계의 표기법
- 관계명(Membership) : 엔터티가 관계에 참여하는 형태를 지칭하며, 각 관계는 두개의 관계명을 갖는다.
- 관계 표기법
- 관계차수(Degree/Cardinality)
- 1:1
- 관계를 맺는 다른 엔터티에 대해 하나의 관계로 연결
- A 엔터티에 존재하는 데이터 1개와 관련된 B 엔터티에 존재하는 데이터의 개수도 1개
- ex) 하나의 유저는 하나의 프로필을 갖고, 하나의 프로필은 하나의 유저를 가짐
- 1:M
- 각 엔터티는 다른 엔터티에 하나 혹은 그 이상의 관계를 맺음
- A 엔터티에 존재하는 데이터 1개와 관계되는 B 엔터티에 존재하는 데이터의 개수가 여러개
- ex) 하나의 게시글에는 댓글이 있어도 되고 없어도 되지만 댓글은 반드시 게시글이 있어야 함
- M:M
- 1:M의 관계가 양방향에서 모두 발생하는 경우.
- A 엔터티에 존재하는 1개와 관계되는 B 엔터티에 존재하는 데이터 개수가 여러개이며 그 반대도 마찬가지
- ex) 좋아요 기능. 하나의 게시글에는 여러명이 좋아요 가능하며 하나의 유저 입장에서도 본인이 누른 여러개의 좋아요 게시글이 있음
- 관계선택사양 : 필수와 선택참여
- 필수조건
- 필수 사항은 실선 (ex. 댓글은 게시글이 존재해야만 함)
- 선택조건
- 선택 사항은 점선 (ex. 게시글은 댓글이 존재해도 되고 안해도 됨)
4. 관계의 정의 및 읽는 방법
- 기준(Source) 엔터티를 한개(One) 혹은 각(Each)로 읽는다.
- 대상(Target) 엔터티의 관계 참여도 개수(하나, 하나 이상)로 읽는다.
- 관계 선택 사양과 관계 이름을 읽는다.
1. 식별자의 개념 및 특징
- 식별자란?
하나의 엔터티에 구성되어 있는 여러 개의 속성 중에서 엔터티를 대표할 수 있는 속성을 의미함. 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재한다.- 주식별자의 특징
- 유일성 : 주식별자에 의해 엔터티 내의 모든 인스턴스를 유일하게 구분함
ex) 사원번호가 주식별자인 모든 직원들에 대해 개인별로 고유하게 부여됨- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수이다.
ex) 사원 번호만으로 고유한 구조인데 사원 분류 코드와 사원번호가 조합된 형태로 식별자가 구성되면 부적절한 주식별자 구조이다.- 불변성 : 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않는다
ex) 주민등록번호는 한번 부여되면 변하지 않음- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재한다.
ex) 주민등록번호가 없는 국민은 존재할 수 없다.2. 식별자 분류 및 표기법
- 식별자의 분류
- 대표성 여부 : 엔터티 내에서 대표성을 갖는지
- 스스로 생성 여부 : 엔터티 내에서 스스로 생성되었는지
- 단일속성 여부 : 속성의 개수를 기준으로 구분
- 대체여부 : 업무에 의해 만들어지는지, 인위적으로 만든 것인지
- 식별자 표기법
3. 주식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성으로 설정한다.
(주식별 : 학번 / 보조식별 : 주민등록번호)
- 명칭, 내역과 같이 특정한 이름으로 기술되는 것은 가능하면 주식별자로 사용하지 않는다.
-> 부서 이름을 사용하는 것이 아니라, 새로운 부서 식별자를 만들어 주식별자로 사용- 복합으로 주식별자를 구성하는 경우 너무 많은 속성이 포함되지 않도록 한다.
-> 너무 많은 주식별자 속성은은 인조식별자를 통해 단순화한다.
4. 식별자 관계와 비식별자 관계에 따른 식별자
- 식별자 관계
- 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우, 비어있는 값이 있으면 안된다.
-> 사원과 임시직 사원 엔터티의 관계는 1:1
-> 사원과 발령 엔터티와의 관계는 1:M- 비식별자 관계
- 부모 엔터티로부터 속성을 받았지만 자식 엔터티의 주식별자로 사용하지 않고 일반 속성으로만 사용하는 경우
- 식별자와 비식별자 관계의 비교