참조
2020-08-10-01.sql
- 클라이언트(사용자) 이해를 도움
- 개념적 설계(개체,속성추출)를 잘 하면 DB 6-70%는 끝났다고 봐도 됨
- 효과적인 방법: 문장의 품사 분석 (명사: 개체, 속성 / 동사: 관계)
개체와 속성 추출
개체
- 저장할만한 가치가 있는 중요 데이터를 가진 사람이나 사물
- 예) 병원 db개발에 필요한 개체
- 사람: 환자, 의사, 간호사
- 사물: 병실, 수술실, 의료장비
개체, 속성 추출방법
- 개체, 속성: 요구 사항 문장에서 업무와 관련이 깊은 의미 있는 명사
- 개체 : 회원
- 속성 : 회원아이디(key), 비밀번호, 이름, 나이, 직업, 등급, 적립금
관계 추출
관계
- 개체 간의 의미 있는 연관성
- 재귀적 관계를 제외하고 관계가 생기려면 2개 이상의 개체 필요
관계 추출방법
- 관계: 요구 사항 문장에서 개체 간의 연관성을 의미있게 표현한 동사
- 매핑 카디널리티: 업무 관계에 따라 차수가 달라짐
- 일대일(1:1)
- 일대다(1:N): 속성이 없을 확률이 높음
- 다대다(N:M)
- 개념적 모델링에서는 O, 논리적 모델링에서는 X
- 100% 속성을 가짐
- 참여 특성 (P.26)
- 필수적 참여: 그 행위를 하기위해 반드시 존재해야함
- 선택적 참여
- 회원은 상품을 주문할 수도 있고 안 할 수도 있다
- 상품은 팔릴 수도 있고 안 팔릴 수도 있다
E-R 다이어그램
(Entity - Relation)(Peter Chen)
- Entity --- Attribute --- Relationship 구별이 매우 중요
직사각형 -- 타원 -------- 마름모
- 제작 시 공간을 너무 많이 차지 -> 요즘은 '바커식 표기방법'을 사용
Entity 개체
- 자립엔터티
- 종속엔터티: 거의 대부분, [회원]─<주문>─[상품]
Attribute 속성
Relationship 관계
- 1:1 : 주문-결제, 혼인
- 1:N : 부서-사원 (가장 많은 관계)
- N:M : 회원-상품
- 관계에 속성이 붙으면 테이블이 될 수 있음 -> 관계의 엔터티화
예시: 한국건설
요구사항
1) 한국건설의 구조
- 한국건설은 10대 건설회사 중 하나로 수십 개의 사업장에 직원들이 근로하며 한국건설은 수백 개의 하청업체를 가지고 있다. 직원으로 충당할 수 없는 인원은 하청업체를 두어서 관리한다.
- 하지만 이러한 상관관계는 생략하고 사업장 관리 부분만 개체로 표현하기로 한다.
2) 서비스와 제한점
- 사원이 근무하는 사업장을 확인할 수 있으며 한 명의 사원은 어느 기간 동안에는 하나의 사업장에만 근무할 수 있으며, 그 기간이 지나면 다른 사업장에서 근무할 수 있다.
- 구입한 사업장자재는 한 사업장에서만 사용할 수 있으며, 한 사업장에서 관리하는 사업장 자재는 많다.
3) 사용자 요구 사항을 분석한 결과
- 사원은 (사원번호, 사원명, 주소, 전화번호, 직급, 부서명)의 속성을 갖는다.
- 사업장은 (사업장번호, 사업장명, 주소, 전화번호, 공사금액, 투입인원, 시공일자, 예상완공일, 완공일, 비고)의 속성을 갖는다.
- 사업장의 비고는 공사중과 공사완료로 구분한다.
- 사업장자재는 (자재명코드, 자재명, 수량, 구입가격, 구입일)의 속성을 갖는다.
- 한 사원은 일정 기간 동안 하나의 사업장에서 근무하며 그 기간이 지나면 다른 사업장에서 근무한다.
- 구입한 사업장자재는 하나의 사업장에서만 관리할 수 있다
요구사항 분석
- 개체: 속성
- 사원: 사원번호(key), 사원명, 주소, 전화번호, 직급, 부서명
- 사업장: 사업장번호(key), 사업장명, 주소, 전화번호, 공사금액, 투입인원, 시공일자, 예상완공일, 완공일, 비고(memo: 공사중/공사완료)
- 사업장자재: 자재명코드(key), 자재명, 수량, 구입가격, 구입일
- 관계
- 한 사원은 일정 기간 동안 하나의 사업장에서 근무하며 그 기간이 지나면 다른 사업장에서 근무한다.
- [사원]─<근무>─[사업장] : 다대다
- 투입일: not null
- 종료일: null-able (null: 일하는중, 실제값: 일끝남)
- 구입한 사업장자재는 하나의 사업장에서만 관리할 수 있다
개념ERD
과제: 자동차수리전문점 개념ERD
요구사항
자동차수리 전문점 ‘다수리’는 사업확장을 위해 자동차수리 서비스와 직원을
관리할 수 있도록 데이터베이스를 구축하려고 한다. ‘다수리’에는 여러명의 직
원이 근무하고 있으며 직원번호(key), 이름, 주소, 연락처 및 월급을 관리한다. 새
로운 고객이 자동차 수리를 요청하면 고객정보를 등록하며 이때 고객번호(key),
고객명, 주소, 연락처를 입력한다. 자동차에 대해서는 자동차번호(key), 제조사,
연식, 주행거리 정보를 관리한다. 한 명의 고객은 여러대의 자동차를 소유할 수 있
다. 고객이 자동차 수리를 요청하면 한명의 전담직원이 할당되고 이때 서비스 번
호가 부여된다. 수리 후 수리비와 수리시간 정보를 기록한다. 수리 요청은 한번에
한 자동차에 대해서만 가능하다.
요구사항 분석
첫번째 방법
- 개체: 속성
- 직원: 직원번호(key), 이름, 주소, 연락처, 월급
- 고객: 고객번호(key), 고객명, 주소, 연락처
- 자동차: 자동차번호(key), 제조사, 연식, 주행거리
- 관계
- 한 명의 고객은 여러대의 자동차를 소유할 수 있다.
- [고객]─<소유>─[자동차]
- 고객 1 : N 자동차
- 고객이 자동차 수리를 요청하면 한명의 전담직원이 할당되고 이때 서비스 번
호가 부여된다.
- [자동차]─<수리>─[직원]
- 자동차 N : 1 직원
- 수리 후 수리비와 수리시간 정보를 기록한다.
- <수리>─(수리비,수리시간,서비스번호(key))
- 수리 요청은 한번에 한 자동차에 대해서만 가능하다.
- [자동차]─<수리>─[직원]
- 자동차 N : 1 직원
두번째 방법 - 이렇게하면 '수리'에 KEY가 없다
- 개체: 속성
- 직원: 직원번호(key), 이름, 주소, 연락처, 월급
- 고객: 고객번호(key), 고객명, 주소, 연락처
- 자동차: 자동차번호(key), 제조사, 연식, 주행거리
- 관계
- 한 명의 고객은 여러대의 자동차를 소유할 수 있다.
- [고객]─<소유>─[자동차]
- 고객 1 : N 자동차
- 고객이 자동차 수리를 요청하면 한명의 전담직원이 할당되고 이때 서비스 번
호가 부여된다.
- [고객]─<수리 요청>─[직원] // <수리 요청>─(서비스 번호)
- 고객 N : 1 직원
- 수리 후 수리비와 수리시간 정보를 기록한다.
- [직원]─<수리>─[자동차] // <수리>─(수리비,수리시간)
- 직원 1 : N 자동차
- 수리 요청은 한번에 한 자동차에 대해서만 가능하다.
- [고객]─<수리 요청>─[직원]
- 고객 1 : 1 직원