참조

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 속성

  • 기본키: 속성에 밑줄, NULL값 불가

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 직원
profile
갈 길이 멀다

0개의 댓글