반응형

 

도서 '가장 쉬운 데이터베이스 설계 책'을 보고 책 내용과 그 이외의 부족한 부분을 채워가며 공부한 내용입니다.

 


1. 사례를 통한 데이터베이스 설계

  • Case
    • 마이크의 자전거 가게
      • 시애틀 중심가에서 그리 멀지 않은 그린레이크라는 작은 교외에 위치한 자전거 가게
      • 개업 2 달, 꾸준한 성장
      • 매출을 매일 종이로 정리
      • 인덱스 카드에 단골 손님에 대한 정보를 적음.

 

데이터베이스 설계 프로세스의 첫 번째 단계

임무 목표와 임무 명세 정의

  • 임무 명세 작성
    • 특정 업무를 명확하게 묘사하는 문장이나 절이 없어야 함(단순 명료해야함)
    • 데이터 베이스의 구체적인 목표가 필요

 

  • 임무 명세를 만들기 위해 사용할 수 있는 예제 질문
    • 새로운 고객에게 조직의 목적을 어떻게 설명하겠습니까?
    • 여러분 조직의 목적은 무엇이라 말하겠습니까?
    • 여러분 조직의 주요 기능은?
    • 여러분 조직이 수행하는 것을 어떻게 설명하겠습니까?

 

  • 임무 목표 정의
    • 데이터베이스에서 관리되는 데이터가 지원하는 일반적인 작업들을 표현하는 문장
    • 각 임무는 단독 작업(하나의 일반적인 작업을 나타내야함)
    • 이해하기 쉽도록 잘 정의

 

  • 임무 목표를 만들기 위해 사용할 수 있는 예제 질문
    • 어떤 종류의 작업을 매일 수행하시나요?
    • 여러분의 업무설명을 어떻게 정의하나요?
    • 여러분이 작업을 할 때 어떤 종류의 데이터를 사용하나요?
    • 어떤 종류의 보고서/이력정보를 작성/관리하나요?

 

  • Case 적용
    • 임무 명세 작성
      • 마이크의 자전거 가게 데이터 베이스의 목적은 우리의 소매 사업과 고객 서비스 활동을 지원할 때 필요한 데이터를 관리하기 위함이다.
    • 임무 목표 정의
      • 재고 정보를 완전하게 관리
      • 고객 정보를 완전하게 관리
      • 모든 고객 판매 이력을 관리
      • 상품 공급자 정보를 완전하게 관리
      • 직원 정보를 완전하게 관리

데이터베이스 설계 프로세스의 두 번째 단계

기존 데이터베이스 분석


새로운 데이터 베이스 구조에 대한 근거로 현재 데이터베이스 구조를 적용하지 말 것.

  • 종이 기반의 데이터베이스
    • 종이에 수집되고 저장되며 유지되는 데이터 포함
      • 인덱스 카드(단골 손님), 수기, 출력된 보고서, 다양한 견본 양식
  • 기존 데이터베이스
    • 5년 이상 사용되어 온 데이터베이스

 

  • 분석 수행
    • 데이터가 수집된 방법을 검토
      • 어떤 종류의 문서가 사용되는지 확인 후 각 문서들의 견본을 수집
      • 데이터를 수집할 때 활요하기 위해 조직에서 프로그램들을 사용하는 견본 화면을 수집(워드...)
    • 정보가 표현되는 방법을 검토
      • 보고서
        • 수기, 타자, 컴퓨터로 만들어진 임의의 문서
      • 화면 프레젠테이션(슬라이드 쇼)
        • 다양한 주제를 체계적인 방법으로 다루는 일련의 화면으로 구성(MS 파워포인트...)
      • 웹 페이지
        • 보고서와 같은 방식으로 사용
    • 사용자와 관련자와 인터뷰를 진행하는 것
      • 사용자가 현재 사용하고 있는 데이터의 종류
      • 사용자들이 현재 데이터를 사용하는 방법
      • 분석의 처음 두 단계에서 모은 견본 데이터 수집
      • 사용자의 일일 작업 시 필요한 정보의 종류

 

  • 특징 식별 기술
    • 저는 고객의 이름, 주소, 전화번호, 이메일 주소와 같은 고객정보를 먼저 모두 입력해요. 그리고 고객이 구매하기를 원하는 품목을 입력합니다. 모든 항목을 입력한 후에 총금액을 기록합니다. 또 고객이 팩스 번호발송 주소를 가지고 있으면 그 정보도 입력해요
      • 사람, 장소, 물건(객체), 사건(특정 시간에 발생하는 무언가)을 표현하는 명사 찾기
  • 전체 필드 목록 편집
    • 특징 목록의 검토와 정제
      • 같은 이름을 가진 항목 정제
      • 같은 특징을 나타내는 항목 정제
      • 특성이 나타내는 항목 확인
    • 견본에 있는 새로운 특성에 대한 판단

 

  • Case 적용
    • 기존 데이터베이스 분석
      • 종이로 데이터의 대부분 관리
      • 상품 재고만 스프레드시트로 관리
    • 위의 데이터베이스의 견본 수집
    • 특정목록 추출
    • 예비 필드 목록 작성을 위한 특정목록 정제
    • 정리 결과
      • 예비 필드 목록
        • Birth Date, Employee Name, Employee Address, Employee City, Customer Name, Customer Address, Office Phone, Product Name, Category, Unit Price, Invoice Number, Invoice Date
      • 계산된 필드 목록
        • Discount Amount, Grand Total, Item Total, Sub Total

