DB2 - 2(설계절차)
| topics | 700-컴퓨터과학 |
| types | 레퍼런스 |
db설계작업의 개요를 제공~!
설계절차 완료가 중요하다
면담
db설계에 필수적임
- 조직내에서 면담, 자신간의 면담 이 있음
- 설계의 핵심 정보를 제공 받을 수 있음
- 생략하면 중요한정보를 놓쳐 최종구조에 악영향 미칠 수 있음
- 지침을 이용하면 일관성있고 성공적으로 면담을 할수있게도움을 줌
- 참여자 지침
- 의도를 알 수 있게함
- 일련의 과정 중 하나인지 여부를 알게함
- 응답이 전반적인 설계에 중요하다는 것을 알게함
- 논쟁이 생기면 여러분이 공식적인 중재자라는 것을 이해시킴
- db구조에 최선의 이익이 되도록 결정함
- 면담자 지침
- 10명을 한계로
- 사용자 관리자 면담은 따로
- 필기 or 녹음
- 모든사람에게 동일한관심
- 질문미리 준비함
1. 임무 명세와 목표 정의
임무 명세
특별한 목적을 일반적인 용어로 작성하는 것
이 프로젝트 데이터베이스의 목적은 증권사와 주식시장이 제공하는 정보를 관리하여 투자자에게 공모주에 투자하기 위한 의사결정을 돕는 정보를 제공하기 위한 것이다.
- 참여 그룹 : db개발자, 조직의 소유자 및 간부, 관리직원
- 좋은 임무 명세
- 명확하고 잘정의 되어있어야함
- 특정 작업을 구체적으로 설명하는 구나 문장이 없음
- 임무명세 구성(with 면담)
- 조직의 장or 간부와의 면담
- 개방 지향적 질문
- 참여자가 많은 노력 없이 db목적을 설명하도록 할 수 있음
- 주제에 초점을 맞추면서도 참여자가 완전한 답변이라고 느끼는것을 응답할 수 있도록 해줌
- 임무목표로 변환 가능한 응답을 얻을 수도 있음
- 여러분은 조직의 목적을 무엇이라고 말하겟음? 새고객에게 어떻게 설명하겟음? 주요기능은?
- 응답 재작성하여 임무명세로 변환 가능
임무 목표
db에서 지원되는 일반적인 작업을 나타냄
우리는 회사의 재무 정보를 관리할 필요가 있다
우리는 기업 공개 정보를 관리할 필요가 있다
우리는 공모 일정 정보를 관리할 필요가 있다
우리는 공모주의 주가 정보를 관리할 필요가 있다.
우리는 고객의 기업 관심목록을 추적할 필요가 있다
우리는 고객의 정보를 관리할 필요가 있다
- 참여 그룹 : db개발자, 관리 직원, 최종사용자
- 좋은 임무 목표
- 조건
- 선언적 문장
- 불필요한 세부사항 없음
- 일반적인 용어
- 하나의 작업만 정의
- 목적
- db내의 다양한 구조를 정의하는데 도움을 주고 db개발의 전반적인 방향을 안내하는데 도움을 주기 위한 것
- 조건
- 임무 목표 구성(with 면담)
- 어떤 작업이 db에 의해 지원 될 필요가 있는지 결정하기 위함
- 사용자 및 관리자와 함께 면담을 수행
- 매우 일반적인 논의를 포함함, 개념적
- 모든문장을 선언적으로 기록함
- 개방 지향적 질문
- 뒤따르는 질문을 함
- 함축적인 정보 파악
- ex) 여러분은 업무 설명을 어떻게 정의하시겠습니까, 어떤 종류의 데이터로 작업하고 싶습니까?, 어떤 종류의 서비스를 제공합니까?
2. 현재 데이터베이스 분석
- 해야하는 이유
- 조직의 현재 요구사항을 지원하는지 파악
- 기존의 구조적 결함을 발견하기 위해
- 목표 : 조직사용 데이터 종류, 관리유지 방법, 사용 방법을 판단
- 절차 : 표현하는 다양한 방법을 검토, 사용자 및관리자와 면담 수행
- 규칙 : 현재 db의 구조를 새 db의 구조를 위한 기초로 삼지 말라.
- 종이 기반의 db 분석
- 문제점 : 일관성 없는 데이터, 잘못된 데이터,이중데이터,중복데이터, 불완전한 입력, 삭제되어야 할 오래된 데이터
- 분석 이유 : 새 db에 포함시킬 수 있는 항목을 식별하기 위함
- 개별적인 데이터 조각을 추출
- 레거시 db 분석
- 레거시 : 유산이라는 뜻(보통 5년 이상)
- 혼란의 가능 성을 내포함
- 메인프레임 레거시의 문제
- 계층형,망형 모델에 기초를 둔 것이 많음
- 관계형 레거시의 문제
- 부적절하거나 비효율적인 구조를 가진 경우가 많음
- pc 기반의 레거시의 문제
- 비관계형 db시스템이 많음
- 이중필드와 중복데이터로 데이터 무결성에 문제가 있는 경우가 많음
- 종이기반보다 레거시가 더 쉬움 : 더 조직화 구조화, 구조가 명확히 정의
분석의 단계
- 데이터가 수집되는 방법 검토
- 종이 기반
- 기록하기 위해 어떤 종이문서를 썻나
- 샘플을 하나씩 수집
- 컴퓨터 소프트웨어 프로그램
- 프로그램을 어떻게 사용하는지 보여주는 샘플 화면 덤프를 수집하기 위함
- 인터넷을 통해 데이터 수집하는 웹페이지
- 데이터 입력폼과 비슷하게 보임
- 어플리케이션과 같은 검사 절차를 사용
- 웹페이지 화면을 덤프
- 종이 기반
- 정보가 표현되는 방법 검토
- 보고서
- 데이터 배열하고 표현된는데 사용
- 샘플 수집 > 폴더에 모음
- ppt
- 조직화 된 방법을 주제를 논의하는 화면으로 구성
- 데이터를 사용하거나 통합하는 화면을 검토
- db데이터 와 직접관계가 있는 것을 검토
- 화면덤프 > 폴더에 저장
- 웹페이지
- 방대한 정보, 보고서형식
- db에서 직접 정보를 추출 하는 웹페이지를 검토
- ppt와 같은 검토 방법버
- 보고서
- 사용자 및 관리자와 면담 수행
- 이건 검토에서 모은 샘플의 세부사항을 제공함
- 예비필드, 테이블 구조 정의하는데 도움
- 개방 지향적, 폐쇄적인 질문 둘다 사용
- 개방 지향적 : 주제에 초점
- 폐쇄적 질문 : 구체적 세부사항에 초점
- ==주제 식별 기술
- 주제는 항상 명사
- 사람, 장소 , 사물, 사건을 명확하게 나타내는 명사만
- 개방 지향적
- ==특성 식별 기술
- 특정 주제와 연관된 질문을 함
- 특성을 나타내는 명사를 표시함
- 주제와 같은 시트에 열거 ㄴㄴ
- 개방 지향적
- 사용자 > 관리자 순으로 면담
- 사용자 면담
- 현재사용하고 있는 데이터 종류와 용도
- 개방 지향적
- 면접과정서 주제,특성식별 기술을 씀
- 초점을 좁혀나감
- ex ) 일상적으로 여러분은 어떤 종류의 일을 하나요? > 세부사항
- 샘플 검토
- 취합한 샘플에 초점을 맞춤
- 질문에 앞어 앞서 수행한 논의로부터 작성한 메모를 검토
- 복잡한 샘플의 경우 샘플 내에 어떤주제가 표현되었는지 판단해야함
- 주제 식별기술 쓰셈
- 응답이 만족할 정도일 경우 샘플에 대한 설명의 기초로 사용
- 샘플의 설명은 간결해야하고 목적,용도를 명확히 적어야함
- ex) 이 화면은 모든 고객 데이터를 수집하고 관리하기 위해 사용된다
- ex) 앞의 논의에서 여러분은 모든 고객을 추적한다고 했었습니다. 이화면이 그작업을 수행하는데 어떻게 도움이 되나요?
- 정보 요구사항 검토
- 목적
- 개별 사용자가 스스로 직접 통제하지 않는 데이터에 기초한 정보를 받는지 여부를 판단
- 어떤 종류의 추가적인 정보를 필요로 하는지 판단
- 어떤 종류의 정보들이 그들의 미래에 필요하다고 예측할 수 있는지 판단
- 데이터 출처를 판단하고 사용자에 의해 사용되는 모든데이터를 식별할 수 있어야함
- ex) 보고서에 사용된 데이터를 여러분이 제공함?> 그러면 여러분이 매일 이데이터를 직접 입력하고 관리함?
- 목적
- 추가적인 정보 요구사항 검토
- 목적 : 사용자들이 그들에게 전달되지 않은 추가적인 정보를 필요로 하는지 판단
- if yes, 어떤 추가적인정보를 필요, 그를 지원하기 위한 새 데이터 구조를 정의해야함
- 그들이 보고싶은 다른 정보가 있는지 질문, why도 질문
- 어떤 영향을 미칠지 질문
- 추가적인 정보에 나타나는 새 주제나 새 특성이 있는지 여부를 결정
- if 새 주제, 주제목록에 추가하고 최대한 많은 특성을 식별함
- 그리고 전체절차를 반복함
- 근데 보통은 새 특성만 식별하긴함
- 마지막으로 참여자들이 만든 메모에 대해 질문이나관심이 있는지 판단함
- ex) 제조업체 이름을 포함할 수 있을까? 이건 특정제품을 식별하는것을 더 쉽게해줄거야
- 미래의 정보 요구사항
- 목적 : 조직이 발전하면서 참여자들이 받을 필요가 있다고 믿는 정보를 식별함
- 조직이 어떻게 발전할 것인지 관련해 참여자들의 생각을 파악할 수 있음
- 발전할때까지 그들이 필요로하는 정보의 종류를 예측할 수 있음
- ex) 조직의 발전이 여러분의 업무에 필요한 정보의 양에 어떤 영향을 미칠까요
- 목적 : 사용자들이 그들에게 전달되지 않은 추가적인 정보를 필요로 하는지 판단
- 유의 사항: 데이터와 정보의 차이점을 이해하고 기억해야함
- 현재사용하고 있는 데이터 종류와 용도
- 관리자 면담
- 현재의 정보 요구사항 검토
- 목적 : 관리자가 받는 정보를 식별하고 그룹샘플에 없는 보고서를 받는지 여부를 판단하기 위함
- 각 참여자가 수행하는 작업과 직책에 부과된 책임에 대해 질문
- 관리자에게 주제 식별 도움을 요청
- 샘플에 없는 보고서를 받는다면 새 보고서 샘플을 구하고 검토함
- 추가적인 정보 요구사항 검토
- 목적 : 관리자가 받는 보고서에 현재 빠져있는 추가적인 정보를 관리자가 필요로 하는지 판단 하는 것
- 참여자들과 샘플 보고서 검토-> 추가시키고 싶은 정보가 있는지 물어봄
- 추가적인 정보를 주제,특성 식별구술을 써서 식별하여 목록에 출가
- 미래의 정보 요구사항 검토
- 목적 : 관리자가 어떤 정보를 미래에 필요하다고 예측하는지 판단하기를 위함
- 조직이 현재 어떻게 발전하고 있는지 생각 하도록함.
- 그발전이 올바른 판단을 하기 위해 그들에게 필요한 정보가 어떻게 영향을 끼칠지 질문
- 전반적인 정보요구사항 검토
- 목적 : 앞에서 논의되지는 않았지만 조직이 관리할 필요가 있는 데이터가 있는지 논의하기 위함
- 모든 보고서를 한번더 검토
- 조직에 유용하고 가치있지만 아직 조직내의 누구도 받아본 적이 없는 정보가 있는지 질문
- 현재의 정보 요구사항 검토
완전한 필드 목록 수집
- 예비필드 목록
- 조직의 기초적인 데이터 요구사항을 나타네고, db에서 정의할 필드의 핵심집합을 구성
- 특성 목록을 검토하고 정제
- 분석과 면담 작업을 통해 취합한 특성목록을 검토
- 이중 특성을 제거해야 함
- 같은 이름을 가진 항목을 정제
- 같은이름을 가져도 각 이름이 고유한 특성을 나타내는 것도 있음
- 이름 , 주소 등
- 주제 + 특성으로 바꾸셈
- 이러한 특성목록에 일상적으로 나타나는항목을 일반적항목이라고 통칭할 수 있음
- 나머진 제거
- 같은이름을 가져도 각 이름이 고유한 특성을 나타내는 것도 있음
- 같은 특성을 나타네는 항목제거
- 같은 특성을 나타내는항목찾고 나머지 제거
- ex) 제품 no , 제품 번호, 제품 # 다같은 특성 => 제품 번호로 정제
- 항목들이 특성을 나타내는지확인
- 주제를 나타내는 목록에 항목을 넣기가 쉬움
- 항목을 테스트하기 위한 질문
- 이단어는 무언가 설명하는데 사용될 수 ㅣㅇ쓴ㄴ가
- 이단어는 어떤것의 구성요소, 세부사항,일부인가
- 이단어는 더작은 조각으로 쪼개질 어떤것을 나타내는가
- 샘플에서 새로운 특성들이 있는지 파악
- 목적 : 분석 작업에서 수집한 모든 샘플에 대해 검사하고 예비 필드 목록에 추가할 특성들이 있는지 여부를 판단하기 위함
- 샘플에 특성을강조
- 목록에 있는지 확인 후 제거
- 남아있는것중 같은 의미를 가지고 있는지 확인하고 제거
- 남아있는것을 예비 필드 목록에 추가
- 부수적 메모: 값목록
- 특성의 허용되는 값의 범위를 지정하거나 업무 규칙을 부과하기도함
- 고유하고 독특한 값집합을 수용하는 특성의 경우 반드시 기록해야함<<필드명세나 업무규칙에 참조
- 계산된 필드 목록
- 모든 계산된 필드를 제거하고 그것을 별도의 목록으로 만든(해당 목록을 계산된필드 목록이라함)
- 이건 나중에 설계 작업에서 활용하기에 따로 열거해야함
- 계산된필드 : 함계 평균등 다른 필드를 이용하여 계산한 필드
- 완료시 예비필드목록 version 3과 계산된 필드 목록, 두개의 목록을 가지게 됨
- 해당 목록들을 면담을 통해 또 검토함 > 누락된 필드가 있는지확인
3. 데이터 구조 만들기
예비 테이블 목록 정리
- 암시적 주제 식별하기
- 예비 필드 목록을 검토하여 필드 내에 내포되어 있는 주제를 식별함
- 주제 목록보다 예비 필드 목록을 먼저 보는 이유
- 테이블 누락의 가능성 : 임의의 필드들이 특정 주제를 암시할 수 있음
- 편중되지 않은 관점
- 목록의 필드로부터 주제를 추론할 수 있으면 그주제를 새 예비 테이블 목록에 넣음
- 모든 필드를 훑어보고 가능한 많은 주제가 식별될때까지검토 후 예비 테이블목록에 추가
- 주제 목록 사용하기
- 주제 목록과 예비테이블 version 1(암시적 주제식별하기에서했던) 것을 통합하여 예비테이블 목록 version 2를 만듬
- 통합시 절차
- 이중항목들 제거
- 같은 이름이더라도 다른 주제를 나타낼 수도 있음
- 이럴 시 각 항목의 이름을 바꿔서 주제를 정확히 식별하도록함
- 면담메모를 이때 검토
- 같은 주제 나타내는 항목 제거
- 주제목록상의 항목과 예비 테이블 목록상의 항목이 다른이름이지만 같은 주제를 가졌는지 여부를 파악함
- 항목들의 집합을 식별하면 그 주제를 가장 잘 나타내는 이름을 선택하고 그 주제의 유일한 식별자로 정함
- 주제목록과 예비테이블 목록의 항목 통합
- 걍 남아있는 주제목록의 모든 항목을 예비테이블 ver 1 에 모두 추가하여 ver 2를 만듬
- 남아있는 주제목록은 버리쉠ㅋ
- 이중항목들 제거
- 임무 목표 사용하기
- 앞의 두단계에서 빠뜨린 주제가 있는지 임무목표를 사용함
- 주제 식별 기술 > 예비테이블 목록 체크 > 같은 뜻이면 더 잘 식별하는 이름으로 변경 > 새주제면 예비테이블 목록 추가
최종 테이블 목록 정리
예비테이블 목록은 완전하므로 최종 테이블 목록으로 바꿈
테이블 이름 , 종류 설명을 가지고 있음
- 개요
- 테이블 종류
- 데이터 테이블 : 조직의 중요한 주제를 나타내고 데이터 베이스가 제공하는 정보의 첫번째 기초를 이룸
- 연결테이블 : 다대다 관계의 두테이블 연결을 설정함
- 부분집합 테이블 : 특정 데이터 테이블과 연결되어 있는 필드를 포함하고 구체적으로 더 설명함
- 검증 테이블 : 비교적 정적인 데이터를 포함하고 데이터 무결의 중요한 구성요소
- 설명 : 주제의 명확한 정의를 제공하고 왜 조직에 중요한지 설명
- 테이블 종류
- 테이블 이름 정제하기
- 최종 테이블 목록으로 변환하기전 마지막 작업
- 테이블은 단일 주제를 나타냄으로 주제를 명확히 식별해야만함
- 유일하고 전체 조직에 의미가 있는 이름을 부여
- 물리적 특성을 전달하는 단어 사용 ㄴㄴ
- 최소 개수의 단어 사용
- 약어 사용 ㄴㄴ
- 이름의 복수형 사용
- 테이블 종류 보이기
- 최종 테이블 목록의 모든항목은 처음에는 데이터 테이블임
- 아직 관계를 정의하거나 무결성을 부과하지 않았기에 연결테이블, 검증테이블 없음
- 필드를 할당하지 않았기에 부분집합 테이블도 없음
- 테이블 설명 작성
- 주어진 테이블이 왜 존재하고 왜 데이터를 수집하는지 도와줌
- 정의와 테이블의 중요성에 대한 해설이 둘다 있어야함
- 지침
- 정확히 정의하는 문장을 포함한다
- 왜 테이블이 조직에게 중요한지 설명하는 문장을 포함한다
- 명확하고 간결한 설명을 작성한다
- 구현에 관련된 정보를 테이블 설명에 포함시키지않는다
- 테이블 설명에 예를 사용하지 않는다
- ex) 학생 일정 - 이번학사년도내에 학생이 출석하기로 일정을 잡은 클래스들, 이테이블에서 제공되는 정보는 학생이 효과적인 시간관리를 실현하고,학교가 클래스 부단과 학생부담을 추정할 수 있도록 도와준다
- 사용자 및 관리자와 면담
- 테이블의 일반적인 설명에 대한 합의를 받기 위함
- 면담 완료후 메모를 가지고 최종 테이블 설명을 작성
각 테이블에 필드 포함시키기
- 테이블은 필드로 구성
- 예비필드 목록의 필드를 사용하여 최종 테이블 목록의 각 테이블에 필드를 할당
- 모든 필드들이 할당될때까지 계속
필드 정제하기
- 필드 이름 개선
- 필드 이름이 모호하거나 불명확할 시 개선이 필요함
- 지침
- 유일하고 전체조직에 의미가 있는 설명적 이름을 부여
- 필드가 나타내는 특성을 정확하게 식별할 수 있는 이름부여
- 특성의 의미를 전달하기 위한 최소개수의 단어를 사용
- 두문이나 약어 사용을 사려깊게 사용함
- 이름을 단수형을 사용한다
- 타당하고적절한 약어는 필드 이름의 의미를 손상시키지 않을 것
- 변칙을 해소하기 위해 이상적 필드 사용
- 잠재적으로 문제가 있는 필드를 식별하기 위해 이상적 필드의 요소를 따르는지 파악
- 이상적 필드 요소
- 주제의 고유한 특성을 나타낸다
- 단지 하나의 값만 포함한다
- 더 작은 구성요소로 해체 될 수 없다
- 계산되거나 연결된 값을 포함하지않는다
- 전체 데이터베이스 구조안에서 유일하다
- 하나 이상의 테이블에 나타날 때는 속성 대부분을 보유한다
- 문제의 필드를 식별했는가? 이후에 일들을 함
- 다중 부분 필드 해소
- 다중부분은 주소마냥 “부산시 기장군 정관읍”마냥 고유한 여러 항목을 가짐
- 정보추출하거나 정렬,그룹화하는것이 어려움
- 필드 값 내의 고유한 항목을 식별하고 각항목을 개별적인 새 필드로 취급함으로써 해결
- 구분하기 빡센거 악기 ID : GUIT2022 << 앞에 악기의 범주가 있있고 뒤에 식별번호
- 이것도 분리해야함ㅋ
- 다중 값 필드 해소
- 리스트형태로 된것 쉼표 포함
- 평탄화함
- 특성A_1,특성A_2,특성A_3
- 범주 정보 추출이 지루함
- 구조가 변동적. 현재상태에서 한특성이 포함하는드 값의 개수를 제한함
- 필드가 단일값만
- 여러 레코드로 만들어서 해결
- 데이터 중복의 문제를 낳음
- 새테이블 만듬
- 필드를 테이블로부터 제거하고 새테이블에 원래 테이블과 관계를 맺기 위한 기존필드를 선택함
- 비록 중복된 데이터를 포함하지만 최소한의 중복임
- 의존하는 필드를 새 테이블의 구조에 포함시킴으로써 주어진 필드가 다중값필드에 의존하는 상황을 해햇
테이블 구조 정제하기
- 목적 : 적절한 필드들이 각 테이블에 할당됐고 각 테이블의 구조를 적절히 정의했음을 확인
- 비정상을 가지고 있는 지 확인
- 이상적 테이블 사용하기
- 이상적 테이블의 요소
- 개체 사건일 수 있는 단일 주제를 나타냄
- 주 키를 가짐
- 다중부분,다중값필드를 포함하지않음
- 계산된 필드를 포함하지 않음
- 불필요한이중 필드를 포함하지 않음(관계맺는거는 적용 ㄴㄴ)
- 최소한의 중복데이터만 포함 : 관계 맺는건 ㄱㄴ, 이외에는 일관성무결성에 문제일으킴
- 불필요한 이중 필드 해소
- 참조 정보를 제공하기 위한 이중필드는 불필요함 제거
- 사용자로 하여금 모든 발생하는 값이 사오 일관성 있다는것을 확인하도록 강요
- 나중에 논리적으로 필요할 경우 뷰를 이용하여서 작업하면됨
- 같은 종류의 값이 여러번 발생하는것을 나타내기위한 이중필드는 필요없음(평탄화할때)
- 이건 위에 새테이블 만듬으로 해결
- 참조 정보를 제공하기 위한 이중필드는 불필요함 제거
- 이상적 테이블의 요소
- 부분집합 테이블 설정하기
- 어떤 필드들은 항상 값을 포함하지 않음
- 정말 하나의 주제를 나타내는지 확인
- 두집합일 수 있고 이 두집합이 여러 공통 특성을 공유할 수 있음
- ex) 재고 -> 장비 재고, 책재고 공통항목: 이름, 설명, 현재값
- 이는 재고 테이블에 의존하는 주제들임
- 이럴 시 여러개의 주제로하고 하나의 독립테이블(데이터 테이블)에 나머지는 종속 테이블을 만드는것으로 해결

- 거의 같은 구조를 가진 테이블은 보통 부분 집합 테이블임 > 필드가 불필요하게 중복 > 정제해야함
- 각 테이블은 같은 주제의 서로다른 측면을 나타냄