erWin이 가격도 문제이고, 공유기능도 없어서
초기에 스케치용으로 ERD를 그릴때는 draw.io 가 좋은것 같다. 여러명이서 구글드라이브에 공유해 동시에 그릴 수 있는 장점이 있다.
TIP:
https://drawio-app.com/entity-relationship-diagrams-with-draw-io/
ERD외에도 다양한 diagram을 그릴 수 있는데,
- 어떤 형태의 Diagram이 좋을까는 여기참고:
오라클에서 테이블목록, 엔터티정의서, 테이블정의서 추출 SQL: https://seodaeya.tistory.com/105
# 테이블 목록 조회
SELECT A.TABLE_NAME AS 테이블명 ,
B.COMMENTS AS 코멘트
FROM USER_TABLES A
INNER JOIN USER_TAB_COMMENTS B
ON A.TABLE_NAME = B.TABLE_NAME
-- AND A.TABLE_NAME LIKE 'TB_%' -- 네이밍룰 있을경우
AND INSTR(A.TABLE_NAME,'TEST') = 0 -- TEST 테이블 있으면 제외
ORDER BY A.TABLE_NAME
-- 테이블 정의서
SELECT
a.table_name AS 테이블명,
--a.tab_cmt AS 테이블설명,
a.column_name AS 컬럼명,
b.pos AS PK,
a.data_type AS 데이터유형,
a.DATA_LENGTH AS 데이터길이,
a.nullable AS null여부,
--,a.column_id AS 컬럼순서,
a.data_default AS 기본값,
a.col_cmt AS 컬럼설명
FROM
(
SELECT
s1.table_name,
s3.comments AS tab_cmt,
s1.column_name,
s2.comments AS col_cmt,
s1.data_type,
CASE
WHEN s1.data_precision IS NOT NULL THEN
data_precision
|| ','
|| data_scale
ELSE
to_char(s1.data_length)
END AS DATA_LENGTH,
nullable,
column_id,
data_default
FROM
user_tab_columns s1,
user_col_comments s2,
user_tab_comments s3
WHERE
s1.table_name = s2.table_name
AND s1.column_name = s2.column_name
AND s2.table_name = s3.table_name
AND S1.TABLE_NAME in (
SELECT TABLE_NAME from USER_TABLES
)
) a,
(
SELECT
t1.table_name,
t2.column_name,
'PK' || position AS pos
FROM
(
SELECT
table_name,
constraint_name
FROM
user_constraints
WHERE
constraint_type = 'P'
) t1,
(
SELECT
table_name,
constraint_name,
column_name,
position
FROM
user_cons_columns
) t2
WHERE
t1.table_name = t2.table_name
AND t1.constraint_name = t2.constraint_name
) b
WHERE
a.table_name = b.table_name (+)
AND a.column_name = b.column_name (+)
ORDER BY
a.table_name,
a.column_id