DATOR


25.선진모델(2)-상품팩토리(2) 기본 카테고리


새로운 요건이 발생했을 때 컬럼을 추가하지 않는 방법 중 가장 간단한 것은
예전부터 많이 사용해 왔던 방법으로
여분의 컬럼을 미리 생성해 놓는 것입니다.

 

각 타입별로 필요한 만큼 더 생성해 놓고
새로운 요건이 발생하면 그 컬럼을 특정한 용도로 사용하는 겁니다.


이 때 발생되는 문제는 그 컬럼이 어떤 용도인지는 그 컬럼을 사용하는 사람만 알게됩니다.
그래서 이 컬럼에 어떤 값이 입력되는 정의해야 필요가 있고
특정값에 대한 정보를 다른 곳에서 정의하므로 '메타'라는 용어가 사용되는 것입니다.

 

여기서 조금 확장해 보면
컬럼을 10개 정도 만들어 놓았는데
A상품 때문에 5개
B상품 때문에 4개
C상품 때문에 3개 사용하려면...
모자라게 됩니다.
그렇다고 미리 100여개 씩 만들어 놓는 것은
좀 수준이 떨어지는 방법인 듯하고...

다른 방법은 없을까요?


미리 만들어 놓은 컬럼의 의미를 고정해서 사용하는 것이 아니라
상품마다 혹은 상품유형마다 다른의미로 사용하는 것입니다.

 

A 상품인 경우   A1,A2...
와 B 상품의 A1,A2... 속성의  의미가 달라자는 겁니다.

 

이렇게 하면  상품 중 최대 속성 개수를 예상해서 미리 만들어 놓으면 됩니다.

 

첫번째 방법은  특정 속성을 한 가지 속성으로 만 사용해서 대충 다큐먼트해놓고 사용해도 큰 문제가 없는데
두번째 방법은 상품 혹은 상품 유형별로 속성의 의미가 변하기에
정확히 정의해 놓은 정보가 없으면 데이터를 사용할 수가 없습니다.

그래서 다른 엔티티에서 상품 혹은 상품유형 별로 속성들의 의미를 정의해 놓아야 합니다.

 

사용할 때는

프로그래밍하고자 하는 상품 혹은 상품유형을 결정한 후
속성의 의미를 정의한 테이블에서 상품 혹은 상품유형을 찾아
속성의 의미를 파악한 후 프로그래밍을 하면 됩니다.

이 형태의 메타구조를 '엔티티메타'라고 합니다.

 

한 속성이 다양한 속성으로 사용되기에 테이블 생성 시에 타입은 문자로 만들어야 하고
다른 곳에서 그 속성의 값이  실제로 문자인지, 숫자인지, 날짜인지도 정의해야 하겠지요.
이 부분을 생략하고 단지 속성 의미만을 관리한다면(타입은 속성명으로 유추가능)
이 메타 엔티티의 구조는
상품 혹은 상품유형, A1, A2....  이런 구조가 됩니다.
A1,A2 ...  대상 엔티티의 속성명과 같습니다.

 

만일 속성의 타입, 길이, 소수점 등 까지 관리한다면
이런 구조는 안되고 위의 구조를 1 정규화해서 관리해야겠지요.

상품 혹은 상품유형, 속성명, 타입, 길이, 소수점, 설명....

 

메타정보를 관리하는  엔티티가 기존 테이블과 같은 형태에서
1정규화 되어 속성레벨로 상세화 되었습니다.

이것이 속성메타의 출발입니다.

속성메타는 다음 시간에.

 

 

P.S 모델 혹은 표 자료를 첨부안했습니다.
제가 게을러서 이기도 하지만
일단 그려보고 이해하려는 것보다
머리 속에서 이미지화 하려는 것이 좋다고 합니다.
바둑을 연상하면 되겠네요..
두고서 생각하는 사람과 두기 전에 생각하는 사람.

 

 


 

 

 


 

Tag :

Leave Comments