데이터 모델링을 한 후 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 생성하는 구문을 제거해주면 해결될 것이다.
'DA#5 프렌즈' 카테고리의 다른 글
[DA#5 프렌즈] DA#5 일괄편집 기능 (2) | 2016.07.03 |
---|---|
[DA#5 프렌즈] DA#4 vs DA#5 (0) | 2016.06.19 |
[DA#5 프렌즈] DA#5 새로운 기능 및 DB 리버스 (1) | 2016.06.09 |
[DA#5 프렌즈] DA#5 베타테스터 설명회 (0) | 2016.06.02 |