본문 바로가기

데이터 Story

[worst practice 1] 잘못 설계된 모델 잘못 설계한 사례 모델을 간혹 올릴 생각입니다.궁금하신 점이나 다른 아이디어 있으면 댓글로 남겨주세요. -- 요건은 아래와 같습니다. -회원은 주민등록번호 별로 한 번만 가입이 가능하다.-회원은 고유한 회원아이디가 있으며, 한 회원이 여러 개의 회원아이디를 가질 수 있다. [그림 1]은 위의 요건을 설계한 모델입니다. [그림 1] 어디가 잘못 설계됐는지 잠깐 생각해 보세요.그런데 모델이 너무 간단해서 잘못될 부분이 한 군데 밖에는 없네요. ㅎ 잘못된 부분은 답글에 올렸습니다.답글 보시기 전에 많이 생각해 보세요. -- 회원아이디 엔터티의 주 식별자가 잘못 설계됐습니다. 회원아이디 속성 값이 고유하기 때문에 회원아이디 엔터티의 주 식별자는 [그림 2]와 같이 회원아이디 단독 속성이어야 합니다. [그림 2].. 더보기
DA 전망 지난 글에서 모델링을 모델러가 하지 못하는 현실에 대해 썼습니다. 나름 전문 모델러로서 슬픈 현실이 아닐 수 없습니다. 하지만 달라질 거라 확신합니다. 이유는 여러 가지가 있는데요. 우선 10년 전과 비교해 지금의 환경이 낫다고 생각하기 때문입니다. 모델러를 찾는 데가 없진 않습니다. 숫자를 헤아리기 힘든 공공에서 필수인 EA 프로젝트에서도 모델러가 필요하고요. 좋아지고 있는 추세로 판단하면 앞으로도 좋아질 거 같습니다. 시스템의 기반 환경도 좋아졌다고 생각합니다. SI 산업이 불황이라고 하지만 시스템 없이는 기업이 존재할 수 없는 상황이라 낙관적이라고 생각합니다. 지나친 긍정일 수 있지만 지금이 시스템 선진국으로 넘어가는 과도기라는 생각이 듭니다. 게다가 DB도 소위 기초 체력이 튼튼해졌다고 생각하고요.. 더보기
모델링을 수행하는 주체는? 실무에서 모델링을 수행하는 주체는 누구일까요? 당연한 질문인데 답변하기 망설여지는 게 안타깝습니다. 개발 프로젝트에서 데이터 모델링을 개발자가 수행하는 경우가 많습니다. 운영 단계는 제외하고 개발 단계만 따져도 개발자가 모델을 설계하는 경우가 60~70%는 되지 않을까 싶습니다. 개발 프로젝트에서 전문 모델러가 모델링을 수행한 지는 얼마 되지 않을 거 같습니다. 아마 15년 전부터 일부 대형 프로젝트에서 전문 모델러가 모델링을 수행하지 않았나 싶습니다. 그렇지 않으면 개발자 중에 모델링을 잘 하는 사람이 모델링을 수행하는 경우가 대부분이었습니다. 저도 15년 전에 그렇게 모델링을 했습니다. 개발도 했지만 프로그래밍 언어보다 MS 액세스를 먼저 다루었고, 정규화를 알고 있었기 때문이었죠. 하지만 그때도 일.. 더보기
도메인 개념과 대표 속성 표준화 관련된 글을 간혹 올릴 생각입니다. 티가 안 나서 그렇지 제 책에 표준화에 대한 내용이 다소 있습니다. 표준화에 대한 언급을 자제한 이유가 있는데요. 그렇지 않아도 속성 표준화 위주로 모델링을 하는 실정이라 더 그렇게 될까 우려되기 때문입니다. 하지만 어차피 표준화는 모델링에서 빠질 수 없는 부분입니다. 잘 하면 본전이고, 제대로 못 하면 타격을 받을 수 있는 부분이라 중요합니다. 표준화에만 매달리는 것도 문제지만, 표준화를 가볍게 보는 것도 문제입니다. 사설이 길어지고 있는데, 표준화는 속성 명을 정하는 것과 연관되기 때문에 숙고해야 하니다. 댱연히 모델러도 양질의 표준 컨텐츠를 만들기 위해 노력해야 합니다. 표준화는 메타시스템과 연관될 수밖에 없어 매타시스템 기능을 일부 언급했지만, 모델러가개.. 더보기
업무를 모르면 모델링을 할 수 있을까요? 최근 컨텐츠에 대한 압박을 받고 있습니다. ㅎ카페 글도 그렇지만, 디비가이드넷에 컬럼을 연재하고 있어서 고민이 많습니다.그래서 다양한 생각을 하면서 글로 정리하고 있는데요.개인적인 생각일지라도 도움 받을 분이 있을 수 있어 카페에 하나씩 올릴 생각입니다.혹시 소재를 알려주시면 도움이 될 거 같습니다. 업무를 모르면 모델링을 할 수 있을까요? 정답은 ‘아니오’입니다. 업무에 의해서 데이터가 생기기 때문입니다.데이터는 업무에 종속돼 있죠.업무에서 필요한 데이터를 설계하는 게 모델링입니다. 그리고 결정적으로 데이터 사이의 종속성이 업무 요건에 의해서 결정됩니다.다른 말로 표현하면, 정규화가 업무 요건을 기준으로 수행된다는 점입니다. 업무를 수행하려면 이런저런 데이터가 필요하고, 이런저런 데이터를 제대로 사용하.. 더보기
액셀과 사례 데이터 이번 주에 기준 엔터티를 설계할 때의 일입니다. 보통은 머리 속에서 데이터 생성하면서 엔터티를 설계합니다.설계한 후에 맞는지 머리 속에서 다시 데이터 생성해 보고요.이상하면 엔터티 다시 설계하고, 또 데이터 생성해 봅니다.이걸 저는 수읽기라고 합니다. 바둑을 아시면 금방 이해하실 거에요.내가 여기에 두면 상대는 어디다 둘 거고, 그럼 나는 또 어디에 두고, 상대는 어디에 둘거다를 머리 속에서 둬보는 것이죠.내가 둘 수 밖에 없는 곳, 또는 가장 유리한 곳을 찾은 후에 상대의 입장에서도 그 곳을 찾는 게 수읽기입니다.프로기사는 50수 정도 수읽기를 한다고 해요.보통 1분 내에 한 수를 둬야 하니까 엄청난 속도입니다. 여담이지만 알파고는 이 수읽기를 50수 정도 한 게 아니고 바둑 끝까지 한 것입니다.쉽게 .. 더보기
모델링과 바둑 이야기 저는 바둑을 무척 좋아합니다. 대학 때 동호회가 기우회(棋友會)였어요. 동호회 얘기할 때마다 반복하는 해명인데, 비가 오라고 비는 곳이 아닙니다. 학교에 그런 동호회가 있을 리 없죠. 바둑 동호회입니다. 잠깐 옆으로 새면, 기우(祈雨)를 하면 반드시 비가 오는 부족이 있다고 합니다. 비결은, 비가 올 때까지 빈다고 합니다. 간단하죠. 제가 기우회에서 4급 정도를 두었는데요. 방황을 하던 때라서 바둑보다는 농구를 더 많이 한 탓에 바둑 실력이 좋지 않았습니다. 약간 후회가 됩니다. 선배들처럼 1~2급까지 갔으면 좋았을텐데요. 참고로 아마추어는 단(段)이 없고 최고가 1급(級)입니다. 천차만별이지만 아마추어 1급을 아마추어 단으로 치면 3~6단 정도 되는 거 같아요. 이 글은 모델링에 대한 글이지만 잠깐 바.. 더보기
속성의 묶음이 반복된다면 정규화가 원칙 엔터티에 반복되는 속성은 정규화를 하는 것이 원칙이며, 특히 속성이 묶음으로 반복된다면 정규화를 한다. 단독 속성이 반복되면, 추가되지 않고 고정적인지를 고려해서 정규화를 하지 않을 수 있지만 묶음 속성이 반복되면 정규화를 하는 것이 원칙이다. [그림 1] 모델은 주문상품에 대한 속성(상품번호/상품가격/상품수량)이 반복된 비정규형 모델이다. [그림 1] 주문상품에 대한 속성인 상품번호, 상품가격, 상품수량 속성이 묶여서 세 번 반복됐기 때문에 비정규형 모델이다. 이 모델은 세 개의 속성이 묶여서 반복됐기 때문에 정규화를 해야 한다. [그림 2] 모델이 [그림 1] 모델에 대한 정규형 모델이다. [그림 주문정규화] 정규화를 한 주문상품 엔터티는 주문과는 다른 의미를 나타내는 별도의 엔터티다. 즉 엔터티의 .. 더보기
개념 모델에 대한 논쟁 개념 모델에 대한 논쟁이 끊이지 않고 있습니다.저만 그렇게 생각하고 있을 수도 있습니다. ㅎ 오늘은 간단하게 설명하겠지만, 언젠가는 매우 자세하게 설명할 생각입니다. 어떤 모델을 개념 모델이라고 할까요?매우 개념적이라 답이 없어 보이지만, 저는 나름의 기준을 가지고 있습니다. 건축으로 치면 조감도가 개념 모델일까요? 저는 철골 구조가 개념 모델이라고 생각합니다. 사람의 실제 얼굴을 그린 정밀 초상화를 물리 모델이라고 할 때, 개념 모델은 무엇일까요? 누구를 그렸는지 알 수 있고, 감탄사가 나올 정도로 특징을 잘 묘사한 캐리커처(Caricature)가 개념 모델일까요?여러 사진을 조합해서 존재하지 않는 대상을 만든 몽타주 정도가 개념 모델이 될까요?혹은 사람 얼굴을 추상적으로 표현해서 누군지 알기 힘든 추.. 더보기
화면 용어를 관리하려면 엔터티에 속할 속성 명에 사용되는 용어를 소위 표준화하는 것은 이제 일반적이다. 표준 용어를 정해 속성 명으로 사용한다. 표준 용어는 메타 시스템에서 관리한다. 최근에는 속성에 사용될 표준 용어 외에도 화면 용어를 관리하려는 요건이 있다. 10년 전에도 들었지만 그 당시에는 바람 정도였다. 하지만 지금은 구현하려는 시도를 한다. 아마 지금은 DA라면 듣게 되는 것 중의 하나일 것이다. 화면 용어이기 때문에 AP 영역(AA)에서 이 기능을 구축해야 할 거 같지만, DA 영역에서 이 기능을 구축할 수 있다. 속성 명과 연관이 돼서 메타 시스템에서 구현하는 게 가장 효과적이다. 다만 실제 컨텐츠(화면 용어)는 DA에서 관리할 수 없다. 메타 시스템과 연동돼서 DA에서 기능은 구현하지만 컨텐트는 사용하려는 각 .. 더보기