생성일자, 수정일자, 수정한 사람 등 모든 테이블에서 반드시 가져야 하는 공통 컬럼을 규정으로 있을 경우
주로 물리 모델의 테이블에 컬럼으로 추가하고 특정 도메인에 연결하는 것이 일반적입니다.

본 아티클에서는
물리 모델에 Physical Only로 시스템 컬럼을 추가한 후 그 결과를 매크로 창에 표시하는 Sample 매크로와,
논리 모델에 Logical Only로 어트리뷰트에 추가하는 Sample 매크로를 제공합니다.

소스가 간단하므로 필요에 따라 쉽게 편집하여 사용할 수 있을 것입니다.


Download : AddSystemColumn.bas , AddDefaultAttribute.bas

ER/Studio는 데이터모델링 시 반복되는 작업을 자동화하는 많은 매크로(macro)가 제공된다. (매크로 - 편리한 자동화)

※ 매크로 소스는 별도 문의 (ask@embarcadero.kr)

 

모든 엔티티에서 가져야 어트리뷰트를 원클릭으로 일괄 반영

생성일자, 수정일자, 수정한 사람 등 모든 테이블에서 반드시 가져야 하는 공통 컬럼을 규정으로 있을 경우,
주로 물리 모델링에서 시스템 컬럼에 사용될 수 있다. (위 소스 코드 참조: 메모장에서 열거나 ER/Studio에서 바로 실행)

또한, 향후 도메인을 생성하고 이 도메인에 묶인 시스템 컬럼을 물리 모델에 반영하도록 보완하도록 하겠다.)

아래는 논리 모델 어트리뷰트를 일괄반영하는 코드이다. 
(보다 실무적인 Sample은 위에서 "소스 코드 다운로드" 참고)

이때 Debug.Print를 사용하여 추가된 엔티티의 어트리뷰트를 매크로 창에 출력한다.

Sub Main 

  Dim MyDiagram As Diagram 
  Dim MyModel As Model 
  Dim MyEntity As Entity 
  Dim MyAttribute As AttributeObj 
  Dim Logical As Boolean 

  Const LogProcPersonNo = "처리자번호" 
  Const LogProcDateTime ="처리일시" 

  Set MyDiagram = DiagramManager.ActiveDiagram 
  Set MyModel = MyDiagram.ActiveModel 

  Logical = MyModel.Logical 
  For Each MyEntity In MyModel.Entities 
    If Logical = True Then 
    '디펄트 attribute 추가 
      If MyEntity.Attributes(LogProcPersonNo) Is Nothing Then 
        Set MyAttribute = MyEntity.Attributes.Add(LogProcPersonNo, False) 
        Debug.Print MyEntity.EntityName + "에 " + LogProcPersonNo + " 추가" 
      End If 
      If MyEntity.Attributes(LogProcDateTime) Is Nothing Then 
        Set MyAttribute = MyEntity.Attributes.Add(LogProcDateTime, False) 
        Debug.Print MyEntity.EntityName + "에 " + LogProcDateTime + " 추가" 
        MyAttribute.Datatype = "Date" 'Datatype 지정
        MyAttribute.DeclaredDefault = "sysdate" '디펄트 지정
      End If 
    End If 
  Next MyEntity 
End Sub