본문 바로가기

데이터 Story

역할 엔터티의 엔터티 명 실체의 본질적인 성격이나 특성을 관리하는 엔터티가 아닌, 실체가 하는 역할을 관리하는 엔터티의 이름은 ‘대상 실체 엔터티 명+역할 의미+담당 실체 엔터티 명’ 형식으로 정한다. 즉 양쪽 실체 엔터티 명(실체라는 접미어를 제외한 명)과 실체가 하는 역할을 의미하는 단어를 사용해서 엔터티 명을 정한다. 이 엔터티는 실체 자체를 의미하지 않으므로 엔터티 명에 접미어 ‘실체’를 붙이지 않는다. [그림1] 계좌관리사원 엔터티는 계좌를 관리하는 역할을 하는 사원을 관리하는 엔터티다.[그림1] 계좌를 관리하는 사원이든, 사원에게 관리되는 계좌이든 실체 자체를 의미하지 않고, 실체의 역할을 의미한다. 역할을 담당한 실체는 사원이기 때문에 ‘~사원’처럼 엔터티 명을 정하며 ‘관리’라는 역할의 대상은 ‘계좌’다. 따라서 .. 더보기
소속 엔터티의 엔터티 명 실체 자체를 관리하는 엔터티가 아닌, 실체의 소속 데이터를 관리하는 엔터티의 이름은 ‘대상 실체 엔터티 명+소속 실체 엔터티 명’ 형식으로 정한다. 엔터티 명 앞에는 어디에 소속됐는지를 의미하는 대상 엔터티를 사용하고, 뒤에는 소속된 엔터티를 사용해서 정한다. 위와 같이 소속을 나타내는 데이터는 실체 엔터티가 아니기 때문에 ‘실체’ 접미어는 붙이지 않는다. [그림 도서관직원] 도서관직원 엔터티는 도서관에 소속된 직원을 관리하는 엔터티다. [그림 도서관직원] 도서관직원 엔터티에서 관리하려고 하는 데이터는 직원 데이터인데, 도서관에 소속된 직원이다. 따라서 소속된 실체는 직원이고 어디에 소속됐는지를 의미하는 대상은 도서관이므로 엔터티 명은 ‘도서관직원’으로 정한다. [그림 예산부서사원] 예산부서사원 엔터티는.. 더보기
실체 엔터티의 엔터티 명 실체 엔터티는 실체 엔터티임을 명확하게 구분하기 위해서 엔터티 명에 ‘실체’라는 단어를 접미어(Suffix)로 붙인다. 그리고 접미어 앞에는 엔터티 성격을 나타내는 명사형의 단어를 사용한다. [그림 실체엔터티명] 장비실체 엔터티는 장비를 관리하는 엔터티다. [그림 실체엔터티명] 장비실체 엔터티는 장비라는 만질 수 있는(Tangible) 실제의 물체(物體)를 관리하는 엔터티로 실체 엔터티다. 명사형인 ‘장비’와 접미어인 ‘실체’를 붙여 ‘장비실체’로 엔터티 명을 정한다. 명사형과 동사형의 단어를 구분하는 방법은 ‘~했음’을 붙여 자연스러우면 명사형이 아니라 동사형이다. ‘장비’라는 단어는 명사형이기 때문에 ‘~했음’을 붙이면 의미가 통하지 않는다. ‘~했음’을 붙여 의미가 통하는 동사형의 단어는 행위 엔터.. 더보기
주 식별자 설계 원칙-변경되지 않는 속성 엔터티의 주 식별자는 다른 엔터티의 외래 식별자(Foreign Identifier)가 되며, 외래 식별자 값에는 주 식별자에 존재하는 값을 사용해야 한다. 따라서 만약 주 식별자 속성 값이 바뀌면 그 값을 사용한 하위 엔터티의 외래 식별자 속성 값도 바꿔야 한다. 그래야 참조 무결성이 지켜진다. 하지만 외래 식별자 속성 값을 바꿔주는 것은 쉽지 않다. 대상 엔터티가 한없이 늘어날 수 있으며, 해당 엔터티의 인스턴스도 정확히 지정해야 하기 때문에 쉽지 않은 작업이다. 잘못된 설계로 인해 불가피하게 외래 식별자 속성 값을 바꿔주는 작업을 하는 경우는 있지만, 그렇게 하도록 설계하는 것은 그 자체로 잘못된 설계다. 주 식별자 속성 값이 바뀌지 않도록 주 식별자를 선정하는 것은 주 식별자 선정의 중요한 원칙이다.. 더보기
사원 엔터티의 업무 식별자 사원 엔터티의 업무 식별자는 주민등록번호 속성만이 되도록 설계한다. 그래서 퇴사한 후 재입사하더라고 같은 식별자를 사용하기 때문에 다른 사원이 되지 않도록 한다. 만약 퇴사한 사원이 재입사했을 때 다른 사원으로 인식한다면, 즉 사원번호가 달라진다면 사원 엔터티의 업무 식별자는 ‘주민등록번호+입사일자’가 된다. [그림1] 릴레이션이 이를 나타낸다. [사원] #사원번호 사원명 주민등록번호 입사일자 퇴사일자 12345 홍길동 1234567890123 2045-05-01 {null} 23456 김길동 2345678901234 2025-01-30 {null} 34567 이길동 6789012345678 2027-10-15 {null} [사원이력] 더보기
컴퓨터가 모델링을 할 수 있을까? 매뉴얼을 쓰던 중 갑자기 알파고가 떠올랐어요. 모델링 노트 책에 아래 문구가 있습니다. “컴퓨터가 아무리 발달해도 인간에게 바둑을 이길 수 없듯이 풀이 과정을 판단하면서 앎의 정도를 기계적으로 채점할 방법은 없을 것이다.” 다들 아시듯이 컴퓨터가 인간에게 바둑을 이길 수 없다는 저의 확신은 틀렸습니다. ㅎ책에서도, 강의에서도 확고하게 언급한 내용인데요. 이세돌이 알파고에게 첫 판을 졌을 때 충격을 받았어요.왕년에 좀 뒀던 바둑인(?)으로서 상심이 컸고, 기계가 어떻게 수읽기를 해서 더 나은 수를 판달할 수 있는지 이해할 수가 없었어요. 하지만 많은 기사들을 읽고 약간의 해답을 얻었어요.이세돌이 왜 질 수밖에 없는지를요. 알파고는 판단을 한 것이 아니라 계산을 한 것이라는 게 제가 발견한 위안거리입니다.상.. 더보기
업무가 변경될 가능성이 있을 때는 이를 감안해서 인조 식별자를 사용 업무가 변경될 가능성이 있을 때는 이를 대비해서 모델을 유연하게 만드는 인조 식별자를 주 식별자로 설계한다. [그림1] 계좌 엔터티의 주 식별자인 세 개 속성을 붙여서 계좌번호로 사용한다. [그림1] 현재 업무에 의해서 계좌번호는 10자리 번호이며, 이를 3-2-5 체계로 구성해서 주 식별자를 세 개의 속성으로 설계했지만 향후에 계좌번호 체계가 3-8 등으로 바뀔 수 있으며, 상품번호 자체가 3자리로 변경될 수 있다면 [그림1] 계좌 엔터티로는 대처하기 어렵다. 위와 같이 업무가 바뀜으로써 주 식별자까지 변경되는 상황을 방지하기 위한 방법 중 하나가 [그림2] 계좌 엔터티처럼 인조 식별자를 사용하는 것이다. [그림2] [그림2] 계좌 엔터티와 같이 인조 식별자를 사용하면, 체계가 3-2-5에서 3-8 정.. 더보기
엔터티에 인스턴스를 생성하는 기준이 되는 속성을 주 식별자로 설계 엔터티에 인스턴스를 생성하는 기준이 되는 속성을 주 식별자로 설계하는 것은 주 식별자를 선택하는 중요한 기준 중의 하나다. 인스턴스를 생성하는 기준은 업무 식별자를 의미하기도 한다. 어떤 속성 값이 바뀔 때 새로운 인스턴스를 추가해야 하는지를 나타낸다. 어떤 값이 바뀔 때 인스턴스를 하나 추가하는지를 따져 해당 속성을 주 식별자로 선택한다. 만약 부서를 관리하는 사원을 별도의 엔터티에서 관리할 때, 부서번호가 다를 때마다 인스턴스가 입력된다면 아래 엔터티와 같이 주 식별자를 선택한다. [그림1] 부서관리사원 엔터티에 인스턴스를 추가해야 할 때는 부서번호 값이 추가될 때다. 만약 ‘100’번 부서번호가 존재한다면 부서관리사원 엔터티에 부서번호가 ‘100’번인 인스턴스를 추가하면 안 된다. 이는 엔터티 간의.. 더보기
업무 식별자를 도출할 때는 논리적으로 인스턴스를 구분할 수 있는지로 검토 업무 식별자를 도출할 때는 논리적으로 인스턴스를 구분할 수 있는지로 따진다. 물리적으로 인스턴스를 구분할 수 있는지로 분석하지 않는다. [그림1] 선수소속구단 엔터티는 선수가 소속된 구단을 관리하는 행위 엔터티다.[그림1] 선수는 동시에 여러 구단에 속할 수 있으며, 소속 구단은 매년 변경될 수 있고 기존의 속했던 구단으로 다시 소속될 수 있다. 반대로 구단에도 여러 선수가 속할 수 있다. 위와 같은 요건을 만족시키는 업무 식별자는 선수소속구단 엔터티와 같이 선수번호+구단번호+소속일자 속성이다. 즉 선수소속구단 엔터티의 인스턴스는 논리적으로 선수와 구단, 그리고 소속일자에 의해서 구분된다. 선수번호/구단번호/소속일자 속성이 달라야 인스턴스를 생성할 수 있다. 또한 포지션구분코드, 등번호 속성은 선수번호/.. 더보기
실체 엔터티의 주 식별자와 시각(일자/일시) 속성 실체 엔터티의 주 식별자에는 시각(일자/일시) 속성을 포함시키지 않는다. 한 번 생성되면 지속적으로 존재하는 실체의 성격상 실체 엔터티의 주 식별자에는 일자 속성이 포함될 수 없다. 실체의 상태가 변하거나 실체의 특정 속성 값이 변하는 것은 실체가 새롭게 생기는 것이 아니다. [그림1] 장비실체 엔터티는 생산된 장비를 관리하는 엔터티다. [그림1] 이에 대한 릴레이션은 아래와 같다. [장비실체] #장비아이디 #기준일자 장비명 장비상태유형코드 생산년도 12345 2045-02-05 A장비 정상 2045 45678 2050-12-25 C장비 정상 2050 78901 2055-06-06 B장비 정상 2055 78901 2060-03-30 B장비 정상 2055 12345 2055-02-05 A장비 폐기 2045.. 더보기