- 가장 빈번하게 요구되는 업무 요건은 사람과 조직에 대해 질문하는 것이고, 이 질문에 대한 정확한 답변에 의존할 수 있는 것이다. 예를 들면, 다음과 같다.
- 사업을 수행하는 과정에 포함된 사람과 조직의 속성이나 특징은 무엇인가?
- 다양한 사람 간, 조직 간, 사람과 조직 간에 존재하는 관계는 무엇인가?
- 사람과 조직의 주소, 전화번호, 다른 연락 매체는 무엇인가? 어떻게 연락될 수 있는가?
- 다양한 관계자 사이에 어떤 종류의 연락 방법이 존재하는가? 효과적으로 소통하기 위해서 필요한 것은 무엇인가?
- 대부분의 업무 응용 프로그램은 사람과 조직에 대한 정보를 추적하고 고객, 공급자, 자회사, 부서, 사원, 그리고 계약자에 대한 정보를 서로 다른 시스템에 반복해서 저장한다.
- 이 때문에 고객 연락 데이터와 같은 핵심 정보를 정확하게 관리하기가 매우 어렵다.
- 사람과 조직에 대한 정보를 저장하는 응용 프로그램으로는 판매, 마케팅, 구매, 주문, 송장, 프로젝트 관리, 회계 시스템이 있다.
- 이 장에서 소개할 데이터 모델은 대부분의 조직과 응용 프로그램에서 사용될 수 있다. 이 장에 포함된 데이터 모델은 다음과 같다
- 조직
- 사람(대안 모델도 제공)
- 관계자(조직과 사람)
- 관계자 역할(예. 고객, 공급자, 내부조직)
- 특정 관계자 관계(예. 고객 관계, 공급자 관계, 채용)
- 공통 관계자 관계
- 관계자 관계 정보
- 우편 주소 정보(우편 주소와 지역 정보)
- 관계자 연락 매체 - 통신번호와 전자 주소
- 관계자 연락 매체(추가)
- 장비와 연락 매체
- 관계자 접촉 내역(예. 통화, 지원전화, 대면)
- 접촉 내역 후속 조치
2.1. 조직
- 대부분의 데이터 모델은 개별적으로 도출된 다양한 엔터티에서 조직 정보를 관리한다.
- 예를 들어 고객 엔터티, 판매처 엔터티, 부서 엔터티가 있을 것이다.
- 기업 내의 각 응용 프로그램은 각자의 쓰임새가 있다.
- 따라서, 데이터 모델러는 응용 프로그램의 고유한 요건에 기반해서 모델을 구축해야 한다.
- 예를 들어 주준 접수 응용 프로그램을 구축할 때 고객 정보는 매우 중요하다.
- 따라서, 데이터 모델러는 고객을 관리하는 개별 엔터티를 설계한다.
- 마찬가지로, 구매 응용 프로그램을 구축할 때 공급자 정보 또한 중요하다.
- 따라서, 일반적으로 공급자 엔터티를 설계한다.
- 인적 자원 시스템을 우해 데이터 모델러는 사원이 일하는 곳인 부서 엔터티를 설계한다.
- 문제는 환경에 따라서 한 조직이 많은 역할을 할 수 있다는 것이다.
- 예를 들면, 큰 회사의 내부 조직은 서로에게 판매를 한다.
- 자산 관리 사업부 상품 판매 사업부의 공급자일 수 있다.
- 자산 관리 사업부는 또한 상품 판매 사업부의 고객일 수 있다.
- 이 경우에 일반적으로 각 사업부에 대한 고객과 공급자 인스턴스가 반복해서 생길 것이다.
- 고객과 공급자 인스턴스뿐 아니라 기업 내에서 조직이 얼마나 많은 역할을 수행하는지에 따라 많은 인스턴스가 추가로 존재할 수 있다.
- 주소 등의 조직 정보가 바뀔 때, 조직 정보가 쌓인 많은 시스템 중에서 한 곳만 정보가 수정될 수 있다.
- 이렇게 되면 기업 내의 정보는 일치하지 않게 된다.
- 이는 정확한 매일 목록을 원하는 관리자와 고객, 공급자 등에게 매우 당황스런 결과를 초래할 수 있다.
- 이런 중복 문제에 대한 해결책은 기업, 부서, 사업부, 정부기관, 비영리조직 같은 공통 목적을 가진 사람 집단에 대한 정보를 쌓는 ORGARNIZATION(조직)이라는 하나의 엔터티를 설계하는 것이다.
- Name(이름)이나 federal tax ID(연방세ID)와 같은 기본적인 조직 정보는 중복을 줄이고 불일치하게 수정될 가능성을 제거하기 위해서 엔터티 내에 한 번만 저장된다.
- 그림 2.1은 조직 정보에 대한 데이터 모델을 나타낸다.
- 조직은 개인이 공식적이거나 비공식적으로 연계된 집단으로 정의된다.
- ORGANIZATION(조직)은 CORPORATION(기업)이 나 GOVERMENT AGENCY(정부기관)와 같은 LEGAL ORGANIZATION(법인조직)이거나 FAMILY(가족), TEAM(팀), OTHER INFORMAL ORGANIZATION(기타비공식조직)과 같은 INFORMAL ORGANIZATION(비공식조직)일 수 있다.
- 법인 조직과 비공식 조직 모두 여러 관계를 공유할 수 있다.
- 왜냐하면, 그 둘은 모두 다양한 역할과 책임에 할당될 수 있고 사람에 의해 관리될 수 있기 때문이다.
- 그들은 많은 것을 공유하는 반면에 또한 다른 것을 가진다.
- 예를 들어 법인 조직은 계약에 대한 관계자가 될 수 있는 유일한 유형의 조직이다.
- 이 모델은 조직 정보를 한 곳에만 저장하므로 중복을 줄인다.
- 고객 엔터티, 공급자 엔터티, 부서 엔터티, 또는 조직 정보를 저장한 다른 어떤 엔터티에 이 정보를 반복해서 쌓는 것과는 대조적이다.
- 표 2.1은 ORGANIZATION(조직) 엔터티의 사례 데이터를 보여준다.
- ABC Corporation(ABC 기업)과 ABC Subsidiary(ABC 자회사)는 기업의 내부 조직에 생길 수 있는 법인 조직(legal organization)의 예이다.
- "Accounting Division(회계사업부)", "Information Systems Department(정보시스템부)", "Customer Service Division(고객서비스사업부)"는 INFORMAL ORGANIZATION(비공식조직)인 기업의 내부 조직이다.
- "Fantastic Supplies(Fantastic 공급업체)", "Hughs Cargo(Hughs 화물)" 그리고 "Sellers Assistance Corporation(판매지원협회)"는 사업에 종사하는 회사를 나타내는 Legal Organization(법인 조직)이다.
- "Smith family(스미스가족)"는 가족과 관련된 개인 집단을 나타내기 때문에 조직이며, 인적 정보를 저장하는데 유용할 수 있다.
- 이 책의 나머지 부분에서는 데이터 모델이 설계되는 내부 조직을 언급하기 위해서 "기업"이라는 용어가 사용될 것이다.
- 예를 들어, 각 기업은 이 모델을 활용하기 위해 어떻게 고칠 것인지를 결정할 고유한 요구사항과 업무 규칙을 가지고 있을 것이다.
2.2. 사람
- 대부분의 모델이 다양한 형태의 조직을 개별 엔터티로 설계하는 것과 같이 다양한 형태의 사람을 사원, 계약자, 공급업체담당자, 고객담당자와 같은 개별 엔터티로 설계한다.
- 각 엔터티에 이런 정보를 관리하는 것의 문제는 사람이 언젠가는 직업과 역할을 바꿀 수 있다는 것이다.
- 사람의 역할이 바뀔 때마다 인스턴스를 저장할 것이기 때문에 대부분의 시스템은 사람에 대한 정보를 중복해서 저장할 것이다.
- 예를 들어, 존 스미스는 ABC 기업의 좋은 고객이었다.
- 그런 후에, ABC 기업의 계약직으로 근무하기 시작했다. ABC기업 사람들은 그가 일하는 것을 좋아해서 그를 사원으로 채용했다.
- 대부분의 시스템에서 존 스미스는 고객과 계약자 그리고 사원으로서 개별 인스턴스가 존재할 것이다. 그러면 이름, 성별, 생년월일, 기술, 인적 사항과 같은 존 스미스의 많은 정보는 동일하게 저장된다.
- 존 스미스의 정보가 여러 곳에 저장돼 있기 때문에 많은 시스템은 그의 정보를 정확하고 일관되게 유지하는 데 어려움을 겪을 것이다.
- 또 다른 문제는, 같은 사람이 동시에 여러 가지 다른 역할을 할 수 있다는 것이다.
- 예를 들어, ABC 기업은 사업부가 많은 큰 회사다.
- 셜리 존스는 운송 사업부의 사원이면서 관리자다.
- 그녀는 또한 보급 사업부의 고객일 수 있다.
- 동시에, 그녀가 카탈로그를 운반해 주는 출판 사업부에는 공급자가 된다.
- 따라서, 셜리는 한 사업부의 사원이고 다른 사업부의 고객이고, 또 다른 사업부의 공급자다.
- 셜리에 대해서 세 개의 인스턴스를 중복해서 저장하기보다는 하나의 인스턴스로 저장해야 한다.
- 이 문제를 다루기 위해서 직업이나 역할과 무관하게 특정 사람의 정보를 저장하는 PERSON(개인) 엔터티를 그림 2.2a에 보여준다.
- PERSON(개인) 엔터티에는 최종 이름과 성별, 생년월일, ,신장, 체중 등 그림 2.2a에 나열된 속성을 포함할 것이고, 그 속성들은 사람을 묘사할 것이다.
- 표 2.2는 PERSON(개인) 엔터티의 사례 데이터로 John Smith(존 스미스), Judy Smith(주디 스미스), Nancy barry(낸시 바리), Marc Martinez(마크 마르티네즈), William Jones(윌리엄 존스), Shirley Jones(셜리 존스), Bobby Cunningham(보비 쿠닝햄), Harry Johnson(해리 존슨) 등에 대한 주요 정보를 나타낸다.
- 이 모델은 한 사람이 많은 역할을 할지라도 그 사람의 기본 정보는 한 번만 저장되기 때문에 데이터 중복을 줄인다.
- 이 장 나중에 '관계자 역할' 부분에서 사람과 조직에서 수행되는 다양한 역할을 어떻게 설계하는지를 설명할 것이고, '관계자 관계' 부분에서는 관계자 역할 사이의 상호 관계를 어떻게 설계하는지를 설명할 것이다.
- PERSON(개인) 엔터티의 속성 중 일부는 반복 속성일 수 있으며, 기업의 요건에 따라서 개별 엔터티로 분리시키는 게 필요할 수 있다.
- 이는 속성에 많은 인스턴스가 쌓인다는 것을 의미한다.
2.2.1 사람 대안 모델
- 그림 2.2b는 PERSON(개인) 엔터티의 반복 속성을 별도의 엔터티로 분리한 대안 모델이다.
- 예를 들어, MARITAL STATUS(결혼상태) 엔터티는 결혼 상태의 변경 내역을 관리하고, MARITAL STATUS TYPE(결혼상태유형) 엔터티에는 '독신', '기혼', '이혼', '과부'라는 인스턴스가 저장된다.
- 1장에서부터 반복해서 설명하는 표기법이지만 관계선의 '~' 기호는 상속된 외래 키가 자식 엔터티의 주 키의 일부라는 것을 나타낸다.
- 예를 들어, 그림 2.2b의 왼쪽 상단 관계선의 '~' 표시는 party id(관계자ID) 속성과 marital status type id(결혼상태유형ID) 속성이 MARITAL STATUS(결혼상태) 엔터티의 주 키의 일부라는 것을 나타낸다.
- 이 표기법은 '~' 기호가 표시된 쪽의 엔터티가 참조하는 엔터티의 주 키뿐만 아니라 '#'로 표현된 주 키 속성의 조합으로서 주 키를 식별하게 한다.
- PHYSICAL CHARACTERISTIC(신체특성) 엔터티는 신장이나 체중 같은 개인의 신체적 특성에 대한 내역을 저장하기 위한 방법을 제공한다. 이 내역은 또한 건강 관련 분야에 유용하다.
- 각 특성의 상세한 내용은 PHYSICAL CHARACTERISTIC TYPE(신체특성유형) 엔터티에 저장된다.
- 이 엔터티에는 '신장', '체중', '혈액형' 등이 저장된다.
- PHYSICAL CHARACTERISTIC(신체특성) 엔터티의 value(값) 속성에는 185cm와 같은 측정치를 관리하는데, 이 속성은 다양한 특성을 저장할 수 있도록 데이터 타입이 문자다.
- 언젠가 바뀌는 것을 포함하면 개인은 여러 개의 이름을 가질 수 있지만 동시에도 여려 개의 이름을 가질 수 있다.
- 이는 많은 응용 프로그램에서 중요한 정보일 것이다.
- 이름과 별칭의 변경 내역을 관리하길 원하는 곳의 예가 감옥이나 교도소이다.
- 이 경우 PERSON NAME(개인이름) 엔터티는 모든 종류의 이름과 별칭을 저장하기 위해 사용될 수 있다.
- current last name(성), current first name(이름), current middle initial(중간이름), current prefix(직함), current suffix(접미어) 그리고 current nickname(별명) 속성은 PERSON NAME(개인이름) 엔터티와 PERSON NAME TYPE(개인이름유형) 엔터티에서 관리되고 있다.
- PERSON NAME(개인이름) 엔터티는 이름과 유효 시기를 관리하고 PERSON NAME TYPE(개인이름유형) 엔터티의 description(설명) 속성 값의 예는 'first'나 'last'이다.
- 이 데이터 모델은 많은 종류의 이름이 저장될 수 있도록 더 유연하게 설계됐다.
- 어떤 문화권에서는 하나 이상의 중간이름이나 성을 사용할 수 있는데, 이 구조는 다양한 요구를 수용한다.
- 이름은 많은 환경에서 매우 자주 사용되기 때문에 성이나 이름, 중간이름, 직책(예를 들면, Mr., Mrs., Dr., Ms.), 접미어(예를 들어, Jr., Senior, Ⅲ) 그리고 최종 별명이나 가명은 그림 2.2a의 PERSON(개인) 엔터티에 저장하고 PERSON NAME(개인이름) 엔터티에는 이름의 변경 내역을 저장하도록 사용할 수 있다.
- 그림 2.2a 모델에서 간단하게 관리한 current passport number(현재여권번호) 속성과 pass port expiration date(여권만기일) 속성 대신에 그림 2.2b 에서는 CITIZENSHIP(시민) 엔터티와 PASSPORT(여권) 엔터티를 설계한 것을 볼 수 있다.
- 이는 여행 응용 프로그램에서 유용할 수 있다.
- GENDER TYPE(성별유형) 엔터티에서는 성별에 대한 일반적인 설명을 관리하는데, 인스턴스는 '남성', '여성', '성전환(남)', '성전환(여)', 그리고 '모름'과 같다.
- 만약 특화의료기업에서 성별에 대한 과거 내역이 필요하면, 이를 위해 PERSON(개인) 엔터티와 GENDER TYPE(성별유형) 엔터티 사이의 교차 엔터티인 PERSON GENDER(개인성별) 엔터티를 설계할 수 있다.
- 모델에 나타난 것처럼 사람과 조직에 대한 많은 인적 정보가 관리된다.
- 사람과 조직에 대한 정보를 한 곳에서 관리함으로써 기업은 더욱 일관된 데이터를 유지할 수 있어 정보를 다양하게 사용할 수 있다.
2.3. 관계자
- 조직과 사람은 많은 면에서 유사하다.
- 그들은 신용 등급이나 주소, 전화번호, 팩스번호, 이메일 주소 등 스스로를 묘사하는 공통된 특징이 있다.
- 조직과 사람은 또한 계약자, 구매자, 판매자, 책임자나 다른 조직의 구성원에게 관계자로서 비슷한 역할을 한다.
- 예를 들어, 컴퓨터 사용자 모임과 같은 회원 조직의 정보는 법인 회원과 개인 회원에 대한 정보와 유사할 수 있다.
- 계약은 일반적으로 조직이나 사람을 계약 관계자로서 명시할 수 있다.
- 판매 주문에 대한 고객은 조직이나 개인이 될 수 있다.
- 개인과 조직이 완전히 분리된 엔터티로 설계된다면 데이터 모델은 더욱 복잡해질 것이다.
- 개인이나 조직에 포함된 계약, 판매 주문, 회원, 거래 각각은 모두 두 개의 관계가 필요할 것인데, 하나는 개인 엔터티와의 관계고 다른 하나는 조직 엔터티와의 관계다.
- 게다가 이런 관계는 상호 배타적이기 때문에 배타 관계가 필요할 것이다.
- 예를 들어, 판매 주문은 개인에 의해서 발행될 수 있고 조직에 의해서 발생될 수 있다.
- 그러나, 하나의 주문이 동시에 개인과 조직에 의해서 발생될 수는 없다.
- 따라서 그림 2.3은 PERSON(개인)과 ORGANIZATION(조직) 서브타일을 가지고, PARTY(관계자)로 명명된 슈퍼타입 엔터티를 보여준다.
- 이 PARTY(관계자) 엔터티에는 사람과 조직이 공유하는 몇 개의 공통된 특성과 관계를 저장할 수 있을 것이다.
- 관계자가 속할 유형을 저장한 PARTY CLASSIFICATION(관계자 분류) 엔터티를 사용해서 관계자는 다양한 유형에 분류된다.
- EEOC CLASSIFICATION(평등고용추진위원회분류) 이나 INCOME CLSSIFICARION(소득분류)과 같이 사람을 구분하는 서브타입뿐만 아니라 INDUSTRY CLASSIFICATION(산업분류), SIZE CLASSIFICATION(규격분류), MINORITY CLASSIFICATION(소수집단분류)과 같은 ORGANIZATION CLASSIFICATION(조직분류) 서브타입이 있다.
- 더 상세하게 설계한다면 ORGANIZATION CLASSIFICATION(조직분류)과 PERSON CLASSIFICATION(개인분류)은 각각 ORGANIZATION(조직)과 PERSON(개인)하고 관계가 있을 수 있다.
- 그러나 이 모델에서는 단순하게 보이도록 PARTY(관계자) 엔터티와 관계를 표현하고 PARTY CLASSIFICATION(관계자 분류) 서브타입으로 보여준다.
- 이는 설명하기 위한 목적으로 몇몇 유형을 나타낸 것이며, 다른 유형은 PARTY TYPE(관계자유형) 엔터티에서 관리된다.
- MINORITY CLASSIFICATION(소수집단분류)에 대한 예는 '소수집단소유사업', '8A 사업', '여성소유사업'이 있다.
- INDUSTRY CLASSIFICATION(산업분류)에 대한 예는 '통신', '정보협회', '제조'가 있다.
- SIZE CLASSIFICATION(규격분류)에 대한 예는 '소', '중', '대', '국제표준'일 수 있고, 사원의 숫자로 다양하게 정의 될 수도 있다.
- 사람에 대한 EEOC CLASSIFICATION(평등고용추진위원회분류) 인스턴스는 '아프리카계미국인', '북아메리카원주민', '아시아/태평양섬주민', '라틴계', '비라틴백인'과 같다.
- '여성'은 또 다른 EEOC 유형이다.
- 그러나, 이는 PERSON(개인) 엔터티에 있는 gender(성별) 속성을 사용하는 것으로 설계할 수 있다.
- INCOME CLSSIFICARION(소득분류)의 예는 '$20,000이하', ' $20,001~50,000', ' $50,001~250,000', ' $250,000이상'과 같다.
- EEOC CLASSIFICATION(평등고용추진위원회분류) 이나 INCOME CLSSIFICARION(소득분류)과 같이 사람을 구분하는 서브타입뿐만 아니라 INDUSTRY CLASSIFICATION(산업분류), SIZE CLASSIFICATION(규격분류), MINORITY CLASSIFICATION(소수집단분류)과 같은 ORGANIZATION CLASSIFICATION(조직분류) 서브타입이 있다.
- 관계자에 대한 이런 분류는 사업할 때 특별히 고려해야 할 것이나 특별한 가격 정책, 또는 관계자 유형별 특수 용어가 있는지를 결정하는 데 사용될 수 있다.
- 이는 또한 사업을 세분화하고 마케팅 활동을 위해 기업을 산업 유형으로 분류하는 방법이다.
- 정의가 언젠가는 바뀔 수 있기 때문에 from date(시작일자) 속성과 thru date(종료일자) 속성이 포함돼서 변경 내역을 추적할 수 있다.
- 표 2.3은 개인과 조직의 예에서 가져온 몇몇 관계자 인스턴스를 보여준다.
- 각 인스턴스는 트랜잭션에 대한 관계자로서 데이터 모델이 개인이나 조직을 언급하는 것을 허용한다.
- 표는 다양한 인적 유형으로 관계자를 분류하는 PARTY TYPE(관계자유형)을 포함해서 조직과 사람의 예를 보여준다.
- 조직과 사람은 여러 방식으로 분류될 수 있다.
- 따라서, PARTY(관계자) 엔터티와 PARTY TYPE(관계자유형) 엔터티 간에는 다대다(M:M) 관계가 필요하다.
- 'ABC Corporation(ABC기업)'은 'minority owned business(소수집단소유사업)'과 'manufacturer(제조사)'로 분류될 수 있다.
- 'ACME Corporation(ACME기업)'은 'woman-owned business(여성소유사업)'과 'mail order firm(통신판매회사)', 'large organization(대규모조직)'으로 분류될 수 있다.
- 사람은 INCOME CLSSIFICARION(소득분류)과 같은 개인 분류뿐만 아니라 EEOC CLASSIFICATION(평등고용추진위원회분류)과 같은 다양한 유형으로 분류될 수 있다.
- 표 2.3은 Marc Martinez(마크 마르티네스)가 'Hispanic(라틴계)'로 분류되고, 수입 구간은 ' $50,000~250,000'로 분류된 것을 나타낸다.
- William Jones(윌리엄 존스)는 'African American(아프리카계미국인)'임을 나타낸다.
- 많은 사람은 분류가 없다.
- 이것은 이 정보가 선택적이기 때문에 모든 관계자가 분류되지 않을 수 있다는 것을 나타낸다.
'데이터 모델링 > 데이터 모델 리소스 북 Vol.1' 카테고리의 다른 글
1. 전체를 볼 수 있다면 진리에 가까워지고 있는 것이다. (2) | 2024.11.18 |
---|