1.1 집합과 엔터디


"우리의 직관 또는 사고의 대상으로서 확정되어 있곧 서로 명확히 구별되는 것들의 모임" 이것이 집합의 정의다.

직관이나 사고로 확정지을 수 있는 대상에는 보이지 않는 것을 포함하고 있다. 그리고 어떤 댑ㅈ상으로서 서로 구별돼야 한다는 것은 집합의 기본 개념이다. 즉, 어떤 조건에 의해 그 대상을 분명히 알 수 있는 것의 모임이 집합이다.

명확한 조건이 기준이 돼야 집합이 될 수 있다. 주어진 조건에 의해 그 대상을 분명히 알 수 없기 때문에 집합이 될 수 없다.

누가 생각해도 대상이 같을 수 있도록 정의하는 것이 중요한데, 집합은 명확한 조건이 기준이 돼야하며, 서로 명확히 구별돼야 한다.

누가 판단하더라도, 누가 집합을 마들어도 집합에 속하는 원소는 같다. 이처럼 조건이 분명하며, 주어진 조건에 해당하는 대상이 분명한 모임을 집합이라고 한다. 이 집합의 정의는 엔터티의 정의와 동일 하다.

1.2 엔터티에 대한 서설


"업무를 수행하는데 필요한 데이터를 특성이 유사한 것끼리 모아 놓은 집합" 이 정의를 엔터티 정의로 주로 사용하는데, 엔터티는 필요 때문에 관리하고자 하는 데이터의 잡합이며, 특성이 유사한 데이터끼리 모아 놓은 집합이다. 특성이 유사한 것끼리 모아 놓았다는 것은 함수 종속을 의미한다. 업무에서 관리하고자 하는 데이터를 함수 종속으로 도출한 결과 집합이 엔터티다.

엔터티를 설계할 때 가장 기본적인 판단 기준은 '관리하고자 하는 데이터인지'를 판단하는 것이다. 데이터 베이스에 관리할 필요가 없는 데이터에 대해서는 고민할 이유가 없다.

엔터티를 설계할 때 유념해야 할 또 다른 점은 주 식별자다. 엔터티를 설계할 때, 속성이나 관계와 혼동해서는 안된다. 속성으로 설계해야하는데 엔터티로 설계하거나, 관계로 설계해야 하는데 엔터티로 설계하는 경우가 있다.

엔터티 설계를 제대로 할 수 있는 모델러는 모델링이 두렵지 않을 것이다.

1.3 엔터티 정의가 왜 중요한가?


엔터티를 정의 한다는 것은 첫 번째는 흔히 알 고 있는 엔터티의 설명을 적는 것이다. CASE 툴의 엔터티 정의 항목에 엔터티에 대한 설명을 적는 것을 엔터티 정의라고 한다. 두번째 의미가 필자가 의도하는 것으로서, 그 엔터티가 본질적으로 어떤 집합을 이루어져 있는 지를 명백하게 하는 것이다. 명확한 조건을 기준으로 어떤 집합인지 선언하는 것이다. 식별자가 무엇이고 서브타입이 무엇인지를 밝히는 것이 엔터티 정의다. 엔터티의 정의가 명확해야 엔터티 설명이 정확해질 수 있다.

집합 자체를 잘못 정의하거나, 여러 집합이 혼재하도록 정의하는 모델러는 좋은 모델러가 아니다.