ERWin 으로 테이블 생성 스크립트 생성하기

ERWin 을 이용해 논리, 물리 ERD 를 작성했으면 이제 맹근 ERD 를 바탕으로 데이터베이스에 테이블을 생성해야 한다.


요 테이블을 생성하기 위해서는 뭐 ERWin 에서 데이터베이스에 직접 접속해서 테이블들을 생성까지 해주는 기능이 있지만,


왠지 번거롭게 느껴져서 그냥 테이블 생성 스크립트만 생성해서, 생성된 스크립트를 다른 디비접속툴을 사용해 뽓 실행해 주는것이 더 간편해서 일단

테이블 스크립트만 ERWin 상에서 생성해 보자.



먼저 테스트로 맹글어본 ERD 는 간단히 테이블 하나만 있다. 뭐 테이블이 수없이 많이 있어도 하는방법은 똑같으니깐~

테이블은 논리, 물리 요렇게 되 있다.



빨간색 박스친 부분을 보면 논리모델과 물리모델에 있는 컬럼 순서가 다르게 되 있다.

보통 ERD를 작성할때 당연히 논리모델을 쭉 다 맹글고 물리 모델을 대충 나중에 만든다. 그런데 논리 모델을 맹글면서 컬럼을 순서대로 추가하면 죠런 현상이 없지만,

뭐 그렇게 하기가 힘드니 문득문득 생각나는걸 또 추가하고 추가하고 해서 순서만 살짝살짝 바꿔준다.

그렇게 하다보니 논리모델은 순서가 내가 원하는 순서로 되있지만, 물리모델은 논리모델에서 컬럼을 추가한 순서가 그대로 유지되 있다.

뭐 물론 이상태에서 스크립트를 생성해도 크게 문제는 없지만(생성된 스크립트를 보면 물리모델에 보이는 컬럼순서대로 스크립트가 생성됨)

좋은게 좋은거라고 이왕이면 논리적으로 생각하는 순서와 똑같이 맹글고 싶다.



고걸 하기 위해서는 물리 ERD 작성하는 VIEW로 바꾼다음에 아무테이블 위에서 따블클릭을 하면 요런창이 뽁 뜨는데 요렇게 설정해 주면 논리모델과 순서를 똑같이 맞춰준다.








이제 물리모델의 컬럼 순서까지 보기 좋게 싹 맞춰 줬으니 테이블 생성 스크립트를 생성해 보자.

생성하기전에 살짝 해줄게 하나 있다. 테이블을 생성할때 딸랑 테이블만 생성해도 되지만 이왕이면 논리모델에서 작성한 테이블 이름과 컬럼이름을 코맨트로 달아서

다른 디비접속툴에서도 이 컬럼이 뭐하는 컬럼인지 쉽게 알 수 있게 해주면 좋다.

고런걸 자동으로 해주면 좋겠지만, 아직까진 그렇진 않기 때문에 테이블 생성 스크립트에 코맨트를 추가해주도록 ERWin에서 쓰는 스크립트를 하나 추가해야 한다.


스크립트 추가하기

메뉴 > Database > Pre & Post Scripts > Model-Level...



New 버튼을 클릭해서 적당한 이름으로 하나 추가하고 하단의 스크립트 Code 입력란에 각 디비에 맞는 스크립트를 입력해 준다음 OK 버튼을 클릭하면 된다.




※ 각 데이터베이스별 코맨트 생성 스크립트

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';}
		}   
	}
}

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
	}
}






요기까지 했으니 이제 진짜로 테이블 생성 스크립트를 생성해 보자.

메뉴 > Tools > Forward Enginner 
테이블 생성 스크립트 생성시 쫌전에 맹글었던 코맨트 생성스크립트를 사용하라고 Post-Script 를 체크하고 간단히 Preview 버튼만 폿 눌러주면 생성된 스크립트가 팝업창에 뜬다.

요 팝업창에 뜬 스크립트를 폿 복사해서 토드같은 툴에다 붙여넣고 폿 실행을 하면 테이블이 생성된다.

※ sql 파일로 export 하고 싶으면 Report 버튼을 클릭하면 된다.