본문 바로가기

DA#5 프렌즈

[DA#5 프렌즈] DA#5 스크립트 작성


데이터 모델링을 한 후 DBMS에 테이블을 생성해야할 때 스크립트 작성 기능을 사용하면 편리하다.

DBMS를 SQL Server로 선택하여 스크립트 작성 테스트를 해보았다.


사원 엔터티를 생성한 후 데이터 - 스크립트 작성 아이콘을 클릭한다.




아래의 창이 뜨고 어떤 구문을 생성할지, 그리고 DDL 뿐 아니라 DML 도 작성할 수 있다.

DML 은 현재는 SELECT 문만 적용되고 INSERT, DELETE, UPDATE 문은 아직 준비중이라고 한다.




스크립트로 생성하고 싶은 구문을 선택 후 스크립트 생성을 누르면 아래와 같이 스크립트가 생성된다.




복사 후 SQL Server 에서 실행했는데 오류가 발생했다.

엔터티를 생성할 때 논리모델만 생성하고 물리모델을 생성하지 않아 CREATE 문에 데이터 타입이 없어 생긴 오류이다.

논리모델만 있을 때는 스크립트를 생성해도 실행할 수 없으니 알럿을 띄워 물리모델을 생성하고 스크립트를 생성하라고 하는 것이 더 좋을 것 같다는 생각을 하였다.




엔터티의 속성에 데이터 타입을 설정 후 제대로 스크립트가 생성되는지 확인해보자.




이번에도 오류 발생!!

테이블 '사원'이 없어서 삭제할 수 없어 발생한 오류와 이름이 같은 인덱스가 있어 발생한 오류이다.




자세히 살펴보면 아래와 같다.




DROP TABLE 구문을 아래와 같이 스크립트가 생성되도록 변경하면 이 오류는 발생하지 않을 것이다.


IF OBJECT_ID (N'dbo.[사원]', N'U') IS NOT NULL

        DROP TABLE [사원]

GO



인덱스 이름과 관련해여 발생한 오류를 살펴보자.

PK를 생성하면서 UNIQUE INDEX 와 PRIMARY KEY 둘 다 생성하면서 이름은 같다.

이름이 같으니 오류가 발생하는 것이고, SQL Server의 경우 PK를 생성하면 자동으로 UNIQUE 제약조건도 적용되므로 따로 UNIQUE INDEX 를 생성하지 않아도 된다.




이 부분은 UNIQUE INDEX 생성하는 구문을 제거해주면 해결될 것이다.