ERWin을 통해 논리 모델과 물리 모델을 열심히 만들었다.

그렇지만 툴을 통해 Generated된 구문을 실행하여 Table을 생성하면

물리모델명 만 DB 스키마로 적용되어

Memagement Studio를 통해서 확인 할 때 ERWin을 참고해야 하는 불편 사항이 있었다.

적어도 Management Studio Diagram이나 Designer에서 확인 말 할 수 있어도

개발자가 분석하고 적용하는데 쉽게 적용할 수 있는 방법이 존재 한다.

 

아래와 같이 스크립트를 적용하면 논리 모델 정보를 중심으로 DB에 Description에 일치화 시킬 수 있는 방법이 있다.

 

위와 같은 메뉴를 클릭해

New를 눌러 Code를 아래와 같이 추가한다.

 

MSSQL

%ForEachTable() {
    exec sp_addextendedproperty 'MS_Description' , '%EntityName' , 'user' , 'dbo' , 'table' , '%TableName'
    go
 
    %ForEachColumn() {
        exec sp_addextendedproperty 'MS_Description' , '%AttName' , 'user' , 'dbo' , 'table' ,
            '%TableName' , 'column' , '%ColName'
    go
    }
}

 

MySQL

%ForEachTable()
{
    ALTER TABLE %TableName COMMENT = '%EntityName';
    %ForEachColumn()
    {
        ALTER TABLE %TableName CHANGE COLUMN %ColName %ColName %AttDatatype %AttNullOption COMMENT '%AttName';
    }
}

 

Oracle

%ForEachTable()
{
    COMMENT ON TABLE %TableName IS '%EntityName';
 
    %ForEachColumn()
    {
        %Switch('%ColumnComment')
        {
            %Choose(''){COMMENT ON COLUMN %TableName.%ColName IS '%AttName';}
            %Default {COMMENT ON COLUMN %TableName.%ColName IS '%ColumnComment';}
        }  
    }
}

-- 설명이 있는 테이블 리스트
SELECT objtype, objname, name, value FROM::fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', default, default,default)


-- 설명이 있는 Temp 테이블의 필드 리스트
SELECT objtype, objname, name, value FROM::fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', 'Temp','column', default)


-- Temp테이블의 설명을 추가하기
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'설명테스트 테이블', @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'Temp'


-- Temp테이블의 설명을 수정하기
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=N'설명테스트 테이블', @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'Temp'


-- Temp테이블의 field1필드에 설명을 추가하기
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'설명테스트' ,@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',
@level1name=N'Temp', @level2type=N'COLUMN',@level2name=N'field1'


-- Temp테이블의 field1필드에 설명을 수정하기
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=N'설명테스트', @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'Temp',
@level2type=N'COLUMN',@level2name=N'field1'

 

위와 같이 작업하면 동적으로 테이블이나 컬럼에 설명을 추가할 수 있고

Class를 Generated 할 때 사용할 수 있다.

 

ErWin에서 디자인시 논리적 뷰를 설명으로 대체해서 입력하고

Create 구문을 자동 생성할 때 위 구문을 추구하는 pre set을 만들어서 동기화를 하고

Class를 Generated할 때 위 정보를 활용하여 intellisense를 나타내도록 구현 한다면

ERWin –> MSSQL Schema –> Generated Class Structure로 일관성 있게 유지될 수 있을 것이다.

다만 역 방향으로의 reverse enginnering 되지 않는다는 단점이 있다.

 

다음 시간에는 ERWin에서 위 구문을 이용해서 Create에 추가할 수 있는 방법을 알아 보겠다.

+ Recent posts