걸음마부터 달리기
DB-6/26 본문
ERD 그리기
이 중 우리는 Crow's Foot과 Barker 표기법을 기준으로 생각해본다.
1) 엔티티 뽑아내기
업무사항에 기술되어 있는 사항들을 보고 데이터 관점에서 필요한 엔티티를 뽑아낸다. 엔티티는 사각형으로 표기하여 기술한다.
2) 엔티티 배치하기
왼쪽 상단부터 중요한 엔티티를 배치하고 (고객, 주문)
업무 흐름에 중심이 되는 엔티티는 타 엔티티와 많은 관계를 가지므로 중앙에 배치한다. (주문, 출고, 주문목록, 출고목록)
나머지 엔티티들은 선이 꼬이지 않게 관계 표시를 위해 중심이 된 엔티티 주위에 배치한다. (나머지들)
3) ERD 관계 연결
서로 관련있는 엔티티들의 관계를 묶어준다. PK 또한 정한다.
4) 관계명 표시
관계에 이름 부여한다. 현재형 쓰고 지나치게 포괄적이지 않게...
5) 관계 차수와 선택성 표시
1:1 , 1:N , N:M인지 등등의 관계차수 따져서 ERD 그린다.
좋은 데이터 모델의 요소란
1) 완전성: 업무에 필요한 모든 데이터가 모델에 정의되어있어야 함
2) 중복성: 동일한 사실은 반드시 DB 안에 한번만 기록되어야함. ex) 나이와 생년월일
3) 업무규칙 : 모델링 안에서 이 데이터에 대한 업무규칙을 명시해야함.
4) 데이터재사용 : 통합적인 공통 데이터 모델인 통합모델이어야 데이터 재사용성이 증가하고, 데이터 모델은 프로세스와 독립적이어야한다.
5) 의사소통: 모델링을 하다보면 업무규칙을 명시하게 되고, 이는 곧 다른 사람들과의 데이터에 관한 동일한 의미, 명확한 의사소통 도구로서 역할을 해야함
6) 통합성: 데이터 재사용과 비슷한 맥락에서 결국 데이터를 중복 기록 없이 재사용 가능하게 만들려면 데이터 자체를 여러 업무 환경에서 공동으로 사용하기 용의하게 정의해야되고 이는 아키텍처 자체를 통합적으로 생각하는 관점이 필요함.
2절: 엔티티
엔터티는 그 집합에 속하는 개 체들의 특성을 설명할 수 있는 속성(Attribute)을 가짐.
이러한 속성 가운데에는 엔터티 인스턴스 전체가 공유할 수 있는 공통 속성도 있고, 엔터티 인스턴스 중 일부에만 해당하는 개별 속성도 있을 수 있다. ( NULL 허용 안하는 속성이면 공통속성, NULL 허용하는 속성이면 개별속성이라고 하는듯)
또한 엔터티는 인스턴스의 집합이라고 말할 수 있고, 반대로 인스턴스라는 것은 엔터티의 하나의 값에 해당한다고 정의할 수 있다
엔티티 특징:
1) 업무에서 필요로 하는 정보의 엔티티인가
2) 식별자 있어야함
3) 인스턴스의 집합이어야함. (하나의 엔티티 안에는 인스턴스가 2개 이상 있어야함)
4) 업무프로세스에 그 엔티티를 반드시 이용해야함
5) 엔티티에는 반드시 속성을 포함해야함
6) 엔티티끼리는 관계가 무조건 한 개 이상 있어야 좋은 엔티티이다.
다만 이러한 관계가 생략되는 경우는 아래와 같다.
엔티티 분류
1) 유무형에 따른 분류
물리적인 형태가 있는 엔티티 = 유형엔티티
개념적 정보로 구분되는 엔티티 = 개념엔티티
업무를 수행함에 따라 발생되는 엔티티 = 사건엔티티 (주문, 청구, 미납 등등)
2) 발생시점에 따른 분류
- 기본 엔티티는 독립적으로 존재할 수 있는 엔티티 (예: 학생).
- 중심 엔티티는 여러 엔티티 간의 관계를 정의하는 엔티티 (예: 수강).
- 행위 엔티티는 이벤트나 활동을 기록하는 엔티티 (예: 시험).