노찬형의 제로에서 시작하는 데이터 모델링 시즌II (4회)
릴레이션십 구성과 관계 유형별 모델
필자: 노찬형
빅터플랫폼 CIO. 대학에서 소프트웨어공학을 전공했으며 개발자로 사회 생활을 시작했다. 사회 생활 10년을 넘기고 시작했던 DB 공부가 프로그래머로서 자신을 분명하게 되돌아볼 수 있는 기회를 주었다. 사회 초년생 또는 대학생에게 도움이 되는 데이터 모델링 글을 쓰고 싶은 게 그의 작은 바람이다.
pemaker@gmail.com
주경야독하는 이들을 위해
우연한 일이 계기가 돼 필자는 DB와 데이터 모델링을 글로 정리할 수밖에 없는 상황에 맞닥뜨렸다. 필자는 2012년부터 2013년까지 한 대학에서 DB 강의를 했다. 강의를 요청받았을 때, 어떻게 해야 할지 난감했다. 필자가 맡은 반은 낮에는 일하고 저녁에 공부하는 학생들로 구성돼 있었다. 일반 대학생들처럼 많은 시간을 공부에 쓸 수 없는 학생들에 DB를 알려줘야 했다. 어떻게 하면 그들에게 작으나마 도움이 될까 하고 고민하던중 시중 교재 대신, 필자가 직접 강의 자료를 만들어 보면 좋겠다는 생각을 하기에 이르렀다.
물론 시중의 책이 부족해서 그런 것은 아니다. 필자가 자료를 직접 만들어 쓰면, 일반 책으로 했을 때보다 더 쉽게 소개할 수 있을 것 같아서 그랬다. 누가 보더라도 이해하기 쉽게 전달하겠다는 목표로 강의 자료를 만들기 시작했다. 2년 넘게 강의 자료를 준비하다 보니, DB의 기초와 데이터 모델링의 기초에 대한 내용을 어느 정도 만들어 낼 수 있었다.
학생들이 강의자료를 요청하면 줬다. 하지만 설명이 없는 프레젠테이션 문서라서 아쉬웠다. 설명이 추가되면 학생들이 예습/복습을 할 때도 훨씬 좋을 텐데…. 배웠거나 배울 학생들을 위해 프레젠테이션 문서를 글로 정리하기 시작했다. 말보다 글로 정리하는 게 더 어렵다는 걸 실감하는 순간의 연속이었다.
‘하늘 아래 새로운 건 없다’는 말처럼 필자의 강의 자료 역시 인식하든 못하든 수많은 자료와 가르침을 받았던 결과물들이다. 물론 보고 들었던 이론을 개발 현장에서 적용?확인하는 과정을 거친, 경험의 산물이다. 앞으로 몇 회에 걸쳐 ‘제로에서 시작하는 데이터 모델링’ 연재를 하겠다고 용기를 내보았다. 독자 여러분과 함께 쓴다는 생각으로 수많은 의견이나 접근 방법을 댓글 또는 이메일로 받을 수 있었으면 좋겠다.
지난 3회에서 알아본 릴레이션십 구성에 대해 계속하여 알아본다.
릴레션이션십 구성
1) ELECTIVITY
SELECTIVITY란 선택도를 의미한다. 하나의 데이터에 대해 선택될 수 있는가 없는가를 의미한다. 즉 SELECTIVIY는 상속받은 속성(자식ㆍ하위 엔터티의 속성)이 null일 수 있는지를 말한다.
Null은 대응하는 데이터가 없고, Not NULL은 대응하는 데이터가 있다는 뜻이다. 상속받았다고 해서 꼭 Not NULL은 아니다. 비즈니스에 따라서 null일 수도 있으므로 릴레이션을 설정할 때 null 여부에 따라서 알맞은 릴레이션을 설정해 주어야 한다.
단 식별관계일 경우는 부모ㆍ상위 엔터티의 속성이 자식ㆍ하위 엔터티의 식별자가 되기 때문에 Not NULL이 돼야 한다.
여기서 같이 알아야 할 점은 SELETIVITY에는 null 여부에 따라서 필수(mandatory)와 선택(optional)이 있다는 것이다. Mandatory는 Not Null이라는 뜻이고, Optional은 NULL이 가능하다는 말이다. Mandatory와 Optio ....