데이터베이스 설계 프로세스의 세 번째 단계

데이터 구조 생성

 

  • 주제 식별하기
  • 주제 목록의 사용
    • 중복 항목 해소
      • ex) 장비 -> 일반장비, 차량 으로 변경
    • 동일한 주제를 나타내는 항목 해소
      • 다른 이름을 가지고 있더라도 동일한 주제를 표현하는지 여부 확인
    • 주제 목록과 예비 테이블 목록의 항목 결합

 

 

  • 테이블 유형(최종 테이블 목록에서 각 테이블의 유형을 나타내야함)
    • 데이터 테이블 
      • 조직에서 중요한 주제를 나타내며 데이터베이스에서 제공하는 정보의 기본 토대
    • 연결 테이블
      • 다대다 관계의 두 테이블의 연결을 설정
    • 부분 집합 테이블
      • 특정 데이터 테이블과 연관되어 있으며 데이터테이블의 주제를 매우 구체적으로 설명하는 필드들을 포함
    • 검증 테이블
      • 비교적 정적인 데이터를 포함하며 데이터 무결성의 중요한 구성요소

 

  • 테이블 명세서 작성
    • 최종 테이블 목록에 기록하는 테이블의 또 다른 측면
      • 테이블을 정의하는 문장 포함
      • 조직에 왜 중요한지 설명하는 문장 포함
      • 명확하고 간결
      • 구현 관련 내용 x
      • 타 테이블 명세서의 의존적인 명세서 작성 x
      • 예제 사용 x

 

  • 각 테이블에 필드 연결
    • 예비 필드 목록에서 필드를 사용해 최종 테이블 목록의 각 테이블에 필드를 지정

 

  • 필드 정제 
    • 필드 이름 개선
    • 이상적인 필드들 사용한 변칙 해소
      • 테이블 주제의 고유한 특성을 나타냄
      • 단지 하나의 값만 포함
      • 더 작은 구성요소로 해체될 수 없음
      • 계산되거나 연결된 값 포함 x
      • 전체 데이터베이스 구조 안에서 유일
    • 다중 부분 필드의 해소
      • 둘 이상의 고유한 항목들을 포함하기에 어려움
      • 강사 이름 -> 강사 성, 강사 이름 으로 쪼개기
    • 다중값 필드의 해소
      • 같은 값을 2번 이상 잠재적으로 지정할 수 없음
      • 이 필드를 테이블로부터 제거하고 새 테이블을 위한 기초로 사용
      • 원래 테이블을 새 테이블과 관계를 맺도록 하기위해, 원래 테이블로부터 필드를 사용
      • 새  테이블에 적절한 이름, 종류, 명세서를 할당하고 최종 테이블 목록에 추가
        • ex) 강의 범주
        • 강의 범주를 기존 테이블에서 제거 후 새 테이블을 위한 기초로 사용
        • 관계를 위해 강사 성과 상사 이름을 연결 필드로 사용

 

 

  • 테이블 구조 정제
    • 중복 데이터
      • 두 테이블의 관계를 맺는데 필드가 참여한 결과(허용)
      • 어떤 필드 또는 테이블에 비정상의 결과로 필드 내에 반복되는 값(허용 x)
    • 이중 필드
      • 테이블 집합을 서로 연관시키는데 사용, 특정 종류의 값의 중복적인 발생, 보충적인 정보를 위한 필요에 의해 둘 이상의 테이블에 나타나는 필드
    • 이상적인 테이블 요소
      • 개체 또는 사건일 수 있는 단일 주제를 나타냄
      • 기본 키를 가짐
      • 다중 부분, 다중값 필드를 포함x
      • 계산된 필드들을 포함하지 않음
      • 불필요한 이중 필드들을 포함하지 않음

 

  • Case 적용

