1.2. 엔터티에 대한 서설
- '업무를 수행하는 데 필요한 데이터를 특성이 유사한 것끼리 모아놓은 집합'
- 엔터티는 필요 때문에 관리하고자 하는 데이터의 집합이며, 특성이 유사한 데이터끼리 모아 놓은 집합이다.
- 특성이 유사한 것끼리 모아 놓았다는 것은 함수 종속(Functional Dependency)을 의미한다.
- 업무에서 관리하고자 하는 데이터(속성)를 함수 종속으로 도출한 결과 집합이 엔터티다.
- 엔터티를 설계할 때 가장 기본적인 판단 기준은 '관리하고자 하는 데이터인지'를 판단하는 것.
- 데이터베이스에 관리할 필요가 없는 데이터에 대해서는 고민할 이유가 없다.
- 데이터베이스에 관리할 필요가 있는지에 대한 판단은 현업이 하게 된다.
- 이때 모델러는 가능한 많은 데이터를 데이터베이스에 저장하도록 유도하는 것이 좋다.
- 현재는 필요 없을 거 같다고 현업이 판단했어도 나중에 필요한 경우가 종종 있기 때문.
- 엔터티를 설계할 때 유념해야 할 또 다른 점은 주 식별자다.
- 엔터티와 주 식별자는 한몸이라고 생각해야 한다.
- 주 식별자를 모르고 엔터티를 설계(정의)할 수 없다.
- 그리고, 엔터티를 설계할 때, 속성이나 관계와 혼동해서는 안 된다.
- 속성으로 설계해야 하는데 엔터티로 설계하거나,
- 관계로 설계해야 하는데 엔터티로 설계하는 경우가 있다.
- 물론, 그 반대는 비 정규화로 인해 더욱 많다.
- 엔터티를 설계(정의) 하는 것은 대단히 중요하다.
- 모델링의 시발점이 엔터티이기 때문이다.
- 또한, 엔터티를 설계하는 것은 가장 어렵다.
- 없는 상태에서 의미를 부여하는 것은 어려운 작업이다.
- 엔터티를 제대로 설계하려면 함수 종속이라는 개념을 완전히 이해해야 한다.
- 함수 종속이 익숙해지면 데이터를 인식하는 통찰력도 생길 것이다.
1.3. 엔터티 정의가 왜 중요한가?
- 엔터티를 정의한다는 것이 무엇을 의미하는 것일까? 두가지 의미가 있다.
- 첫 번째는 흔히 알고 있는 엔터티의 설명(Explanation)을 적는 것이다.
- CASE 툴의 엔터티 정의 항목에 엔터티에 대한 설명을 적는 것을 엔터티 정의라고 할 수 있다.
- 두 번째 의미는, 엔터티가 본질적으로 어떤 집합으로 이루어져 있는 지를 명백하게 하는 것이다.
- 명확한 조건을 기준으로 어떤 집합인지 선언(Declaration) 하는 것이다.
- 식별자가 무엇이고, 서브타입이 무엇인지를 밝히는 것이 엔티티 정의다.
- 엔터티 정의가 명확해야 엔터티 설명이 정확해질 수 있다.
- 첫 번째 의미인 엔터티 설명은 두 번째 의미인 엔터티 정의에 종속된다.
- 첫 번째는 흔히 알고 있는 엔터티의 설명(Explanation)을 적는 것이다.
- 어떤 경우에 엔터티 정의가 잘못 되었다고 하는가?
- 먼저, 엔터티 정의 자체가 틀린 경우가 있다.
- 실제는 '가'라는 엔터티인데, 'A'로 정의했을 경우이다.
- 쉽고 명확한 집합이 아닌 경우, 주로 개념(추상)적인 집합은 엔터티로 설계하기 어렵다.
- 이렇게 엔터티 자체를 잘못 정의하면 결국 혼란을 초래해 모델은 엉망이 된다.
- 또한 한 엔터티에 여러 집합이 존재하도록 정의한 때도 엔터티 정의를 잘못한 경우다.
- '가'라는 엔터티에 'A'도 함께 있는 경우가 있다.
- 이는 아예 잘못 정의한 위의 사례보다 인지하기 어렵기 때문에 더욱 문제가 된다.
- 먼저, 엔터티 정의 자체가 틀린 경우가 있다.
- 이처럼 집합 자체를 잘못 정의하거나, 여러 집합이 혼재하도록 정의하는 모델러는 좋은 모델러가 아니다.
- 잘못된 집합을 정확히 잡아낼 수 있는 모델러가 좋은 모델러인 것은 자명하다.
- 엔터티가 모델링의 시발점이기 때문에 엔터티가 중요한 것은 너무나 당연하다.
- 엔터티 정의를 잘못하면 그 이후의 단계는 당연히 잘못한 것으로 의미가 없어진다.
- 우선적으로 엔터티를 잘못 사용할 것이고, 그에 따라 속성이 잘못된 엔터티에 위치하고 관계가 모호해질 것이다.
- 결국 모델은 정돈되지 않고 너덜너덜해질 것이다.
- 아리스토텔레스는 어떤 사물이 무엇인지 알고 난 후에야 그것에 따르는 여러가지 성질들을 묻고 대답할 수 있다고 했다. 이 성질들은 실체가 없이는 있을 수 없는 것들이기 때문이다.
- 명확하지 않은 모델에 어떤 것을 정확히 추가하는 것은 어렵다. 담당자의 추측까지 가미된 모델은 점점 암호화될 것이다. 이는 많은 사람이 힘들게 일하게 되는 원인이며, 오래 일하게 되는 원인이다.
- 잘못 사용하는 것을 방지하기 위해 명확한 엔터티 정의는 대단히 중요하다. 제대로 설계된 데이터 모델은 경영 혁신의 한 부분이라는 것을 간과하면 안된다.
'데이터 모델링 > 모델링 노트 - 관계형 데이터 모델링' 카테고리의 다른 글
1. 엔터티 이야기(6) - 실체 엔터티 (1) | 2024.11.22 |
---|---|
1. 엔터티 이야기(5) (0) | 2024.11.22 |
1. 엔터티 이야기 (4) (1) | 2024.11.21 |
1. 엔터티 이야기(3) (1) | 2024.11.21 |
1. 엔터티 이야기(1) (1) | 2024.11.19 |