IT 관련/Database

[data 모델링] 모델링이란?

nullzone 2017. 12. 17.
반응형

* 이 글은 완벽하고 철저하게 나의 경험과 실전에서 쓴 글이니 학문적으로, 또는 원리적으로 따지지 말자.

몇개의 짧은 글을 통해서 Data Modeling을 완벽하게 설명이 불가 할뿐만 아니라(나 역시 그 정도의 수준이 되지 않으며)

실전과 이론에는 엄청난 차이가 있음을 인정해야 한다.



거의 대부분의 IT에서 database 사용은 필수이다.

그러나 대다수의 개발자들이 DB를 이용하기만 할 뿐 DB설계를 올바르게 하지 못하거나, 이해하지 못한 상태에서 빠른 코딩에 집중한다.


안타까운 점은 DB설계를 못한다고 해서 코딩을 못하거나, 개발을 못한다라고 말하지 않는다. 

반대로 코딩 하면서 함수를 잘 못 만들거나, 클래스를 잘 만들지(구조적으로) 못하면 어느 정도 수준 있는 개발자들은 상당히 불편해 한다.

"이거는 그냥 함수로 만들면 되는데~~~"

'이건 클래스를 하나 만들면 코딩히기 쉽잖혀 ~~"

"이 코드를 누가 보면 알겠냐? ~~"

등등



그런데 잘 생각해 보면 대부분의 코딩(개발)이라는 것이 데이터를 다루는 일임에도 불구 하고, 

데이터를 컨트롤 하는 DB에 관련되어서는 참 관대하며, 심지어는 DB의 테이블 구조를 모르는 상태에서 개발를 시작한다. 

많은 IT Project 에서 어느정도 고참 개발자가 즉흥적(?)으로 DB-Table을 만들어 내고 무조건 코딩을 시작한다. 

(근래에는 더더욱 이런 경향이 심하다)



이 글에서는 개발을 하다가 DB혹은 data modeling 에 대한 갈증이 있었던 분들에게 조금이나마 도움이 되었으면 하고, 

아울러 잘 설계된 DB가 코딩을 얼마나 쉽게, 간단하게, 복잡하지 않게 만들어 주는지 설명한다.

그러나... 서두에서 언급했듯이 전적으로 실전적/실무적인 글이다.

(간혹 관련 부문에서 학문적으로 맞지 않을 수도 있다.) 


너무 서론이 길었다....



그럼 DB를 설계 할때 어떻게 해야 잘된 설계인가?

정답은 없다... 솔직하게 말하면 많은 경험에서 만들어진다는 것이 맞을 것이다.


예를 들어 특정 학교에서 학생 관리 프로그램을 개발하는 프로젝트가 있다고 하자

뭘 만들어 드릴까요?

갑 : "일단... 학교 시험 성적을 통계 로 만들어 주세요"

을 : "그래프와 표로  멋지게 만들어 드리겠습니다. "

을의 대장은 개발자들에게 말한다.

"아파치 php, mysql 설치하고, 그래프 모듈 찾아보고 시작~~~~ 3주 후에 완성 알았지"

 

DB설계에서 엔티티(Entity), 애트리뷰트(Attribute), 관계(Relation) 라는 용어와 개념정도는  알아야 한다.

 

엔티티(Entity) 

현실 세계에서 다른 모든 것들과 구분되는 유형, 무형의 것을 엔티티라고 정의하며 업무 수행을 위해서 알아야 될 대상이 되는 것들을 엔티티로 정의한다. - 무지 어렵다. 엔티티라는 것을 도출해 내는 일이 쉬운일이 아니기 때문이다.  

가장 쉬운 말로 관리 되어야 하는 단위 라고 표현하는 것리 나의 생각이다.

예) 사원, 부서, 회사 등등

 

애트리뷰(Attribute) 

엔티티를 이루는 속성 엔티티 보다는 좀 쉬워 보인다. 특정 엔티티를 도출했다면 해당 엔티티가 가지는 속성들을 의미 한다.  

예) 사원-사번, 성명, 성별 등등 

 

관계(Relation)  

엔티티간의 관계? 엔티들의 관계가 있을수도 있고 없을 수도 있으며, 면확하게 구분이 되지 않을수도 있다.

물론우리는 데이터 모델링을 위해서 명확하게 엔티티들의 관계를 정의해야한다.




 

반응형

댓글