한빛 아카데미에서 나온 박우창, 남송휘, 이현룡 지음, "MySQL로 배우는 데이터베이스 개론과 실습" 에 나오는 마당서점의 물리적 모델링으로 이큽립스에서 제공되는 ER Master 도구를 이용하여 작업을 해보았다.
이를 물리적 SQL 파일로 만들기 위해서는 이클립스에서 오른쪽 마우스를 클릭하여 아래 그림과 같이 "내보내기->DDL" 메뉴를 선택하면 데이터베이스 연동을 위한 sql 파일을 생성할 수 있다.
이를 이용하여 데이터베이스 테이블을 생성할 수 있다.
/* Drop Triggers */
DROP TRIGGER TRI_author_id;
DROP TRIGGER TRI_comment_id;
DROP TRIGGER TRI_tauthor_id;
DROP TRIGGER TRI_tcomment_id;
DROP TRIGGER TRI_topic_id;
/* Drop Tables */
DROP TABLE dormant CASCADE CONSTRAINTS;
DROP TABLE tcomment CASCADE CONSTRAINTS;
DROP TABLE twrite CASCADE CONSTRAINTS;
DROP TABLE tauthor CASCADE CONSTRAINTS;
DROP TABLE topic CASCADE CONSTRAINTS;
/* Drop Sequences */
DROP SEQUENCE SEQ_author_id;
DROP SEQUENCE SEQ_comment_id;
DROP SEQUENCE SEQ_tauthor_id;
DROP SEQUENCE SEQ_tcomment_id;
DROP SEQUENCE SEQ_topic_id;
/* Create Sequences */
CREATE SEQUENCE SEQ_tauthor_id INCREMENT BY 1 START WITH 1;
CREATE SEQUENCE SEQ_tcomment_id INCREMENT BY 1 START WITH 1;
CREATE SEQUENCE SEQ_topic_id INCREMENT BY 1 START WITH 1;
/* Create Tables */
CREATE TABLE dormant
(
author_id number NOT NULL,
created date NOT NULL,
PRIMARY KEY (author_id)
);
CREATE TABLE tauthor
(
id number NOT NULL,
name varchar2(15) NOT NULL,
introduction varchar2(100) NOT NULL,
created date UNIQUE,
PRIMARY KEY (id)
);
CREATE TABLE tcomment
(
id number NOT NULL,
description varchar2(4000) NOT NULL,
created date NOT NULL,
topic_id number NOT NULL,
author_id number NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE topic
(
id number NOT NULL,
title varchar2(30) NOT NULL,
description varchar2(4000) NOT NULL,
created date NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE twrite
(
author_id number NOT NULL,
topic_id number NOT NULL,
created date NOT NULL,
PRIMARY KEY (author_id, topic_id)
);
/* Create Foreign Keys */
ALTER TABLE dormant
ADD FOREIGN KEY (author_id)
REFERENCES tauthor (id)
;
ALTER TABLE tcomment
ADD FOREIGN KEY (author_id)
REFERENCES tauthor (id)
;
ALTER TABLE twrite
ADD FOREIGN KEY (author_id)
REFERENCES tauthor (id)
;
ALTER TABLE tcomment
ADD FOREIGN KEY (topic_id)
REFERENCES topic (id)
;
ALTER TABLE twrite
ADD FOREIGN KEY (topic_id)
REFERENCES topic (id)
;
/* Create Triggers */
CREATE OR REPLACE TRIGGER TRI_author_id BEFORE INSERT ON author
FOR EACH ROW
BEGIN
SELECT SEQ_author_id.nextval
INTO :new.id
FROM dual;
END;
/
CREATE OR REPLACE TRIGGER TRI_comment_id BEFORE INSERT ON comment
FOR EACH ROW
BEGIN
SELECT SEQ_comment_id.nextval
INTO :new.id
FROM dual;
END;
/
CREATE OR REPLACE TRIGGER TRI_tauthor_id BEFORE INSERT ON tauthor
FOR EACH ROW
BEGIN
SELECT SEQ_tauthor_id.nextval
INTO :new.id
FROM dual;
END;
/
CREATE OR REPLACE TRIGGER TRI_tcomment_id BEFORE INSERT ON tcomment
FOR EACH ROW
BEGIN
SELECT SEQ_tcomment_id.nextval
INTO :new.id
FROM dual;
END;
/
CREATE OR REPLACE TRIGGER TRI_topic_id BEFORE INSERT ON topic
FOR EACH ROW
BEGIN
SELECT SEQ_topic_id.nextval
INTO :new.id
FROM dual;
END;
/
나는 Erwin 프로그램의 사용에 제약이 있고, 이클립스에 익숙하여 쉽게 데이터베이스 테이블을 생성할 수 있기 때문에 이 방법을 사용하였다. 또한 Data Source Exploror를 같이 이용할 수 있는 장점이 있다.
이클립스에서 ER Master를 설치하는 방법은 Help->Install New Software에서 다음과 같이 입력하여 설치를 한다.
'database' 카테고리의 다른 글
마당대학 데이터베이스의 ER 다이어그램(물리적모델링) (0) | 2022.07.19 |
---|---|
오라클 SQL과 PL/SQL을 다루는 기술(홍형경) 샘플 스키마 설치 (0) | 2022.06.26 |