예비 필드 목록
예비 테이블 목록
최종 테이블 목록의 부분적인 목록
테이블 구조 내에서 필드들에 대한 정제

 


※ 키의 중요성

  • 테이블 내의 각 레코드가 정확하게 식별되도록 보장
  • 다양한 종류의 무결성을 설정하고 강화하는 것을 도와줌
  • 테이블 관계를 설정하도록 도와줌

 

후보 키

  • 테이블 주제의 단일 인스턴스를 유일하게 식별해주는 하나의 필드 또는 필드 집합
  • 다중 부분 필드일 수 없음
  • 유일한 값들을 포함
  • 널값 포함 불가
  • 2개 이상의 필드로 구성된 후보 키는 복합 후보 키라 부름

 

기본 키

  • 후보 키, 복합 후보 키 2개가 다 있다면 후보 키를 선택
  • 자신의 이름에 테이블의 이름 일부를 포함하는 후보 키 선택
  • 각 테이블은 오직 하나의 기본(주) 키를 가져야 함.

 

대체 키

  • RDBMS 프로그램에서 유용할 수 있음(테이블 내의 특정 레코드를 유일하게 식별하는 대체 수단 제공)

 

비 키

  • 후보, 주, 대체 외래 키로 지정되지 않은 필드

 

후보 키 = CK

복합 후보 키 = CCK

주 키 = PK

복합 주 키 = CPK

대체 키 = AK or CAK

 

※ 테이블 수준의 무결성

  • 테이블 내에 이중 레코드들이 없다
  • 주 키는 테이블 내의 각 레코드들을 배타적으로 식별
  • 모든 주 키 값은 유일
  • 주 키 값은 널이 아니다

 

  • Case 적용

위의 Case에서 정해진 Table을 구현하기 위해 샘플 데이터를 테이블에 로드함으로써 키들을 테스트

Customers 테이블 내의 후보 키 테스트

 

※ 필드 명세

  • 필드 수준의 무결성
    • 필드의 주체성과 목적이 명확하고 이것이 나타나는 모든 테이블이 적절히 식별
    • 데이터베이스 전체에 걸쳐 필드 정의가 일관성
    • 필드의 값들이 일관성 있고 유효
    • 필드의 값들에 적용될 수 있는 수정, 비교, 연산의 종류가 명확히 식별

 

  • 필드 명세의 분석
    • 일반적 요소
      • 필드이름, 부모 테이블, 레이블, 명세종류, 원본 명세, 공유, 별칭, 설명
    • 물리적 요소
      • 데이터 종류, 길이, 소수점 위치, 문자 지원, 입력 마스크, 디스플레이 형식
    • 논리적 요소
      • 키 종류, 키 구조, 유일성, 널 지원, 갑 입력자, 필요값, 기본값, 값의 범위, 변경 규칙, 비교 허용, 연산 허용

 

  • Case 적용

필드 명세

 

데이터베이스 설계 프로세스의 네 번째 단계

테이블 관계 연결 및 결정

  • 관계의 유형
    • 1 대 1
    • 1 대 다
    • 다 대 다
  • Case 적용

직원 테이블과 송장 테이블에 대한 다이어 그램(1대다)
송장 테이블과 상품 테이블 사이의 다대다  관계 설정하고 다이어그램 그리기
직원 테이블과 송장 테이블에 대하여 완료된 다이어그램

 


참고 자료

1. 마이클 J. 헤르난데즈, DATABASE DESIGN FOR MERE MORTALS, THIRD EDITION(출판지 : Pearson Education, 2013)

 

 

 

반응형

'데이터 베이스' 카테고리의 다른 글

데이터베이스 기본기능  (0) 2022.05.19
관계형 데이터 베이스 5  (0) 2022.05.17
관계형 데이터 베이스 3  (0) 2022.05.16
관계형 데이터 베이스 2  (0) 2022.05.16
관계형 데이터 베이스 1  (0) 2022.05.15

+ Recent posts